【问题标题】:Evaluate a prediction's accuracy评估预测的准确性
【发布时间】:2015-06-18 15:47:47
【问题描述】:

我已经训练并测试了我的 KNN 分类器。我已经通过了验证,平均分还不错。现在,我想预测一些真实数据的标签。但是有没有办法查看预测的准确性?只有在准确度足够高的情况下,我才想实际保存预测的标签。我正在使用 Python 和 scikit-learn。

【问题讨论】:

  • 你检查过docs有很多方法可以评估你的模型
  • 准确度是什么意思?您的意思是分类器的分类中有多少与真实数据匹配(在这种情况下,您需要一个事实点来比较它),或者分类器对其所做的每个分类的确定性如何?
  • @EdChum,我做到了,但这是模型评估,而不是预测评估。
  • @jonrsharpe,我想知道分类器对其预测的标签有多确定。假设预测 A 有 90% 的准确率,我敢打赌它是正确的,我会将它保存到我的数据库中。
  • @AndreiHorak 你看过scikit-learn.org/stable/modules/generated/…吗?

标签: python machine-learning scikit-learn classification


【解决方案1】:

正如@jonrsharpe 所说,predict_proba 应该这样做。

它提供了一个包含所有类别概率的数组。可以说,您有 3 个类别 [A、B、C]。 predict_proba 方法将返回 [0.2,0.3,0.5]。 所以在这里你的准确性是

A=0.2
B=0.3
C=0.5

例如:

categories = [A, B, C]
X = # put your data
Y = # put your result

classifier.fit(X, Y)
prediction = classifier.predict_proba(X) # predict whatever you want here

for line in prediction:
    # numpy.argmax return the index of the biggest value in the array
    # max return the biggest value
    print("The class is %s with proba : %f " % (categories[numpy.argmax(line)], max(line, key=float)))

重要:注意您的类别数组中的顺序。 predict_proba 结果的内容根据类别按词汇排序。在处理结果之前不要犹豫对类别进行排序

【讨论】:

  • 分类器还将有一个classes_ 属性,为您提供使用的顺序。
猜你喜欢
  • 2016-08-08
  • 2023-03-08
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2018-08-26
相关资源
最近更新 更多