我刚开始使用Python scikit-learn包进行线性回归。我对它所需的数据集的维度感到困惑。例如,我想使用以下代码
在X
上回归Y
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_)
这意味着套餐无法在X[i]
上为两个单个数字退回Y[i]
?它必须是数字上的数组?比如[0,0]
中的X
到0
中的Y
?
提前致谢。
答案 0 :(得分:1)
你可以。
只需将您的数据重塑为x = [[0], [1], [2]]
。
在这种情况下,数据中的每个点都有一个功能 - 单个数字。
答案 1 :(得分:0)
Scikit要求您的x为二维数组。它不必是一个numpy数组。您始终可以使用简单的python列表。
如果您将x作为一维数组(如您在问题中提到的那样),则只需执行以下操作:
x = [[value] for value in [0,1,2]]
这会将您的1D数组的2D数组存储在x中,即列表的每个单独值都存储为数组。