sklearn - model.coef_ возвращает матрицу NxN - PullRequest
0 голосов
/ 05 февраля 2019
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, но это не так.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Попробуйте:

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

и посмотрите, что произойдет.

Согласно документации :

y: в виде массива,shape (n_samples,)

Проще говоря, y должен быть 1d вектором, в то время как вы передаете 1d столбец.

0 голосов
/ 05 февраля 2019

Согласно документации:

coef_: массив, форма (n_features,) или (n_targets, n_features)

Расчетные коэффициенты для линейной регрессиипроблема.Если во время подгонки пройдено несколько целей (это 2D), это двумерный массив формы (n_targets, n_features), а если передана только одна цель, это одномерный массив длины n_features.

Вы прошли несколько целей и получили двумерный массив формы (n_targets, n_features).

...