Scikit - 具有布尔值和特征选择的多项式回归
Posted
技术标签:
【中文标题】Scikit - 具有布尔值和特征选择的多项式回归【英文标题】:Scikit - Polynomial Regression with Booleans and feature selection 【发布时间】:2016-06-22 07:21:35 【问题描述】:我试图从一组特征 X 中预测变量 y,其中 X 在开始时是 36 个特征。我对此有两个问题:
-
如何在创建多项式特征时处理布尔属性 (0,1)?例如,将它们平方是没有意义的。
到目前为止我的代码:
poly = PolynomialFeatures(degree=2)
X_ = poly.fit_transform(X_train)
-
如何为多项式回归进行特征选择?因为为 36 个变量创建 2 次多项式特征会大大增加 X 的大小。是否有一种方法可以运行选择,例如返回基于 MSE 的最佳模型?
【问题讨论】:
【参考方案1】:确实,取布尔特征的平方是没有意义的。一种解决方案是将 PolynomialFeatures 与选项 interaction_only=True 一起使用,这样您就只能获得他们的产品。布尔值的乘积实际上是 AND。您也可以编写自己的函数来获取其他组合,例如 OR 或 XOR。
根据原始特征的数量,对所有可能的特征组合执行详尽搜索可能会也可能不会耗时。我猜是后一种情况。那么你可以:
a) 使用自动执行变量选择的LASSO regression(或elastic net)
b) 出于同样的原因尝试基于树的方法(例如 random forest)
c) 尝试一些特征选择方法(例如chi-square)
【讨论】:
感谢您的回复!但是如何处理同时包含布尔和数字特征的特征集呢?例如两个特征 x1,x2 其中 x1 是布尔值。如何生成像 y = x0 + w1*x1+ w2*x2 + w3*x1x2 + w4*x² 这样的函数?所以忽略更高程度的布尔值,只为它生成交互,但为 x2 生成更高的多项式? 您在最初的帖子中没有提到您同时具有布尔和数字功能。无论如何,如果您不想编写自己的函数来执行此操作,则可以使用带有 interaction_only=False 的 PolynomialFeatures,然后删除任何重复的特征 [这将是布尔特征的平方]。在这里查看***.com/questions/14984119/…以上是关于Scikit - 具有布尔值和特征选择的多项式回归的主要内容,如果未能解决你的问题,请参考以下文章
机器学习系列6 使用Scikit-learn构建回归模型:简单线性回归多项式回归与多元线性回归
在 scikit learn 中训练具有不同特征维度的逻辑回归模型