【发布时间】:2020-03-22 15:17:12
【问题描述】:
我正在尝试使用 Tensorflow/Keras 练习我的机器学习技能,但我在拟合模型方面遇到了麻烦。让我解释一下我做了什么以及我在哪里。
我正在使用来自 Kaggle 的 Costa Rican Household Poverty Level Prediction Challenge 的数据集
由于我只是想熟悉 Tensorflow 工作流程,因此我通过删除一些缺少大量数据的列来清理数据集,然后用它们的平均值填充其他列。所以我的数据集中没有缺失值。
接下来,我使用来自 TF 的 make_csv_dataset 加载了新的、已清理的 csv。
batch_size = 32
train_dataset = tf.data.experimental.make_csv_dataset(
'clean_train.csv',
batch_size,
column_names=column_names,
label_name=label_name,
num_epochs=1)
我设置了一个函数来返回我的编译模型,如下所示:
f1_macro = tfa.metrics.F1Score(num_classes=4, average='macro')
def get_compiled_model():
model = tf.keras.Sequential([
tf.keras.layers.Dense(512, activation=tf.nn.relu, input_shape=(137,)), # input shape required
tf.keras.layers.Dense(256, activation=tf.nn.relu),
tf.keras.layers.Dense(4, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=[f1_macro, 'accuracy'])
return model
model = get_compiled_model()
model.fit(train_dataset, epochs=15)
下面是那个结果
我的笔记本的链接是Here
我应该提一下,我的实现非常基于 Tensorflow 的虹膜数据walkthrough
谢谢!
【问题讨论】:
-
我尝试将
binary_crossentropy更改为categorical_crossentropy,它提供了更真实的准确度,但损失数字很大。
标签: python tensorflow machine-learning structured-data