我试图学习如何使用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
答案 0 :(得分:0)
我认为你几乎用文档中的引用回答了你自己的问题:
(FeatureUnion无法检查两个变换器是否可能产生相同的特征。当特征集不相交时,它只产生一个联合,并确保它们是调用者的责任。)
FeatureUnion
无法确保功能不同。
在Iris数据集的示例中,PCA和特征选择过程可能(尽管极不可能)生成相同的特征。在这种情况下,您在FeatureUnion
的输出中只有两倍相同的功能。
这通常并不是一件大事,但如果你可以避免它,那么它可能更干净(例如,随机森林模型会偏向于存在多次的特征,如它被选为分裂节点的候选者的概率更高。
为了更清楚一点,我认为除了避免组合明显在FeatureUnion中创建重复功能的特征提取过程之外,您还可以做很多事情。