2016-12-10 190 views
2

我有一個字符串數組形式的文本分類數組,例如 y_train = ['A', 'B', 'A', 'C',...]。我正在嘗試應用SKlearn多項式NB算法來預測整個數據集的類。將分類變量從字符串轉換爲int表示

我想string類轉換成整數能輸入到算法和轉換['A', 'B', 'A', 'C', ...]['1', '2', '1', '3', ...]

我可以寫一個for循環來遍歷數組,並創建一個新的與詮釋分類,但有一個直接的功能來實現這一

回答

1

如果你使用的是sklearn,我會建議你在這個庫中使用方法來爲你做這些事情。 Sklearn有許多預處理數據的方法,例如編碼標籤。其中之一是sklearn.preprocessing.LabelEncoder功能。

from sklearn.preprocessing import LabelEncoder 

le = LabelEncoder() 
le.fit_transform(y_train) 

,輸出

array([0, 1, 0, 2]) 

使用le.inverse_transform([0,1,2])映射回

+0

Thanks..it簡單明瞭! – Abhi

3

嘗試factorize方法:

In [264]: y_train = pd.Series(['A', 'B', 'A', 'C']) 

In [265]: y_train 
Out[265]: 
0 A 
1 B 
2 A 
3 C 
dtype: object 

In [266]: pd.factorize(y_train) 
Out[266]: (array([0, 1, 0, 2], dtype=int64), Index(['A', 'B', 'C'], dtype='object')) 

演示:

In [271]: fct = pd.factorize(y_train)[0]+1 

In [272]: fct 
Out[272]: array([1, 2, 1, 3], dtype=int64)