Saya punya pertanyaan tentang dua metode berbeda dari perpustakaan yang berbeda yang tampaknya melakukan pekerjaan yang sama. Saya mencoba membuat model regresi linier.
Berikut adalah kode yang saya gunakan perpustakaan statsmodel dengan 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
Ini mencetak GFT + Wiki / GT R-squared 0.981434611923
dan yang kedua adalah scikit learning library Metode model linear:
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)
Ini mencetak GFT + Wiki / GT R-squared: 0,8543
Jadi pertanyaan saya adalah kedua metode mencetak hasil R ^ 2 kami tetapi satu mencetak 0,98 dan yang lainnya 0,85.
Dari pemahaman saya, OLS bekerja dengan dataset pelatihan. Jadi pertanyaan saya,
- Apakah ada cara yang berfungsi dengan set data uji dengan OLS?
- Apakah skor set data traning memberi kami arti (Di OLS kami tidak menggunakan set data uji)? Dari pengetahuan saya sebelumnya, kami harus bekerja dengan data uji.
- Apa perbedaan antara OLS dan regresi linier scikit. Yang mana yang kita gunakan untuk menghitung skor model?
Terima kasih atas bantuannya.
sumber
exog
untuk dimasukkan dalam estimasi dan perkiraan.Dalam model OLS Anda menggunakan data pelatihan untuk menyesuaikan dan memprediksi.
Dengan model LinearRegression Anda menggunakan data pelatihan untuk menyesuaikan dan menguji data untuk memprediksi, oleh karena itu hasil yang berbeda dalam skor R2.
Jika Anda akan mengambil data uji dalam model OLS, Anda harus memiliki hasil yang sama dan nilai yang lebih rendah
sumber
Saya telah mengalami masalah serupa di mana OLS memberikan nilai Rsquared dan Adjusted Rsquared yang berbeda dibandingkan dengan model Sklearn LinearRegression.
Alasan untuk itu: OLS tidak menganggap, sebagai default, koefisien intersepsi dan di sana membangun model tanpa itu dan Sklearn mempertimbangkannya dalam membangun model.
Solusi: Tambahkan kolom 1's ke dataset dan sesuaikan model dengan OLS dan Anda akan mendapatkan Rsquared dan Adj yang hampir sama. Nilai rsquared untuk kedua model.
sumber