У меня есть вопрос о двух разных методах из разных библиотек, которые, кажется, выполняют одну и ту же работу. Я пытаюсь сделать модель линейной регрессии.
Вот код, который я использовал с помощью библиотеки 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 мы не использовали набор тестовых данных)? Из моих прошлых знаний мы должны работать с тестовыми данными.
- В чем разница между МНК и линейной регрессией Скикита? Какой из них мы используем для расчета балла модели?
Спасибо за любую помощь.
источник
exog
в оценку и прогнозирование.В модели OLS вы используете данные обучения для подбора и прогнозирования.
В модели LinearRegression вы используете обучающие данные для подбора и тестирования данных для прогнозирования, поэтому разные результаты в баллах R2.
Если вы будете принимать тестовые данные в модели OLS, вы должны иметь те же результаты и меньшее значение
источник
Я столкнулся с похожей проблемой, когда OLS дает разные значения Rsquared и Adjusted Rsquared по сравнению с моделью Sklearn LinearRegression.
Причина этого: OLS по умолчанию не учитывает коэффициент перехвата и строит модель без него, а Склеарн учитывает его при построении модели.
Решение: Добавьте столбец 1 к набору данных и установите модель с OLS, и вы получите почти одинаковые Rsquared и Adj. Rsquared значения для обеих моделей.
источник