在不拟合模型的情况下进行预测(knn)

时间:2020-08-09 04:52:16

标签: python machine-learning scikit-learn

当我在以下代码中注释knn.fit(x_tr,y_tr)并运行时,它给出了错误NotFittedError: This KNeighborsClassifier instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.

knn = KNeighborsClassifier(n_neighbors=1)
print(knn)
# knn.fit(x_tr, y_tr)
# print(knn)
pred = knn.predict(x_cv)
acc = accuracy_score(y_cv, pred, normalize=True) * float(100)

我的断开连接是我没有将knn.fit(...)保存在任何变量中,程序如何知道我还没有安装?

另外,当我在初始化后和拟合后打印模型时……完全一样

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
                     metric_params=None, n_jobs=None, n_neighbors=1, p=2,
                     weights='uniform')
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
                     metric_params=None, n_jobs=None, n_neighbors=1, p=2,
                     weights='uniform')

1 个答案:

答案 0 :(得分:1)

如果您查看KNeighborsClassifier代码,则knn实例会将经过训练的参数/信息存储在self中。这就是程序知道的原因。

有关更多详细信息,当触发knn.predict时。

  • 它首先调用neigh_dist, neigh_ind = self.kneighbors(X) sklearn\neighbors\_classification.py(第175行)
  • 接下来,它在 check_is_fitted(self)中调用sklearn\neighbors\_base.py(第585行)