Làm thế nào để chuẩn bị các tương tác của các biến phân loại trong scikit-learn?


9

Cách tốt nhất để chuẩn bị các tương tác của các tính năng phân loại trước khi phù hợp với scikit-learn là gì?

Với statsmodelstôi có thể thuận tiện nói theo kiểu R smf.ols(formula = 'depvar ~ C(var1)*C(var2)', data=df).fit()(tương tự trong Stata với regress depvar i.var1##i.var2).

Có thể sklearn.preprocessing.PolynomialFeatures(trong v0.15, hiện tại dev) có thể được sử dụng với các biến phân loại không?

Câu trả lời:


8

Thật vậy, bạn có thể sử dụng Patsy với scikit-learn để có được kết quả giống như bạn nhận được với R hoặc với ký hiệu công thức trong các mô hình thống kê. Xem mã dưới đây:

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)

bây giờ bạn có thể sử dụng bất kỳ mô hình nào được triển khai trong scikit-learn với các ký hiệu thông thường có X là biến độc lập và y là biến phụ thuộc.


Điều gì xảy ra nếu chúng ta muốn có một LHS trống? ( ~var1*var2hoàn toàn ổn trong R khi xây dựng ma trận RHS)
MichaelChirico

(bạn nên đề cập dmatrix)
MichaelChirico

8

Sử dụng Patsy .

Patsy là một trong những thư viện Python yêu thích của tôi: nó làm một việc, và chỉ có một điều, thực sự rất tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.