LabelEncoder:
作用:将离散型的数据转换成 0 到 n − 1 之间的数,这里 n 是一个列表的不同取值的个数,可以认为是某个特征的所有不同取值的个数。
df = pd.DataFrame({'A':['a','a','b','c'], 'B':['b','C','c','C']})
model_label_encoder = LabelEncoder()
model_label_encoder.fit(df['B'].values)
df['C'] = model_label_encoder.transform(df['B'].values)
先构造encoder,通过fit函数传入需要编码的数据,在内部生成对应的key-value
然后encoder 用于需要转化的数据,用transform函数,上述代码执行之后将在df中增加新的一列'C',用于存储对'B'中数值的编码值。
OneHotEncoder:
作用:分类编码变量,将每一个类可能取值的特征变换为二进制特征向量,每一类的特征向量只有一个地方是1,其余位置都是0,如[A,B,C]转化后分别为[1,0,0],[0,1,0],[0,0,1]。
df = pd.DataFrame({'A':['a','a','b','c'], 'B':['b','C','c','C']})
print(df)
'''
A B C
0 a b 1
1 a C 0
2 b c 2
3 c C 0
'''
brand_onehot_encoder = OneHotEncoder()
print(df['B'].values)
'''
['b' 'C' 'c' 'C']
'''
brand_onehot_encoder.fit(df['B'].values.reshape(-1, 1)) # reshape(-1, 1)目的是将数据格式转化为单列形式;
te_brand_feat = brand_onehot_encoder.transform(df['B'].values.reshape(-1, 1))
print(te_brand_feat.toarray())
'''
[[0. 1. 0.]
[1. 0. 0.]
[0. 0. 1.]
[1. 0. 0.]]
'''