Abh*_*bhi 4 numpy pandas scikit-learn
我有一个以字符串数组形式的文本分类的numpy数组,即
y_train = ['A', 'B', 'A', 'C',...].我正在尝试应用SKlearn多项式NB算法来预测整个数据集的类.
我想将String类转换为整数,以便能够输入到算法中并转换['A', 'B', 'A', 'C', ...]为['1', '2', '1', '3', ...]
我可以编写一个for循环来遍历数组并使用int分类器创建一个新的但是有一个直接的函数来实现这一点
Max*_*axU 10
尝试分解方法:
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'))
Run Code Online (Sandbox Code Playgroud)
演示:
In [271]: fct = pd.factorize(y_train)[0]+1
In [272]: fct
Out[272]: array([1, 2, 1, 3], dtype=int64)
Run Code Online (Sandbox Code Playgroud)
如果您正在使用 sklearn,我建议您坚持使用该库中为您执行这些操作的方法。Sklearn 有多种预处理数据的方法,例如编码标签。其中之一是sklearn.preprocessing.LabelEncoder功能。
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit_transform(y_train)
Run Code Online (Sandbox Code Playgroud)
哪些输出
array([0, 1, 0, 2])
Run Code Online (Sandbox Code Playgroud)
使用le.inverse_transform([0,1,2])映射回
另一种方法是使用数据框的 astype('category').cat.codes 将字符串值转换为数字
X=df[['User ID', 'Gender', 'Age', 'EstimatedSalary']]
X['Gender']=X['Gender'].astype('category').cat.codes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5225 次 |
| 最近记录: |