SCIkit 学习线性回归的数据维度



我刚开始使用Python scikit-learn包来做线性回归。我对它所需的数据集的维度感到困惑。例如,我想使用以下代码在Y上回归X

from sklearn import linear_model
x=[0,1,2]
y=[0,1,2]
regr = linear_model.LinearRegression()
regr.fit (x,y)
print('Coefficients: n', regr.coef_)

系统返回错误:元组索引超出范围。根据scikit-learn网站,有效的数组应该像

x=[[0,0],[1,1],[2,2]]
y=[0,1,2]

(http://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squares(

from sklearn import linear_model
x=[[0,0],[1,1],[2,2]]
y=[0,1,2]
regr = linear_model.LinearRegression()
regr.fit (x,y)
print('Coefficients: n', regr.coef_)

所以这意味着包不能在Y[i]上回归X[i]两个数字? 它一定是一个数字上的数组? 就像X [0,0]Y 0

提前谢谢。

你可以。只需重塑您的数据即可x = [[0], [1], [2]]

在这种情况下,数据中的每个点都将有一个特征 - 单个数字。

Scikit 要求你的 x 是一个二维数组。它不必是一个 numpy 数组。您始终可以使用简单的python列表。

如果你把你的x作为一个一维数组,就像你刚才在问题中提到的,你可以简单地执行以下操作:

x = [[value] for value in [0,1,2]]

这将在 x 中存储 1D 数组的 2D 数组,即列表的每个单独值都存储为数组。

x也可以转换为numpy数组,然后按如下方式重塑:

import numpy as np
x = np.array(x).reshape(-1, 1)

这会将您的数据转换为 2D 数组,以便您可以使用它来拟合 sklearn 中的线性回归模型。

array([[0],
       [1],
       [2]])

相关内容

  • 没有找到相关文章

最新更新