为什么Keras准确性指标的测量结果与sklearn.metrics准确性不同?

时间:2020-07-23 15:04:18

标签: machine-learning keras scikit-learn deep-learning data-science

我有一个带有此编译的模型:

model.compile(optimizer='adam', loss='binary_crossentropy',metrics=['accuracy'])

当我拟合模型并称之为:

model.fit(X_train, y_train, batch_size=10, epochs=10) 
score_user = model.evaluate(X_test,y_test)

它给我0.13的准确度,但是有了这个:

pred = model.predict(X_test)
pred = pred.round(0)
from sklearn.metrics import accuracy_score
score_user = accuracy_score(y_test,pred)

它给了我几乎0.5分。

y_test是一个0和1(每个实例具有将要预测的近2000个类)的2D数组,例如:

[[0,1,0,0,0....,1],[0,1,0,0,0....,1],[0,1,0,0,0....,1],[0,1,0,0,0....,1]]

我测试了sklearn的acuracy_score,我知道它返回的pred行的比例与y_test完全相同。那么,什么是Keras精度度量标准?

1 个答案:

答案 0 :(得分:1)

根据您的评论,您可能希望将y_testy_pred展平为一维数组并测量精度。这将为您提供一个衡量模型可以如何识别给定客户是否“喜欢”给定产品的方法。

您也可以将其视为二进制推荐系统问题-您的模型必须仅向用户推荐他们想要的产品。然后,您可以使用标准推荐指标,例如平均平均精度,平均倒数排名等(我认为sklearn中没有这些功能)