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.3
或 13
这样的单个值,但事实并非如此。
根据文档:
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
必须是一维向量,而你传递的是一维列。