LinearRegression(): оценка R2 с помощью cross_val_score - странные результаты

Я использую функцию cross_val_score() для вычисления R2 Коэффициент моей подгонки. Вот мой код:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
X = data.iloc[:,0:13]
y = data.iloc[:,13]
lin = LinearRegression()

MSE = cross_val_score(lin,X,y,scoring = 'neg_mean_squared_error',cv = 10)
MSE
array([  -9.28694671,  -14.15128316,  -14.07360615,  -35.20692433,
    -31.88511666,  -19.83587796,   -9.94726918, -168.37537954,
    -33.32974507,  -10.96041068])
MSE.mean()
-34.705255944525462

R2= cross_val_score(lin,X,y,cv = 10)
R2
array([ 0.73376082,  0.4730725 , -1.00631454,  0.64113984,  0.54766046,
    0.73640292,  0.37828386, -0.12922703, -0.76843243,  0.4189435 ])
R2.mean()
0.20252899006052702

Я нашел эти результаты очень странными, в частности, R2 Результаты:

  • 0
  • Я нашел очень странным, что среднеквадратичный результат и R2 баллы очень "разбросаны".

Я выполняю ту же регрессионную задачу и вычисляю баллы с помощью "Rapidminer" и получаю более "логичные" результаты:

  • Средняя квадратическая ошибка = 24,218 +/- 10,413
  • R2 = 0,848 +/- 0,066

NB: Я уточняю, что получаю одинаковые коэффициенты при использовании Python и Rapidminer!!!!!!

Это какие-то ошибки в sklearn? Может кто-нибудь объяснить мне эти странные результаты с Python?

Здесь вы можете найти ссылку на мой обучающий набор данных (файл.csv), чтобы воспроизвести наблюдаемое мной поведение: https://1drv.ms/u/s!Am7xh5YMVeT6gf8NMS9fZgpOpe6kbw

0 ответов

Другие вопросы по тегам