У меня есть вопрос о двух разных методах из разных библиотек, которые, кажется, выполняют одну и ту же работу. Я пытаюсь сделать модель линейной регрессии.
Вот код, который я использовал с помощью библиотеки statsmodel с OLS:
X_train, X_test, y_train, y_test = cross_validation.train_test_split(x, y, test_size=0.3, random_state=1)
x_train = sm.add_constant(X_train)
model = sm.OLS(y_train, x_train)
results = model.fit()
print "GFT + Wiki / GT R-squared", results.rsquared
Это распечатка GFT + Wiki / GT R-squared 0.981434611923
а второй - метод линейной модели библиотеки scikit learn:
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print 'GFT + Wiki / GT R-squared: %.4f' % model.score(X_test, y_test)
Это распечатать GFT + Wiki / GT R-квадрат: 0,8543
Поэтому мой вопрос заключается в том, что оба метода выводят наш результат R ^ 2, но один выводит 0,98, а другой - 0,85.
Насколько я понимаю, OLS работает с набором обучающих данных. Итак, мои вопросы,
- Есть ли способ работы с набором тестовых данных с OLS?
- Придает ли нам значение набора данных обучения (в OLS мы не использовали набор тестовых данных)? Из моих прошлых знаний мы должны работать с тестовыми данными.
- В чем разница между МНК и линейной регрессией Скикита? Какой из них мы используем для расчета балла модели?
Спасибо за любую помощь.