Bagaimana menyiapkan interaksi variabel kategorikal dalam scikit-learning?

9

Apa cara terbaik untuk mempersiapkan interaksi fitur-fitur kategorikal sebelum disesuaikan dengan scikit-learn?

Dengan statsmodelssaya bisa dengan mudah mengatakan dalam gaya R smf.ols(formula = 'depvar ~ C(var1)*C(var2)', data=df).fit()(sama di Stata dengan regress depvar i.var1##i.var2).

Bisakah sklearn.preprocessing.PolynomialFeatures(dalam v0.15, saat ini dev) digunakan dengan variabel kategori?

tobip
sumber

Jawaban:

8

Memang Anda bisa menggunakan Patsy dengan scikit-belajar untuk mendapatkan hasil yang sama dengan yang Anda dapatkan dengan R, atau dengan notasi rumus dalam model statistik. Lihat kode di bawah ini:

from patsy import dmatrices

# create dummy variables, and their interactions
y, X = dmatrices('depvar ~ C(var1)*C(var2)', df, return_type="dataframe")
# flatten y into a 1-D array so scikit-learn can understand it
y = np.ravel(y)

Anda sekarang dapat menggunakan model apa pun yang diimplementasikan dalam scikit-belajar dengan notasi biasa memiliki X sebagai variabel independen, dan y sebagai variabel dependen.

famargar
sumber
bagaimana jika kita ingin memiliki LHS kosong? ( ~var1*var2baik-baik saja dalam R untuk membangun matriks RHS)
MichaelChirico
(Anda harus menyebutkan dmatrix)
MichaelChirico
8

Gunakan Patsy .

Patsy adalah salah satu perpustakaan Python favorit saya: ia melakukan satu hal, dan hanya satu hal, benar-benar sangat baik.

Cam.Davidson.Pilon
sumber