不拟合模型进行预测(knn)

当我注释掉下方代码中的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')

回答:

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

更多细节,当knn.predict被触发时,

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注