使用Feature Union时如何确保不相交的功能集

时间:2015-10-14 03:43:33

标签: python scikit-learn

我试图学习如何使用sklearn中的一些辅助功能,但我正在努力了解如何使用FeatureUnion

文档的一部分说明了这个

  

(FeatureUnion无法检查两个变压器是否可能   产生相同的功能。它只在特征时产生联合   集合是不相交的,并确保它们是呼叫者的   责任。)

然而,Iris数据集上的一个示例显示了这个

X, y = iris.data, iris.target

# This dataset is way to high-dimensional. Better do PCA:
pca = PCA(n_components=2)

# Maybe some original features where good, too?
selection = SelectKBest(k=1)

# Build estimator from PCA and Univariate selection:

combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

# Use combined features to transform dataset:
X_features = combined_features.fit(X, y).transform(X)

如何确保pca和SelectKBest功能不会选择相同的功能,或者换句话说,用户如何确保两个选项不相交?

http://scikit-learn.org/dev/modules/pipeline.html#feature-union

http://scikit-learn.org/stable/auto_examples/feature_stacker.html#example-feature-stacker-py

1 个答案:

答案 0 :(得分:0)

我认为你几乎用文档中的引用回答了你自己的问题:

  

(FeatureUnion无法检查两个变换器是否可能产生相同的特征。当特征集不相交时,它只产生一个联合,并确保它们是调用者的责任。)

FeatureUnion 无法确保功能不同

在Iris数据集的示例中,PCA和特征选择过程可能(尽管极不可能)生成相同的特征。在这种情况下,您在FeatureUnion的输出中只有两倍相同的功能。

这通常并不是一件大事,但如果你可以避免它,那么它可能更干净(例如,随机森林模型会偏向于存在多次的特征,如它被选为分裂节点的候选者的概率更高。

为了更清楚一点,我认为除了避免组合明显在FeatureUnion中创建重复功能的特征提取过程之外,您还可以做很多事情。