开发者学堂课程【Python 数据分析库 Pandas 快速入门:高级处理-数据离散化】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/607/detail/8862
高级处理-数据离散化
目录
一、什么是数据的离散化
二、为什么要离散化
三、如何实现数据的离散化
四、小结
一、什么是数据的离散化
(一)举例
这里有一组统计一个班级的各种身体指标的情况,里面包含对性别、年龄的统计,假设有A、B、C三个人,要求用数值来表示这些信息。
这时候需要表示类别,男或者女,首先想到用字符串来进行表示,直接在相对应
人名位置填男或者女,如果要进行运算,在字符串里面是无法进行运算的,只能是用数值进行运算,所以假设有3个字段,用数值去表示男、女怎么表示?
一种方法是假设 A、B、C 三个人,写上相对应的性别、年龄,然后用数值1表示A的性别男,数值23表示 A 的年龄,数值2表示B的性别女,数值30表示B的性别30,同样用数值1表示C的性别男,18表示 C 的年龄。进行计算,计算机无法识别上面的数值是用来表示性别的,当计算机看到 A 是1,B 是2,它只会识别为B在某种程度上比A更有优势,或者值比较大,出现这种情况就比较奇怪,这样一来,用编号的形式表示男女是不合适的。
如果只是性别还好只有两个类别,如果是物种。比如还是用 A、B、C、比如这里有动物、毛发等,比如 A 是狗用1表示;B 是猪用2表示;C 是老鼠用3表示,依次排列,计算机并不知道1是狗,2是猪,3是老鼠,它只会认为老鼠是3比猪是2大,这样表示就不太合适。
那我们该怎样用数值去表示这些类别和信息比较合适?用这样的一种表示方法,比如:性别总共有两种情况,A 如果是男的话,在男的位置标记1,然后年龄23,B 是女,在女对应的位置标记0,年龄30,C 是男的,在男的位置标记1,女的位置标记0。这样表示就避免了上面描述的会遇到的问题,避免了由于数值上的差异而导致的平衡。同样的表示物种,狗、猪、老鼠三个物种,三种情况。比如A是狗就在狗的位置标记1、猪的位置是0,老鼠的位置是0,毛发多的用2表示,以此类推,相应表示即可。
(二)数据离散化的概念
讲义概念:连续属性的离散化就是将连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值在每个子区间中的属性值。
举例:这里有一组身高数据,我想对不同的人的身高做一个统计,但是不想用数值来表示每个人具体的值,而是把它分成不同的类别,分成矮个子、中等身高、高个子三个类别,这样我们得到相应的分组,如下图所示:
根据分组要求,我们这8个人分成了三个类别:矮、中、高。
我们如果想用数值来进行表示,就可以用刚刚学到的方法。比如165在第一个区间段,所以在矮、中、高三个区间段中在矮,标记为1;中、高分别标记为0。依此类推,比如174在中间这个区间段,在中间标记为1,其他的矮和高标记为0。剩余的都是这样表示的。而这种对数据的表示方法就叫做数据的离散化。
二、为什么要离散化
我们刚刚一开始引入的时候,例举了那么多例子,其实就是为了让大家理解为什么要这样操作。
以上提到的数据就是当我们想要表示类别的时候,我们就用这种可能性去标记1、0的这种方式来表示数据,使得类别与类别之间是比较平衡和公平的,我们把这种表示方法就称为数据的离散化。而这种表示形式我们给它取一个名字叫做 one-hot 编码&哑变量。
三、如何实现数据的离散化
我们刚刚得到的数据都是通过手动完成的,那么我们如何在这个软件中完成呢?两步就可以完成。
第一步:分组;
a:自动分组 pd.qcut(data,bins)
b:自定义分组 pd.cut(data,[])
第二步:将分组好的结果转换成 one-hot 编码&哑变量;
pd.qet_dummies(sr,prefix=)
那学习了以上的方法后,我们就可以利用以上方法创建数据进行操作了。
上面是自动分组的方法,用自动分组并不能达到我们想要的例如书上的那种形式,所以我们要采用自定义分组的方法,以下是自定义分组的操作步骤:
利用以上方法,我们就可以利用代码来完成数据的离散化了。
接下来,我们再来看一个案例
案例:股票的涨跌幅离散化
操作步骤:
第一步:读取股票的数据;
第二步:将股票的涨跌幅数据进行分组;
第三步:股票涨跌幅分组数据变成 one-hot 编码;
具体操作如下图所示:自动分组
自动分组根据上面例举的方法操作即可。
四、小结
(一)什么是数据离散化?
将一组连续的数据分成你需要的,然后用数值进行表示,就可以利用one-hot编码的形式进行表示。
(二)为什么要离散化
当我们想要进行数据的运算,运用常规的方法无法达到,只有数字才能进行运算,所以我们要将其转换为数值。如果只是简单的用1、2、3、4等表示就会产生歧义,所以就用one-hot编码的形式进行表示。
(三)如何实现数据的离散化
第一步:分组;
第二步:将分组好的数据编成码即可;