knn.score 和 KNN 中的准确度指标有什么区别 - SKlearn

What is the difference between knn.score and accuracy metrics in KNN - SK learn

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

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 文档说 Returns 给定测试数据和标签的平均准确度。

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

我的问题是为什么有人应该关心这个分数,因为 X_test ,y_test 是我拆分成的数据 train/test-- 这是我的给定数据用于监督学习这里得分的意义是什么。我是不是完全遗漏了什么万一如果我检查分数它应该给我 100% 正确

score 函数只是一个实用函数,用于在 scikit-learn 的某些算法(主要是 model selection module, e.g. GridSearchCV, or cross_validate 中的算法)中使用默认指标,如果没有指定其他指标。因此对于分类,这通常是准确度,对于回归均方误差。

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

编辑:

那你怎么看?好吧,您可以类似地在算法中使用它(例如,如果您构建合奏)或者只是像上面的示例那样保存一行代码。如果你要构建你的估计器,那么你必须考虑什么是合理的默认值。