sklearn - model.coef_返回 NxN 矩阵


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 这样的单个值,但事实并非如此。

根据文档:

coef_:数组、形状(n_features、(或(n_targets、n_features(

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

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

尝试:

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

看看会发生什么。

根据文档:

y : 数组状, 形状 (n_samples,(

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

相关内容

  • 没有找到相关文章

最新更新