Wur*_*rmD 6 python scikit-learn tensorflow
tf.metrics.auc与相比产生非常不同的值sklearn.metrics.roc_auc_score与某些情况
我无法确定这种情况的特殊性,但我获得一个可重现的示例:
代码和数据可从https://www.dropbox.com/s/ym2ptqaqw2qjite/minimal_program_AUC.zip?raw=1下载
代码:
import sklearn.metrics
from keras.models import Model, load_model
import tensorflow as tf
from keras import backend as K
import numpy as np
def auc(y_true, y_pred):
auc = tf.metrics.auc(y_true, y_pred, num_thresholds=65)[1]
K.get_session().run(tf.local_variables_initializer())
return auc
model = load_model('Model.hdf5', custom_objects={'auc': auc})
X = np.fromfile('X_test(65, 80, 1292, 1).txt', sep=',').reshape(65, 80, 1292, 1)
Y = np.fromfile('Y_test(65, 1).txt', sep=',').reshape(65, 1)
batchsize = 45
evaluation = model.evaluate(X, Y, batch_size=batchsize, verbose=1)
predictions = model.predict(X, batch_size=batchsize, verbose=0, steps=None)
auc = sklearn.metrics.roc_auc_score(Y, predictions, average='macro', sample_weight=None)
print('sklearn.metrics.roc_auc_score: ', auc)
print('vs')
print('tf.metrics.auc: ', evaluation[2])
Run Code Online (Sandbox Code Playgroud)
结果:
sklearn.metrics.roc_auc_score:0.40476190476190477
与
tf.metrics.auc:0.2756012196724231
讨论:我读过这tf.metrics.auc 是近似值,越高,num_thresholds它就越接近理想的 AUC。(更改请求/旁注:我的数据只有 65 个样本,因此使用 65 个阈值可以计算理想的 AUC)我已经使用多个阈值进行了测试,输出的 AUC 值有所不同,但并不完全匹配sklearn.metrics.roc_auc_score
编辑:我也进行了测试,batchsize = X.shape[0]因此它仅在一批中计算,并且没有“修复”它
我不知道是sklearn.metrics.roc_auc_score近似的还是理想的。
EDIT2:这里是罪魁祸首,预测几乎都是0.5,这导致TF AUC计算的近似性质被加剧
0.506357729434967
0.4968412518501282
0.506340742111206
0.4976259469985962
0.5060197114944458
0.5054880976676941
0.506357729434967
0.5063252449035645
0.506357729434967
0.5028414130210876
0.49709421396255493
0.505968451499939
0.49766668677330017
0.506357729434967
0.506357729434967
0.5059878826141357
0.5063162446022034
0.5062981247901917
0.506357729434967
0.4971608519554138
0.506357729434967
0.506357729434967
0.4985077977180481
0.4981336295604706
0.5063574314117432
0.49704432487487793
0.506357729434967
0.5062510967254639
0.506357729434967
0.49734553694725037
0.49696335196495056
0.506357729434967
0.506357729434967
0.4975492060184479
0.49732962250709534
0.5019861459732056
0.4974926710128784
0.506357729434967
0.4975907504558563
0.49734383821487427
0.49705255031585693
0.506357729434967
0.5036844611167908
0.506357729434967
0.5041226148605347
0.5029517412185669
0.49785998463630676
0.5061197280883789
0.506357729434967
0.49714547395706177
0.506357729434967
0.506357729434967
0.5018795132637024
0.4972745478153229
0.49750152230262756
0.5063059329986572
0.49842190742492676
0.5164832472801208
0.496705561876297
0.49700644612312317
0.49824368953704834
0.5063083171844482
0.5031181573867798
0.49714842438697815
0.4966968595981598
基于 Qusai 提到的内容:
本示例中的分类器并未真正发挥作用,当标签值为 0 或 1 时,上述预测结果接近 0.5。
另外,鉴于预测都非常接近,计算出的分数确实相差很大。
| 归档时间: |
|
| 查看次数: |
2976 次 |
| 最近记录: |