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

    相关问题