2016-11-15 7 views
-2
data: 

    children  pet salary 
0 4.0  cat  90 
1 6.0  dog  24 
2 3.0  dog  44 
3 3.0  fish 27 
4 2.0  cat  32 
5 3.0  dog  59 
6 5.0  cat  36 
7 4.0  fish 27 

code: 

from sklearn_pandas import DataFrameMapper, cross_val_score 
from sklearn.feature_selection import SelectKBest, chi2 
mapper_fs = DataFrameMapper([(['children','salary'], SelectKBest(chi2, k=2))]) 
mapper_fs.fit_transform(data[['children','salary']], data['pet']) 

result: 

array([[ 90.], 
    [ 24.], 
    [ 44.], 
    [ 27.], 
    [ 32.], 
    [ 59.], 
    [ 36.], 
    [ 27.]]) 

テストパンダのデータでSklearn機能の選択をコーディングしようとしていますが、結果を返すことができません。私は公式文書からコードの一部を取り出した。結果を知り尽くす方法を私に教えてください。同様に、もし私がpandasデータフレームにn個の列を持っていれば、データフレーム内のすべての列から最良のkを選択する方法です。パンダでのSklearn機能の選択

+1

あなたが使ったスキル方法は何をしていますか?それを読んで、それがあなたの質問に答えるかどうかを見てください。 – lordingtar

答えて

1

あなたは多くの理由のためにそれを間違った方法を行っているということであるについて、私は確信しているものをお使いのデータ列セットのK-最高機能を選択しようとしている場合は、その中:

  • DataFrameMapperあなたが唯一の2機能を持っているとき、あなたはあなたのデータセットのk=2最高の機能を取得したい
  • 全く役に立たない
  • あなたは fit機能にそれを与える前に、あなたのカテゴリ機能 data['pet']をエンコードする必要があり ここではあなたがそれを行うべきか

:アドバイスの

from sklearn.feature_selection import SelectKBest, chi2 

X = # your dataframe with n columns 
y = # target values - encoded if categorical 
# instanciate your selector 
selector = SelectKBest(chi2, k=...) # k < n, try something like int(round(n/10.)) 
# Fit it to your data 
selector.fit(X, y) # returns the selector itself but fitted 
# You can transform your data using the fit_transform method if you want 

# Now at this step you have reduce the dimensionality of your feature space. You can now perform a classification 

ワンピース: あなたは何かがどのように動作するか分からない場合は、ドキュメントを読むか、探してみてください一部のチュートリアルはオンラインです。あなた以外のDataFrameMapperを使って機能の選択をオンラインで見たことがありません...