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
这样的值,但不是。
答案 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')
看看会发生什么。
y:类似数组的形状(n_samples个)
简单地说,y
必须是1d向量,而您要传递1d列。