Python 实现特征选择
我在尝试使用特征选择的数据集进行预测时遇到的一个问题是,一旦选择了某些特征,如果要在测试数据集上进行预测,测试数据集的特征将不会对齐,因为由于特征选择,训练数据集的特征将减少。如何正确实施特征选择,以使测试数据集具有与训练数据集相同的特征 例如:Python 实现特征选择,python,machine-learning,scikit-learn,anomaly-detection,Python,Machine Learning,Scikit Learn,Anomaly Detection,我在尝试使用特征选择的数据集进行预测时遇到的一个问题是,一旦选择了某些特征,如果要在测试数据集上进行预测,测试数据集的特征将不会对齐,因为由于特征选择,训练数据集的特征将减少。如何正确实施特征选择,以使测试数据集具有与训练数据集相同的特征 例如: from sklearn.datasets import load_iris from sklearn.feature_selection import SelectKBest from sklearn.feature_selection imp
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)
我相信您希望通过首先拟合
SelectKBest
然后transform
您的测试数据来创建一个功能选择器对象。像这样:
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)
您还必须
转换您的测试集。。。不要使用fit\u 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)
您还必须转换您的测试集。。。不要使用fit_transform
,而只使用transform
@juanpa.arrivillaga。我唯一关心的是,当在测试数据集上实现特征选择时,是否有可能获得与训练数据集不同的特征集?出于这个原因,您不会在测试数据上进行特征选择。