Python Scikit-带布尔和特征选择的多项式回归

Python Scikit-带布尔和特征选择的多项式回归,python,scikit-learn,regression,feature-selection,non-linear-regression,Python,Scikit Learn,Regression,Feature Selection,Non Linear Regression,我试图从一组特征X中预测一个变量y,其中X在开始时是36个特征。关于这一点,我有两个问题: 如何在创建多项式特征时处理布尔属性(0,1)?例如,将它们平方是没有意义的 到目前为止,我掌握的代码是: poly = PolynomialFeatures(degree=2) X_ = poly.fit_transform(X_train) 如何为多项式回归选择特征?因为为36个变量创建2次多项式特征会极大地增加X的大小。例如,是否有一种方法可以运行返回基于MSE的最佳模型的选择 诚然,采用布尔特征的

我试图从一组特征X中预测一个变量y,其中X在开始时是36个特征。关于这一点,我有两个问题:

  • 如何在创建多项式特征时处理布尔属性(0,1)?例如,将它们平方是没有意义的 到目前为止,我掌握的代码是:

    poly = PolynomialFeatures(degree=2)
    X_ = poly.fit_transform(X_train)
    
  • 如何为多项式回归选择特征?因为为36个变量创建2次多项式特征会极大地增加X的大小。例如,是否有一种方法可以运行返回基于MSE的最佳模型的选择
  • 诚然,采用布尔特征的平方毫无意义。一种解决方案是使用带有选项interaction_only=True的多项式特征,这样您只能得到它们的产品。布尔型的乘积实际上是AND。您也可以编写自己的函数来获得其他组合,如OR或XOR

  • 根据原始特征的数量,对所有可能的特征组合执行穷举搜索可能耗时,也可能不耗时。我想是后一种情况。然后你可以:

  • a) 使用自动执行变量选择的(或)

    b) 出于同样的原因尝试树基方法(例如)

    c) 尝试一些特征选择方法(例如)

  • 诚然,采用布尔特征的平方毫无意义。一种解决方案是使用带有选项interaction_only=True的多项式特征,这样您只能得到它们的产品。布尔型的乘积实际上是AND。您也可以编写自己的函数来获得其他组合,如OR或XOR

  • 根据原始特征的数量,对所有可能的特征组合执行穷举搜索可能耗时,也可能不耗时。我想是后一种情况。然后你可以:

  • a) 使用自动执行变量选择的(或)

    b) 出于同样的原因尝试树基方法(例如)


    c) 尝试一些功能选择方法(例如)

    谢谢您的回复!但是如何处理同时包含布尔和数字特征的特征集呢?例如,两个特征x1、x2,其中x1为布尔值。如何生成y=x0+w1*x1+w2*x2+w3*x1x2+w4*x²这样的函数?所以忽略高次的布尔值,只为它生成交互,而为x2生成高次多项式?你在最初的帖子中没有提到你同时具有布尔值和数字特征。无论如何,如果您不想编写自己的函数来执行此操作,您可以使用interaction_only=False的多项式特征,然后删除任何重复特征[即布尔特征的平方]。查看这里谢谢你的回复!但是如何处理同时包含布尔和数字特征的特征集呢?例如,两个特征x1、x2,其中x1为布尔值。如何生成y=x0+w1*x1+w2*x2+w3*x1x2+w4*x²这样的函数?所以忽略高次的布尔值,只为它生成交互,而为x2生成高次多项式?你在最初的帖子中没有提到你同时具有布尔值和数字特征。无论如何,如果您不想编写自己的函数来执行此操作,您可以使用interaction_only=False的多项式特征,然后删除任何重复特征[即布尔特征的平方]。检查这里