Python Scikit学习Knn最近邻回归

Python Scikit学习Knn最近邻回归,python,scikit-learn,regression,knn,Python,Scikit Learn,Regression,Knn,我使用Scikit中的最近邻回归,在Python中学习20个最近邻作为参数。我训练了模型,然后使用以下代码保存它: knn = neighbors.KNeighborsRegressor(n_neighbors, weights='uniform') knn.fit(trainInputs, trainOutputs) filename = "KNN_model_%d_%d.sav" % (n_neighbors,windowSize) pickle.dump(knn, open(filenam

我使用Scikit中的最近邻回归,在Python中学习20个最近邻作为参数。我训练了模型,然后使用以下代码保存它:

knn = neighbors.KNeighborsRegressor(n_neighbors, weights='uniform')
knn.fit(trainInputs, trainOutputs)
filename = "KNN_model_%d_%d.sav" % (n_neighbors,windowSize)
pickle.dump(knn, open(filename, 'wb'))
现在,我尝试加载模型,并使用以下方法预测新输入的输出值:

filename = 'KNN_model_20_720.sav'
loaded_knn_model = pickle.load(open(filename, 'rb'))
nextPrediction = loaded_knn_model.predict(data_pred_input_window)
但是,当我执行此操作时,会出现以下错误:

--------------------------------------------------------------------------- ValueError                                Traceback (most recent call last) <ipython-input-1-bc1f744a44b3> in <module>()
     26 filename = 'KNN_model_20_720_Solar11months.sav'
     27 loaded_knn_model = pickle.load(open(filename, 'rb'))
---> 28 nextPrediction = loaded_knn_model.predict(data_pred_input_window)
     29 
     30 print(nextPrediction)

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\neighbors\regression.py in predict(self, X)
    142         X = check_array(X, accept_sparse='csr')
    143 
--> 144         neigh_dist, neigh_ind = self.kneighbors(X)
    145 
    146         weights = _get_weights(neigh_dist, self.weights)

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\neighbors\base.py in kneighbors(self, X, n_neighbors, return_distance)
    341                 "Expected n_neighbors <= n_samples, "
    342                 " but n_samples = %d, n_neighbors = %d" %
--> 343                 (train_size, n_neighbors)
    344             )
    345         n_samples, _ = X.shape

ValueError: Expected n_neighbors <= n_samples,  but n_samples = 1, n_neighbors = 20
--------------------------------------------------------------------------------------在()中的ValueError回溯(最近一次调用)
26文件名='KNN_model_20_720_solar11个月.sav'
27 loaded_knn_model=pickle.load(打开(文件名为'rb'))
--->28下一步预测=加载的knn模型预测(数据预测输入窗口)
29
30份打印件(下一个指令)
C:\ProgramData\Anaconda3\lib\site packages\sklearn\neights\regression.py in predict(self,X)
142 X=检查数组(X,接受
143
-->144 neigh_dist,neigh_ind=self.kneighbors(X)
145
146权重=\u获取\u权重(相邻距离,自身权重)
C:\ProgramData\Anaconda3\lib\site packages\sklearn\neighbors\base.py(self、X、n\u neighbors、return\u distance)
341“预期n_邻居Scikit学习建议使用
joblib
进行模型持久化

from sklearn.externals import joblib 

knn = neighbors.KNeighborsRegressor(n_neighbors, weights='uniform')
knn.fit(trainInputs, trainOutputs)
joblib.dump(knn, f"KNN_model_{n_neighbors}_{windowSize}.joblib")

# load the model from a file
model = joblib.load(f"KNN_model_{n_neighbors}_{windowSize}.joblib")

另外,在您的原始代码中,我注意到您没有使用上下文块。这可能会也可能不会使您的原始代码正常工作。

您是否可以添加KNN_model_20_720.sav文件,以便我们可以重现错误?在fit调用和酸洗之前显示
打印(trainputs.shape)