Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 实现特征选择_Python_Machine Learning_Scikit Learn_Anomaly Detection - Fatal编程技术网

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。我唯一关心的是,当在测试数据集上实现特征选择时,是否有可能获得与训练数据集不同的特征集?出于这个原因,您不会在测试数据上进行特征选择。