Правильность Scikit-Learn для MLR? - PullRequest
0 голосов
/ 04 февраля 2019

Привет, у меня есть проблемы с корректностью в пакете scikit-learn для mlr (linear_model.LinearRegression).Во всех случаях одни и те же данные используются и создаются без перехвата

Код Python:

data = np.loadtxt(fname=file, delimiter='\t')
X = data[:, 1:]
Y = data[:, 1]
mlr = LinearRegression(fit_intercept=False)
mlr.fit(X,Y)
print(mlr.coef_)

1.00000000e+00  6.20460347e-17 -1.82373860e-17  3.35782591e-19
7.92128777e-17 -1.04990677e-17 -1.15961796e-16  1.33629653e-15

R:

Y = data[,1]
X = data[,-1]
X = as.matrix(X)
m1 = lm(Y~X-1)
m1$coefficients

 0.0546782907  0.0159731763  0.1312037785 -0.0507591565  0.1036469860 

 0.0050217163 -0.1006476385  0.0248998498  0.0081473528 -0.0111405854 

C # (с использованием accord.net, довольнотолько результаты публикации процедуры):

 0.0546782906719276*x0 + 0.0159731763215885*x1 + 0.13120377853918*x2 + -0.0507591564748648*x3 + 0.103646986044143*x4 + 0.00502171630071436*x5 

Любая причина почему?

tldr;используется scikit-learn, R, C# accord.net для сравнения коэффициентов mlr, получения результатов bs от sklearn, тогда как accord.net & r дают аналогичные результаты

1 Ответ

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

Я понял, почему (это моя собственная фиктивная ошибка)

Y = data[:, 1] неправильно !!

изменить на:

Y = data[:, 0]

Теперь я получаю это (что правильно):

5.46782907e-02  1.59731763e-02  1.31203779e-01 -5.07591565e-02
  1.03646986e-01  5.02171630e-03 -1.00647639e-01  2.48998498e-02
...