sklearn - model.coef_返回NxN矩阵

问题描述 投票:0回答:2
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,但它不是一个单一的值。

python scikit-learn linear-regression
2个回答
0
投票

根据文档:

coef_:阵列,形状(n_features,)或(n_targets,n_features)

估计系数为线性回归问题。如果多个目标被拟合(Y 2D)期间传递,这是形状的2D阵列(n_targets,n_features),而如果只有一个目标被传递,这是长度n_features的一维数组。

您通过多个目标,并因此得到了形状(n_targets, n_features)的二维数组。


0
投票

尝试:

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

看看会发生什么。

documentation

Y:阵列状,形状(N_SAMPLES次,)

简单地说,y必须是一维向量,而你传递一个一维列。

© www.soinside.com 2019 - 2024. All rights reserved.