机器学习 数据预处理之标签编码

5 篇文章 0 订阅
4 篇文章 0 订阅

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

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值