Scikit - 使用布尔值和特征选择的多项式回归

Scikit - Polynomial Regression with Booleans and feature selection

我正在尝试根据一组特征 X 预测变量 y,其中 X 开始时有 36 个特征。关于这个我有两个问题:

  1. 如何在创建多项式特征时处理布尔属性 (0,1)?例如,将它们平方是没有意义的。

我目前拥有的代码:

poly = PolynomialFeatures(degree=2)
X_ = poly.fit_transform(X_train)
  1. 如何进行多项式回归的特征选择?因为为 36 个变量创建 2 次多项式特征会显着增加 X 的大小。有没有一种方法可以 运行 选择 returns 基于 MSE 的最佳模型?
  1. 没错,取布尔特征的平方是没有意义的。一种解决方案是将 PolynomialFeatures 与选项 interaction_only=True 一起使用,这样您就只会得到他们的产品。布尔值的乘积实际上是一个 AND。您也可以编写自己的函数来获得其他组合,例如 OR 或 XOR。

  2. 根据原始特征的数量,对所有可能的特征组合进行穷举搜索可能会也可能不会耗时。我猜是后一种情况。那么你可以:

a) 使用LASSO regression (or elastic net) 自动执行变量选择

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

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