【问题标题】:What is the difference between knn.score and accuracy metrics in KNN - SK learnKNN中的knn.score和准确度指标有什么区别-SKlearn
【发布时间】:2018-06-09 15:14:03
【问题描述】:

我担心我的预测 vs 测试的准确性,这完全有道理。

X_train , X_test, y_train ,y_test =train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)      
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train ,y_train)
y_pred= knn.predict(X_test)
accuracy_score(y_pred,y_test)  # 97 % accuracy here I get accuracy score for pred/test

我用 knn.score 尝试了同样的事情,这里的 catch 文档说 返回给定测试数据和标签的平均准确度。

knn.score(X_test,y_test)  # 97% accuracy

我的问题是为什么有人应该关心这个分数,因为 X_test ,y_test 是我分成训练/测试的数据——这是我用于监督学习的给定数据,在这里获得分数有什么意义.我是否完全错过了什么如果我检查分数它应该给我 100% 正确

【问题讨论】:

  • 变量 X_new 和 y_pred 未在您的代码中定义。你能解决这个问题吗?
  • 那是个错误,我更新了,谢谢
  • 谢谢,我就是这么想的。那么下面是否回答了您的问题?
  • 感谢您的帮助,我仍然怀疑 score 函数的目的是什么,实际用例是什么
  • 我重写了这个(希望)澄清一下,并添加了两个我一直关心这个功能的用例。

标签: machine-learning scikit-learn knn


【解决方案1】:

score 函数只是用于 scikit-learn 的某些算法(主要是 model selection 模块中的算法,例如 GridSearchCV 或 @ 987654323@),如果没有指定其他指标。所以对于分类,这通常是准确度和回归均方误差。

所以它是相同的,因为它完全按照您在代码中所做的那样:它采用传递的矩阵 X(例如,在您的情况下为 X_test),调用 predict 并调用 accuracy_score。因此,它是相同的分数也就不足为奇了。事实上,由于 scikit-learn 是开源的,你可以自己检查一下here

编辑:

那么这对你有什么影响?好吧,您可以类似地在算法中使用它(例如,如果您构建集成),或者只是像上面的示例中那样保存一行代码。如果您要构建您的 on estimator,那么您必须考虑什么是合理的默认值。

【讨论】:

  • 如果它为您清除,您会接受答案吗?干杯。
猜你喜欢
  • 2012-01-06
  • 2014-07-13
  • 2019-07-20
  • 2016-11-19
  • 2017-03-14
  • 2011-05-03
  • 2011-11-11
  • 2021-02-16
  • 2016-12-06
相关资源
最近更新 更多