如何预测股票分析--k-近邻

上一篇中,咱们学习了线性回归,这一次来看看k近邻的表现
html

K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:在特征空间中,若是一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。算法

#importing libraries #导入相对应的库函数(第一个是用来使用k n n的,第二个是用来网格搜索,第三个用来归一化)机器学习

from sklearn import neighbors函数

from sklearn.model_selection import GridSearchCV学习

from sklearn.preprocessing import MinMaxScalerrest

scaler = MinMaxScaler(feature_range=(0, 1))orm

使用上一节中相同的训练和验证集:htm

#scaling data 处理数据(归一化)、将数据集转化为pandas的执行规格blog

x_train_scaled = scaler.fit_transform(x_train)get

x_train = pd.DataFrame(x_train_scaled)

x_valid_scaled = scaler.fit_transform(x_valid)

x_valid = pd.DataFrame(x_valid_scaled)

 

#using gridsearch to find the best parameter 用网格搜索寻找最优参数

params = {'n_neighbors':[2,3,4,5,6,7,8,9]}

knn = neighbors.KNeighborsRegressor()

 #创建模型

model = GridSearchCV(knn, params, cv=5)

 

#fit the model and make predictions 给模型喂数据并预测

model.fit(x_train,y_train)

preds = model.predict(x_valid)

结果

#rmse计算r m s

rms=np.sqrt(np.mean(np.power((np.array(y_valid)-np.array(preds)),2)))

#这里显示结果,可不执行

rms

 

115.17086550026721

RMSE值并无太大的差别,可是一个预测值和实际值的曲线图应该能够提供一个更清晰的理解。 

#plot 绘图 画出训练的数据(绿线)、预测值(蓝线)与训练集的观测值(橙线)

valid['Predictions'] = 0

valid['Predictions'] = preds

plt.plot(valid[['Close', 'Predictions']])

plt.plot(train['Close'])

推论

RMSE值与线性回归模型近似,图中呈现出相同的模式。与线性回归同样,kNN也发现了2018年1月的降低,由于这是过去几年的模式。

咱们能够有把握地说,回归算法在这个数据集上表现得并很差。

 

参考:https://www.jiqizhixin.com/articles/2019-01-04-16

相关文章
相关标签/搜索