在下面的代码(最后一行)中,根据文档使用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)))
最佳答案
如果检查docs:
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)
关于python - knn.score参数说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58765373/