2016-12-19 16 views
1

私はpandasが新しく、文字列データを処理する最良の方法は何か不思議でしたか?私は旗で弦を番号付けすることを考えていましたが、これを行うためのよりよい方法があると確信していますか?文字列の値は、KNNにフィーチャーとして組み込まれます。数値フレームをデータフレーム内の文字列に設定する

次のデータを仮定し、私は私のタイプの番号が付けられたとします

enter image description here

単なる例: この意志は明らかに私にcould not convert string to float

knn = KNeighborsClassifier(n_neighbors=15) 
knn.fit(df['Type'], df['Quantity']) 

を与える行う方法はありますこれは数字に "タイプ"を作ることなく?

答えて

2

あなたが機能として、文字列値を受け入れない気づいているようScikit学習機能します。各文字列の値を数値に変換する必要があります。 @piRSquaredがpandasのショートカットで表示されているように(これはscikit-learnのLabelEncoderでも行えます)、フラグ列を追加することができますが、これは特定の数値順であなたの食品タイプの値をエンコードしますセンス。ミートは実際にフルーツの2倍で、ビーンは肉より50%多いです。

私はフルーツのあらゆる価値について新しい特徴を作​​るのに、pd.get_dummies(df['Type'])を個人的に使用します。

+0

本当に良い方法があると思いました。説明と他の提案をありがとう! – JamAndJammies

2

パンダを使用するには、factorize

df.Type.factorize() 

デモ

df = pd.DataFrame([ 
     [10000, 'Fruit'], 
     [500, 'Fruit'], 
     [100, 'Meat'], 
     [400, 'Fruit'], 
     [900, 'Meat'], 
     [5830, 'Meat'], 
     [2904, 'Bean'] 
    ], columns=['Quantity', 'Type']) 

df['Flag'] = df.Type.factorize()[0] 
df 

enter image description here

関連する問題