2016-12-19 44 views
1

我是熊貓新手,想知道處理字符串數據的最佳方法是什麼?我想用一個國旗編號字符串,但我相信有更好的方法來做到這一點?字符串值將被納入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使用熊貓快捷方式顯示(也可以通過scikit-learn中的LabelEncoder完成),但是這會使用特定的數字順序編碼食物類型的值感。肉是真的是水果的兩倍,豆比肉多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

相關問題