【问题标题】:Implementing feature selection实现特征选择
【发布时间】:2017-09-14 17:15:43
【问题描述】:

我在尝试使用特征选择数据集进行预测时遇到的一个问题是,一旦您选择了某些特征,如果您要在测试数据集上进行预测,测试数据集的特征将不会对齐,因为训练由于特征选择,数据集将具有较少的特征。您如何正确实施特征选择,以使测试数据集具有与训练数据集相同的特征?

例子:

 from sklearn.datasets import load_iris
 from sklearn.feature_selection import SelectKBest
 from sklearn.feature_selection import chi2
 iris = load_iris()
 X, y = iris.data, iris.target
 X.shape
(150, 4)
 X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
 X_new.shape
(150, 2)

【问题讨论】:

  • 你也必须transform你的测试集......并且不要使用fit_transform,而只使用transform
  • @juanpa.arrivillaga 我唯一关心的是在测试数据集上实现特征选择时,是否有可能获得与训练数据集不同的特征集?
  • 出于这个原因,您对测试数据进行特征选择。

标签: python machine-learning scikit-learn anomaly-detection


【解决方案1】:

你也必须transform你的测试集......并且不要使用fit_transform,而只是transform。这需要你保存你的 SelectKBest 对象,所以效果如下:

selector = SelectKBest(chi2, k=2)
X_train_clean = selector.fit_transform(X_train, y_train)
X_test_clean = selector.transform(X_test)

【讨论】:

    【解决方案2】:

    我相信您想通过首先拟合 SelectKBest 然后 transform 您的测试数据来创建一个 feature_selector 对象。像这样:

    feature_selector = SelectKBest(chi2, k=2).fit(X_train, y)
    X_train_pruned = feature_selector.transform(X_train)
    X_test_pruned = feature_selector.transform(X_test)
    

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 2019-08-13
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2013-04-26
      相关资源
      最近更新 更多