使用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

使用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中创建了一个多类分类项目。该项目可以对…

发表回复

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