Пояснение параметров knn.score - PullRequest
1 голос
/ 08 ноября 2019

В приведенном ниже коде (последняя строка) используются X_test и y_test, которые в соответствии с документами:

Возвращает среднюю точность данных данных испытаний и label

Вопрос в том, что именно рассчитывается, поскольку 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)))

1 Ответ

0 голосов
/ 08 ноября 2019

Если вы проверите документы :

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)
...