@TOC
前言
离散化是数据清洗中,非常重要的一部分,后续的标准化、异常值处理、模型等,都需要将一些文本数据进行离散化。这里我将离散化分为两大类别,数值型数据离散化,字符数据离散化
一、字符数据离散化
将字符离散化,是为了后续的数据清洗能够正常进行,因为带有字符的数据无法进行很多数据清洗操作,这里以数据的'报告类型','会计准则','货币代码',作为举例,进行说明。
1.1 onehot独热
代码语言:python代码运行次数:0复制利用独热编码进行处理,将出现过的字符进行独热处理,变为多维。
import pandas as pd
emb_dummies_df = pd.get_dummies(data['会计准则'],prefix=data[['会计准则']].columns[0])
#prefix表示列名在值的前面要添加的字符串
emb_dummies_df
可以通过独热编码将该列的值,转化多维的数字表示,但是会导致维度上升,增大计算量。还可以通过k-means先将数据进行聚类之后再进行编码。
1.2 Factoring离散编码
代码语言:python代码运行次数:0复制刚刚是将单列变为多维的数据,用1、0表示是否有这个数字。而Factoring是将这一列的数字转化为1、2....n 取决于有多少个类,下面给出代码和例子
data['会计准则'] = pd.factorize(data['会计准则'])[0]
data[['会计准则']]
阶段性小总结: 这里用的都是单列的离散化处理,除了这些还有像TF-IDF这类的编码,常用于文本的分析,后续需要有空的话可能会继续更新一波.
二、数值数据离散化
2.1 Binning(数据分箱)
代码语言:python代码运行次数:0复制就是将数据按区域进行划分,比如1-30,30-100,100-1000进行划分得到不同的区域的类,以此进行分析。
#与区间的数学符号一致, 小括号表示开放,中括号表示封闭, 可以通过right参数改变
print(pd.cut(ages, bins, right=False))#qcut函数是根据均等距离划分
#单个列进行划分
train_data['Fare_bin'] = pd.qcut(train_data['Fare'],5) #5是指分成五份
#自定义范围划分
bins = [0,59,70,80,100]
df['Categories'] = pd.cut(df['score'],bins) #bins的各值作为区间的边
# 可以通过labels自定义箱名或者区间名 用于多个列进行划分
group_names = ['Youth', 'YonngAdult', 'MiddleAged', 'Senior']
data = pd.cut(ages, bins, labels=group_names)
print(data)
print(pd.value_counts(data))
# 如果将箱子的边替代为箱子的个数,pandas将根据数据中的最小值和最大值计算出等长的箱子
data2 = np.random.rand(20)
print(pd.cut(data2, 4, precision=2)) # precision=2 将十进制精度限制在2位
# qcut是另一个分箱相关的函数, 基于样本分位数进行分箱。取决于数据的分布,使用cut不会使每个箱子具有相同数据数量的数据点,而qcut,使用
# 样本的分位数,可以获得等长的箱
data3 = np.random.randn(1000) # 正太分布
cats = pd.qcut(data3, 4)
print(pd.value_counts(cats))
数据分箱(binning)是一种将连续变量离散化的方法,它将连续的数据范围划分成若干个有序的、互不重叠的区间,然后将数据映射到对应的区间中。数据分箱的意义在于:降低复杂度:对于某些机器学习算法来说,连续变量的处理可能会增加计算复杂度。分箱可以将连续变量转化为离散变量,降低计算复杂度,同时也便于处理缺失值和异常值。提高预测准确性:在一些场景下,离散化后的数据可以更好地揭示变量之间的关系,提高模型的预测准确性。例如,在信用评分模型中,将收入分成若干个等级可以更好地捕捉收入与违约率之间的非线性关系。方便解释和可视化:离散化后的数据更容易解释和可视化。例如,在营销分析中,将年龄分成若干个组可以更清楚地展示不同年龄段的人口分布和消费习惯。
总结
连续变量离散化: 连续变量离散化将连续的数据范围划分成若干个有序的、互不重叠的区间,然后将数据映射到对应的区间中。离散化后的数据可以更好地揭示变量之间的关系,提高模型的预测准确性。此外,连续变量离散化还可以降低计算复杂度,方便处理缺失值和异常值,并且更容易解释和可视化。字符离散化: 字符离散化将字符型数据转化为离散型数据。离散化后的数据可以更好地应用于分类、聚类、关联规则挖掘等算法中。例如,在文本分类中,将文本转化为词袋模型后,可以通过离散化将每个词语转化为一个特征,并将文本转化为一个向量。此外,字符离散化还可以方便数据处理,例如数据去重、数据压缩等。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!
推荐人: 计算机魔术师