首页 > 解决方案 > knn.score的参数说明

问题描述

在下面的代码(最后一行)中,它使用了 X_test 和 y_test 根据文档:

返回给定测试数据标签的平均准确度

问题是究竟计算了什么,因为X_test有来自测试数据的数据并且y_test有这些数据的标签。

检查预测标签与实际标签是有意义的。

你能告诉我第一个场景在最后一行是如何工作的吗?

X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], 
random_state=0)
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)
print("Test set score: {:.2f}".format(knn.score(X_test, y_test)))

标签: pythonscikit-learnknn

解决方案


如果您检查文档

Parameters: 

X : array-like, shape = (n_samples, n_features)

    Test samples.
y : array-like, shape = (n_samples) or (n_samples, n_outputs)

    True labels for X.
sample_weight : array-like, shape = [n_samples], optional

    Sample weights.

Returns:    

score : float

    Mean accuracy of self.predict(X) wrt. y.

后面会发生什么?它正在预测:knn.predict(X_test)然后使用这些值来计算 和 之间的平均准确knn.predict(X_test)y_test。您应该使用sklearn.metrics.accuracy_score获得相同的输出:

from sklearn.metrics import accuracy_score
y_predict = knn.predict(X_test)
accuracy_score(y_test, y_predict)

推荐阅读