Уровень достоверности меньше 0 с питоном линейной регрессии - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть цены акций df2 [x] ниже как Y:

2018-09-05    6.22
2018-09-06    6.19
2018-09-07    6.22
2018-09-10    6.24
2018-09-11    6.24

...

2018-12-05    4.65
2018-12-14    0.00

короткая позиция csvReader5 [x] как X:

2018-09-06    1.11
2018-09-07    1.04
2018-09-10    1.61
2018-09-11    1.52
2018-09-12    1.61

..
2018-12-05    0.98
2018-12-14    7.00

Это мой код для расчета уровня достоверности

 y = numpy.array(csvReader5[x]).reshape(-1,1)
 X=numpy.array(df2[x]).reshape(-1,1)
 X = preprocessing.scale(X)

 X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)
 clf = LinearRegression()
 clf.fit(X_train, y_train)
 confidence = clf.score(X_test, y_test)
Out :-1.08

Уровень достоверности, который я получаю, меняется каждый раз, когда я запускаю его, и всегда меньше 1. Я думал, что уровень достоверности такой же, как Rследовательно, квадрат всегда должен быть между (0,1)?

1 Ответ

0 голосов
/ 15 декабря 2018

Из документации sklearn:

score(X, y, sample_weight=None)

Возвращает коэффициент определения R ^ 2 прогноза.

Коэффициент R^2 определяется как (1 - u/v), где u - это значениеОстаточная сумма квадратов ((y_true - y_pred) ** 2).sum(), а v - общая сумма квадратов ((y_true - y_true.mean()) ** 2).sum().Наилучшее возможное значение - 1,0, а может быть отрицательным (поскольку модель может быть произвольно хуже) .Постоянная модель, которая всегда прогнозирует ожидаемое значение y, независимо от входных характеристик, получит оценку R ^ 2 0,0.

...