【问题标题】:Scikit - Polynomial Regression with Booleans and feature selectionScikit - 具有布尔值和特征选择的多项式回归
【发布时间】:2016-06-22 07:21:35
【问题描述】:

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

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

到目前为止我的代码:

poly = PolynomialFeatures(degree=2)
X_ = poly.fit_transform(X_train)
  1. 如何为多项式回归进行特征选择?因为为 36 个变量创建 2 次多项式特征会大大增加 X 的大小。是否有一种方法可以运行选择,例如返回基于 MSE 的最佳模型?

【问题讨论】:

    标签: python scikit-learn regression feature-selection non-linear-regression


    【解决方案1】:
    1. 确实,取布尔特征的平方是没有意义的。一种解决方案是将 PolynomialFeatures 与选项 interaction_only=True 一起使用,这样您就只能获得他们的产品。布尔值的乘积实际上是 AND。您也可以编写自己的函数来获取其他组合,例如 OR 或 XOR。

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

    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,然后删除任何重复的特征 [这将是布尔特征的平方]。在这里查看stackoverflow.com/questions/14984119/…
    猜你喜欢
    • 2013-03-07
    • 2020-05-01
    • 2017-01-18
    • 1970-01-01
    • 2020-01-14
    • 2013-09-26
    • 2019-07-18
    • 2018-02-24
    • 2017-12-19
    相关资源
    最近更新 更多