我担心我的预测与测试的准确性完全有意义。
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%正确的
答案 0 :(得分:1)
得分函数只是一个效用函数,用于在某些scikit-learn算法中使用的默认度量(主要是model selection模块中的算法,例如{{3}如果未指定其他度量标准,则为{}或GridSearchCV)。因此,对于分类,这通常是准确度和回归均方误差。
所以它是一样的,因为它与您在代码中完成的操作完全相同:它采用传递的矩阵X(例如,在您的情况下为X_test),调用预测并调用 accuracy_score < / em>的。因此,毫不奇怪它是相同的分数。事实上,由于scikit-learn是开源的,您可以自己检查cross_validate。
那你怎么这么关心?好吧,您可以在算法中使用它(例如,如果您构建合奏)或仅仅保存一行代码,如上例所示。如果你要构建你的估算器,那么你必须考虑什么是合理的默认值。