0

私はclassificatorを構築するためのデータセットをしている:私は唯一の重要な機能を選択したいsklearnを使用して無駄な機能のリストを取得するには?

dataset = pd.read_csv(sys.argv[1], decimal=",",delimiter=";", encoding='cp1251') 
X=dataset.ix[:, dataset.columns != 'class'] 
Y=dataset['class'] 

ので、私は実行します。Xは3000x130を持っていながら、

clf=svm.SVC(probability=True, gamma=0.017, C=5, coef0=0.00001, kernel='linear', class_weight='balanced') 
model = SelectFromModel(clf, prefit=True) 
X_train, X_test, Y_train, Y_test = cross_validation.train_test_split(X, Y, test_size=0.5, random_state=5) 
y_pred=clf.fit(X_train, Y_train).predict(X_test) 
X_new = model.transform(X) 

だからX_newは形状3000x72を持っています。私はX_newに存在していない機能のリストを取得したいと思います。どうしたらいいですか?

Xはヘッダー付きのデータフレームでしたが、X_newは名前のないフィーチャー値のリストです。そのため、私はパンダと同じようにマージできません。 ありがとうございました!

+0

'X_new'と' X'がどのように見えるのか、出力はどうなるのでしょうか? –

答えて

0

clf.coef_は、体重のリストを返します(fit()以降に適用)。それを重みでソートすれば、それほど有用ではないことが分かります。

+0

私が誤っていないのであれば、私はすでにfromfrommodelによって得られた順序付けられた係数だけをフィーチャ名のリストに与えません – Polly

+1

あなたのクラシファイアは最初のDataFrameの名前について何も知らないので、 'weights = pd.DataFrame({'features':df.columns、 'weights':clf.coef _})' – arsenyinfo

+0

@arsenyinfoのようなものです。順序はあなたのオブジェクト(X)と同じです。 – sergzach

2

Feature Selectionをご覧ください。これは、より体系的にこれを行うためのいくつかのテクニックとツールを説明します。

0

このコードを実行してみてください:機能が選択されているかどうか

import pandas as pd 
import numpy as np 

dataset = pd.read_csv(sys.argv[1], decimal=",",delimiter=";", encoding='cp1251') 
X=dataset.ix[:, dataset.columns != 'class'].values 
Y=dataset['class'].values 
feature_names = data_churn.columns.tolist() 
feature_names.remove('class') 

from sklearn.feature_selection import SelectFromModel 
from sklearn.svm import SVC 
from sklearn.model_selection import train_test_split 
clf = SVC(probability=True, gamma=0.017, C=5, coef0=0.00001, kernel='linear', class_weight='balanced') 
model = SelectFromModel(clf, prefit=True) 
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.5, random_state=5) 
y_pred=clf.fit(X_train, Y_train).predict(X_test) 
X_new = model.transform(X) 
print pd.DataFrame(np.c_[feature_names, model.get_support(0)], 
         columns=[ 'feature_name', 'feature_selected']) 

「feature_selected」の列が表示されます。

関連する問題