2017-04-18 22 views
1

フィーチャ選択データセットで予測しようとしたときに発生した1つの問題フィーチャを選択すると、テストデータセットを予測する場合、テストデータセットのフィーチャが整列しない訓練データセットは特徴選択のために特徴が少ないからである。テストデータセットがトレーニングデータセットと同じ機能を持つようにフィーチャ選択を適切に実装するにはどうすればよいですか?フィーチャ選択の実装

例:私はあなたがSelectKBest最初にしてtransformテストデータをフィッティングすることによりfeature_selectorオブジェクトを作成したいと考えてい

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) 
+0

...そして* fit_transform'' *使用いけないが、ちょうど 'transform'。 –

+0

@ juanpa.arrivillaga私の唯一の懸念は、テストデータセットにフィーチャ選択を実装するときです。トレーニングデータセットのフィーチャセットとは異なるフィーチャセットを取得する可能性はありますか? – user

+1

その理由のために、テストデータであなたは*選択しません。 –

答えて

2

あなたはテストがあまりにも設定transform ...そして使用fit_transformが、ちょうどtransformいけないしなければなりません。これは、の効果にあなたのSelectKBestオブジェクトなので、何かを保存する必要があります:あなたは `あなたのテストがあまりにも設定する必要がtransform`

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

。これと同じように:

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) 
関連する問題