У мене є питання про два різні методи з різних бібліотек, які, здається, виконують ту саму роботу. Я намагаюся зробити лінійну регресійну модель.
Ось код, за допомогою якого я використовую бібліотеку 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-квадрата 0,981434611923
а другий - метод лінійної моделі бібліотеки scikit:
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 ми не використовували тестовий набір даних)? З моїх минулих знань, ми маємо працювати з даними тестів.
- Чим відрізняється OLS від лінійної регресії scikit. Який із них ми використовуємо для обчислення оцінки моделі?
Дякуємо за будь-яку допомогу.