sklearn-model.coef_返回NxN矩阵

时间:2019-02-05 02:01:25

标签: python scikit-learn linear-regression

md    = dev_df['MD'].values.astype('float').reshape(1,-1)
tvdss = dev_df['TVDSS'].values.astype('float').reshape(1,-1)

model = linear_model.LinearRegression()
model.fit(md, tvdss)

f = model.predict(X)[0]

>>> model.coef_.shape
(78, 78)

>>> model.coef_
array([[0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       ...,
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.]])

>>> type(md)
numpy.ndarray

>>> type(tvdss)
numpy.ndarray

我有上面的代码,我真的不明白为什么model.coef_返回一个矩阵而不是一个值。我希望它是一个像0.313这样的值,但不是。

2 个答案:

答案 0 :(得分:0)

根据文档:

  

coef_:数组,形状(n_features,)或(n_targets,n_features)

     

线性回归问题的估计系数。如果在拟合过程中传递了多个目标(y 2D),则为2D数组   形状(n_targets,n_features),而如果仅传递了一个目标,   这是一个长度为n_features的一维数组。

您通过了多个目标,因此得到了形状为(n_targets, n_features)的2D数组。

答案 1 :(得分:0)

尝试:

tvdss = dev_df['TVDSS'].values.astype('float')

看看会发生什么。

根据documentation

  

y:类似数组的形状(n_samples个)

简单地说,y必须是1d向量,而您要传递1d列。