1、什么是标签编码
将字符型的特征映射为整数(将字符串转换为整数)但没有被广泛使用因为求平均值之类的数据会出现问题(不过具体需求具体分析)
有[dog,cat,dog,mouse,cat],我们把其转换为[1,2,1,3,2]。这里就产生了一个奇怪的现象:dog和mouse的平均值是cat。所以目前还没有发现标签编码的广泛使用(不过在决策树,随机森林对数据值不做要求的算法中是常见的)
调用库包代码
import numpy as np
import sklearn.preprocessing as sp
samples = np.array([
"盖伦","正义之剑","tanke",
"cike","吃火锅","timo","sad",
"lijinlei ","卡特","帅哥","傻逼","timo"
])
lab = sp.LabelEncoder() #标签编码器
new_samples = lab.fit_transform(samples) #用标签编码器对样本编码
print(new_samples)
n = [7, 1, 4, 3]
raw = lab.inverse_transform(n) #用已有的标签编码器对列表反向解码
print("".join(raw)) #取出raw中的每一个元素用空字符串链接
实际案例中也可以用pandas库包中的get_dummies函数
案例代码
df = pd.read_csv('./mydata.csv', names=["area","size","3","price","ori","bed","7"])
data = df.loc[:,["size","bed","ori","price"]]
print(data.head())
# 用pandas中的方法
# 对方向列进行独热编码
dummies_ori = pd.get_dummies(df["ori"],prefix="方向_") #以样本中的方向特征值为横坐标相同的省略 一样本个数为纵坐标
# 对区域列进行独热编码
dummies_area = pd.get_dummies(df["area"],prefix="区域_") #以样本中的区域特征列的值为横左边,样本个数为横坐标
data = pd.concat([dummies_ori,data,dummies_area],axis=1) #横向拼接
print(data.head())
data.to_csv("./new1_data.csv")
mydata.csv数据获取地址
链接: https://pan.baidu.com/s/1w-I_PTzwHUaaPEtvrbA8jQ
提取码: 42hb