我有一个带有此编译的模型:
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精度度量标准?
答案 0 :(得分:1)
根据您的评论,您可能希望将y_test
和y_pred
展平为一维数组并测量精度。这将为您提供一个衡量模型可以如何识别给定客户是否“喜欢”给定产品的方法。
您也可以将其视为二进制推荐系统问题-您的模型必须仅向用户推荐他们想要的产品。然后,您可以使用标准推荐指标,例如平均平均精度,平均倒数排名等(我认为sklearn中没有这些功能)