快速将非数值型目标变量转化为数值型变量,比如把[‘L’,’M’,’N’]转化为[1,2,3]或多维向量类型
转化前:
df_train.y.value_counts()
C 620
R 477
G 361
M 353
L 267
T 216
E 87
Name: y, dtype: int64
法1:转化为一维型
from sklearn import preprocessing
# 获取目标变量列
data_y=df_train['y']
# 获取目标变量值
y_labels=list(data_y.value_counts().index)
# 创建标签预处理器
le=preprocessing.LabelEncoder()
le.fit(y_labels)
# 对每一个标签值进行映射
y=data_y.map(lambda x :le.transform([x])[0])
y.value_counts()
转化后:
0 620
5 477
2 361
4 353
3 267
6 216
1 87
Name: y, dtype: int64
法2:转化为多维型
from keras.utils.np_utils import to_categorical
from sklearn import preprocessing
# 获取目标变量列
data_y=df_train['y']
# 获取目标变量值
y_labels=list(data_y.value_counts().index)
# 创建标签预处理器
le=preprocessing.LabelEncoder()
le.fit(y_labels)
# 获取标签的类别数
num_labels=len(y_labels)
# 对每一个标签值进行映射
y=to_categorical(data_y.map(lambda x :le.transform([x])[0]),num_labels)
print(y[:5])
转化后:
array([[0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0., 0., 1.],
[0., 0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0.]])