机器学习Notes之编码转换

对于某一个特征,比如频率,原始数据可能时low、mid、high这种字符类型,模型是没办法利用这些信息的,所以应当把这种字符类型的变量转变成数值类型的变量。
pandas实现:
最常用的是pd.factorize(),返回值为一个元组,分别表示转换之后的数字和原来的index。我们应该取元组的第一个元素作为我们的结果。

data = pd.read_csv('../dataset/dataTrain.csv')
data["f3"] = pd.factorize(data["f3"])[0]

但是这种方法有个缺点,先出现的编码小,后出现的编码大。比如频率越高,编码的值应该越大,但是pd.factorize()就捕捉不到这个特征,此时我们可以使用map映射。

data = pd.read_csv('../dataset/dataTrain.csv')
col_mapping = {
    "low": 0,
    "mid": 1,
    "high": 2
}
data.f3 = data.f3.map(col_mapping)

sklearn实现:和One-Hot编码相似,先fit,然后再transform

data = pd.read_csv('../dataset/dataTrain.csv')
cat_columns = ['f3']
for col in cat_columns:
    lb = LabelEncoder()
    lb.fit(data[col])
    data[col] = lb.transform(data[col])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值