使用Sklearn进行线性回归预测出现问题,数据未能正确拟合

我正在尝试对以下数据进行线性回归。

X = [[ 1 26] [ 2 26] [ 3 26] [ 4 26] [ 5 26] [ 6 26] [ 7 26] [ 8 26] [ 9 26] [10 26] [11 26] [12 26] [13 26] [14 26] [15 26] [16 26] [17 26] [18 26] [19 26] [20 26] [21 26] [22 26] [23 26] [24 26] [25 26] [26 26] [27 26] [28 26] [29 26] [30 26] [31 26] [32 26] [33 26] [34 26] [35 26] [36 26] [37 26] [38 26] [39 26] [40 26] [41 26] [42 26] [43 26] [44 26] [45 26] [46 26] [47 26] [48 26] [49 26] [50 26] [51 26] [52 26] [53 26] [54 26] [55 26] [56 26] [57 26] [58 26] [59 26] [60 26] [61 26] [62 26] [63 26] [64 26] [65 26] [66 26] [67 26] [68 26] [69 26]]Y = [  192770 14817993  1393537   437541   514014   412468   509393   172715   329806   425876   404031   524371   362817   692020   585431   446286   744061   458805   330027   495654   459060   734793   701697   663319   750496   525311  1045502   250641   500360   507594   456444   478666   431382   495689   458200   349161   538770   355879   535924   549858   611428   517146   239513   354071   342354   698360   467248   500903   625170   404462  1057368   564703   700988  1352634   727453   782708   1023673  1046348  1175588   698072   605187   684739   884551  1067267   728643   790098   580151   340890   299185]

我尝试绘制结果以查看回归线,使用以下代码

regr = linear_model.LinearRegression()regr.fit(X, Y)plt.scatter(X[:,0], Y,  color='black')plt.plot(X[:,0], regr.predict(X), color='blue',     linewidth=3)plt.xticks(())plt.yticks(())plt.show()

我得到的图像是 enter image description here

(‘Coefficients: \n’, array([-34296.90306122, 0. ]))Residual sum of squares: 1414631501323.43Variance score: -17.94

我正在尝试预测

pred = regr.predict([[49, 26]])print pred

这是训练数据中已有的值,结果是[-19155.16326531]

其实际值为625170

我做错了什么?

请注意,值26来自一个更大的数组,我已经将数据切片成一小部分,以便在26上进行训练和预测,同样,X[:,0]可能不是连续值,它再次来自一个更大的数组。这里的数组指的是numpy数组


回答:

正如SAMO在他的评论中所说,你的数据结构不清楚。假设你有X中的两个特征和一个目标Y,如果你将X和Y转换为numpy数组,你的代码将按预期工作。

import numpy as npfrom sklearn import linear_modelimport matplotlib.pyplot as pltx1 = range(1, 70)x2 = [26]*69X = np.column_stack([x1, x2])y = '''  192770 14817993  1393537   437541   514014   412468   509393   172715   329806   425876   404031   524371   362817   692020   585431   446286   744061   458805   330027   495654   459060   734793   701697   663319   750496   525311  1045502   250641   500360   507594   456444   478666   431382   495689   458200   349161   538770   355879   535924   549858   611428   517146   239513   354071   342354   698360   467248   500903   625170   404462  1057368   564703   700988  1352634   727453   782708   1023673  1046348  1175588   698072   605187   684739   884551  1067267   728643   790098   580151   340890   299185'''Y = np.array(map(int, y.split()))regr = linear_model.LinearRegression()regr.fit(X, Y)plt.scatter(X[:,0], Y,  color='black')plt.plot(X[:,0], regr.predict(X), color='blue',     linewidth=3)plt.xticks(())plt.yticks(())plt.show()print regr.predict([[49,26]])# 611830.33589088

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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