Python 对数据one-hot编码

本文介绍了Python中离散特征的两种编码方式:标签处理和one-hot编码。对于有大小关系的变量,采用标签映射;而对于无大小关系的标签,使用one-hot编码。文中详细讲解了如何使用pd.cut进行连续变量的离散化,并探讨了merge与join在合并数据时的区别。
摘要由CSDN通过智能技术生成

目录

 

离散特征的编码分为2种情况:

连续变量的离散化处理

法1.标签的处理:

法2.计算指标/哑变量one-hot编码

结合pd.cut,处理连续变量

合并():要注意使用merge还是join


离散特征的编码分为2种情况:

1.我们在进行那些有大小关系的变量离散,小雨,中雨,大雨,

{“小雨”:1,“中雨”:2,“雨天”:3},这里面有一定数量的大小关系,这种映射的讲解在法1:标签的处理

2.只是换个名字的标签处理晴天,阴天,雨天这种标签没有大小的关系,那就考虑one-hot编码,或者说产生哑变量。

连续变量的离散化处理

比如说,分数,需要将数据划分为“0到60”,“61到79”,“79到100”几个分数组。用的是pd.cut(data,bins),这里的data是我们要分割的分数数据,bins是[0,60,79,100]。类似函数可学习pd.qcut

import pandas as pd
df = pd.DataFrame({"key":['green','red', 'blue'],
            "data1":['a','b','c'],"sorce": [33,61,99]})
bins=[0,61,80,100]
cats=pd.cut(df["sorce"],bins)
print(cats)
group_name=["不及格","及格","优秀"]
cats2=pd.cut(df["sorce"],bins,labels=group_name,right=False)
#df["sorce"]为数据
#bins指定划分
#right指定区间闭合方向
#labels指定切分结果的标签
print(cats2)
############结果
0      (0, 61]
1      (0, 61]
2    (80, 100]
Name: sorce, dtype: category
Categories (3, object): [(0, 61] < (61, 80] < (80, 100]]
0    不及格
1     及格
2     优秀
Name: sorce, dtype: category
Categories (3, object): [不及格 < 及格 < 优秀]

那我们可以设计0-60分的需要编码为1,61-79为合格,80-100为优秀,这个和上面的第一条类似,只是需要一个数据划分的步骤,详见法2的相关处理。

pd.cut(data,4,precision=2) ,根据最大值与最小值计算等长面元长度。将数据分成4组(无法使各个面元中含有相同数量的数据点)精确度2位小数。

pd.qcut(data,[0,0.1,0.5,0.9,1]),根据样本分位数bins对数据进行面元划分,设置的是自定义分位数,0到1之间的数值,包含端点

法1.标签的处理:

#建立对应关系
label2current_service = dict(zip(range(0, len(set(df['current_service']))), sorted(list(set(df['current_service'])))))

current_service2label = dict(zip(sorted(list(set(df['current_service']))), range(0, len(set(df['current_service'])))))

# 原始数据的标签映射
df['current_service'] = df['current_service'].map(current_service2label)

#df['current_service']是一列代表类别的数据,上面是重新编码
from sklearn import  svm
clf = svm.SVC(decision_function_shape='ovr')
clf.fit(X_trainData, df['current_service'])

y_test_predi
  • 9
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值