【发布时间】:2019-06-01 14:34:06
【问题描述】:
Keras 提供了定义自定义评估指标的可能性——我对 F 指标的变体感兴趣,例如scikit learn 提供的 F1、F2 等,但通过调用在这方面受到限制的 Keras 后端函数来指示我们这样做。
我的目标是将这些指标与 Keras 的 Early-Stopping 方法结合使用。所以我应该找到一种方法将度量与 Keras 模型的学习过程相结合。 (当然,在学习/拟合过程之外,我可以简单地使用结果调用 Scikit-Learn)。
我有什么选择?
更新
使用来自 Kaggle 的 titanic_all_numeric 数据集实施 Aaron 的解决方案后,我得到以下信息:
# Compile the model
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy', f1])
# Fit the model
hist = model.fit(predictors, target, validation_split = 0.3)
Train on 623 samples, validate on 268 samples
Epoch 1/1
623/623 [==============================] - 0s 642us/step - loss: 0.8037 - acc: 0.6132 - f1: 0.6132 - val_loss: 0.5815 - val_acc: 0.7537 - val_f1: 0.7537
# Compile the model
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
# Fit the model
hist = model.fit(predictors, target, validation_split = 0.3)
Train on 623 samples, validate on 268 samples
Epoch 1/1
623/623 [==============================] - 0s 658us/step - loss: 0.8148 - acc: 0.6404 - val_loss: 0.7056 - val_acc: 0.7313
# Compile the model
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = [f1])
# Fit the model
hist = model.fit(predictors, target, validation_split = 0.3)
Train on 623 samples, validate on 268 samples
Epoch 1/1
623/623 [==============================] - 0s 690us/step - loss: 0.6554 - f1: 0.6709 - val_loss: 0.5107 - val_f1: 0.7612
我想知道这些结果是否正常。一次,准确率和 f1 分数是一样的。
【问题讨论】:
标签: python-3.x scikit-learn keras metrics evaluation