我有一个字符串数组形式的文本分类数组,例如 y_train = ['A', 'B', 'A', 'C',...]
。我正在尝试应用SKlearn多项式NB算法来预测整个数据集的类。将分类变量从字符串转换为int表示
我想string类转换成整数能输入到算法和转换['A', 'B', 'A', 'C', ...]
成['1', '2', '1', '3', ...]
我可以写一个for循环来遍历数组,并创建一个新的与诠释分类,但有一个直接的功能来实现这一
我有一个字符串数组形式的文本分类数组,例如 y_train = ['A', 'B', 'A', 'C',...]
。我正在尝试应用SKlearn多项式NB算法来预测整个数据集的类。将分类变量从字符串转换为int表示
我想string类转换成整数能输入到算法和转换['A', 'B', 'A', 'C', ...]
成['1', '2', '1', '3', ...]
我可以写一个for循环来遍历数组,并创建一个新的与诠释分类,但有一个直接的功能来实现这一
如果你使用的是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])
映射回
尝试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)
Thanks..it简单明了! – Abhi