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


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

    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 MinMaxScaler

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

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

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

    x_train_scaled = scaler.fit_transform(x_train)

    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

  • 相关阅读:
    postgresql查询栅格数据范围(extent)
    raster导入postgres Windows命令
    Python使用XML操作mapnik,实现复杂标注(Multi line text symbolizer)
    Leaflet使用vector tiles 标注label设置
    Leaflet使用vector tiles样式设置
    Leaflet调用geoserver发布的矢量切片
    java 生成透明背景图片
    java 用RGB生成图片动态命名
    POI拆分单元格,并设置拆分后第一个cell的值为空cell的值
    洛谷 P1003 铺地毯 题解
  • 原文地址:https://www.cnblogs.com/xingnie/p/12232157.html
Copyright © 2020-2023  润新知