1

我試圖從一組特徵X中預測變量y,其中X在起始處是36個特徵。我有兩個問題:Scikit - 布爾值和特徵選擇的多項式迴歸

  1. 如何在創建多項式特徵時處理布爾屬性(0,1)?例如,將它們排列在一起是沒有意義的。

代碼,我至今:

poly = PolynomialFeatures(degree=2) 
X_ = poly.fit_transform(X_train) 
  • 如何使多項式迴歸特徵選擇?因爲爲36個變量創建2次多項式特徵會劇烈地增加X的大小。有沒有一種方法來運行選擇,例如基於MSE返回最佳模型?
  • 回答

    0
    1. 誠然,在服用的布爾功能方塊是沒有意義的。一種解決方案是使用PolynomialFeatures和選項interaction_only = True,因此您只能獲得他們的產品。布爾的情況下的產品實際上是AND。您也可以編寫自己的函數來獲取其他組合,如OR或XOR。

    2. 根據原始特徵的數量,對所有可能的特徵組合進行徹底搜索可能耗時也可能不耗時。我想這是後一種情況。然後,您可以:

    一)使用LASSO regression(或elastic net)自動執行變量選擇

    B)嘗試出於同樣的原因樹基方法(例如random forest

    C)嘗試一些功能選擇方法(如chi-square

    +0

    感謝您的回覆!但是如何處理包含布爾和數字特徵的特徵集呢?例如兩個特徵x1,x2,其中x1是布爾值。如何生成函數如y = x0 + w1 * x1 + w2 * x2 + w3 * x1x2 + w4 *x²?所以忽略更高階的布爾值,只產生交互作用,但爲x2產生更高的多項式? – Alanovic

    +0

    你沒有提到你在初始文章中有布爾和數字特徵。無論如何,如果你不想編寫自己的函數來完成它,你可以使用PolynomialFeatures和interaction_only = False,然後刪除任何重複的特徵[這將是布爾特徵的平方]。在這裏檢查http://stackoverflow.com/questions/14984119/python-pandas-remove-duplicate-columns – Stergios