sklearn:在调用LinearRegression.fit()时发现样本数不一致的数组
只是试图做一个简单的线性回归,但我很困惑这个错误:
regr = LinearRegression() regr.fit(df2.iloc[1:1000, 5].values, df2.iloc[1:1000, 2].values)
这产生:
ValueError: Found arrays with inconsistent numbers of samples: [ 1 999]
这些select必须具有相同的维度,而且应该是numpy数组,所以我错过了什么?
它看起来像sklearn需要数据形状(行号,列号)。 如果您的数据形状是(行号),如(999, )
,则不起作用。 通过使用numpy.reshape()
,你应该改变(999, 1)
numpy.reshape()
(999, 1)
,例如使用
data.reshape((999,1))
在我的情况下,它的工作。
看起来你正在使用pandas数据框(从名称df2)。
您也可以执行以下操作:
regr = LinearRegression() regr.fit(df2.iloc[1:1000, 5].to_frame(), df2.iloc[1:1000, 2].to_frame())
注意:我已经将“pandas Series”转换为numpy.ndarray并且numpy.ndarray没有属性to_frame()。
我认为regr.fit的“X”参数需要是一个matrix,所以下面的内容应该是有效的。
regr = LinearRegression() regr.fit(df2.iloc[1:1000, [5]].values, df2.iloc[1:1000, 2].values)
我遇到这个错误,因为我把我的数据转换为一个np.array
。 我通过将数据转换为np.matrix
来解决这个问题,然后进行转置。
ValueError: regr.fit(np.array(x_list), np.array(y_list))
正确: regr.fit(np.transpose(np.matrix(x_list)), np.transpose(np.matrix(y_list)))
expects X(feature matrix)
尝试把你的function放在这样一个元组中:
features = ['TV','Radio','Newspaper'] X =数据[function]
正如上面提到的,X参数必须是一个matrix或具有已知维数的numpy数组。 所以你可以使用这个:
df2.iloc[1:1000, 5:some_last_index].values
所以你的数据框会被转换成一个已知尺寸的数组,你不需要重新devise它
要分析两个数组(array1和array2),他们需要满足以下两个要求:
1)他们需要是一个numpy.ndarray
检查
type(array1) # and type(array2)
如果这不是至less其中一个performance的话
array1 = numpy.ndarray(array1) # or array2 = numpy.ndarray(array2)
2)尺寸需要如下:
array1.shape #shall give (N, 1) array2.shape #shall give (N,)
N是数组中的项目数。 为array1提供正确数量的轴执行:
array1 = array1[:, numpy.newaxis]