发布网友 发布时间:2022-12-09 16:34
共1个回答
热心网友 时间:2023-01-25 08:20
当我们拿到一个数据分析任务时,我们并不能直接调用数据挖掘算法来解决该问题。在实际的任务中,我们所面对的数据质量都不是特别的好,如果我们对质量较差的数据集直接应用算法建模,那么得到结果也可想而知。所以在调用算法之前,必须对数据进行预处理工作。数据预处理是整个数据挖掘过程中最累的一部分工作,但也是非常重要的一部分工作,只要得到质量较高的数据集,后期的建模工作才会更有意义。数据预处理涉及的方面非常的多,如缺失值处理,异常值处理,重复值处理,数据类型转换,样本处理等等。
这一小节,我们先来了解下数据类型转换中的离散型数据转换。在调用算法对数据集进行训练时,算法并不能识别这些离散型的数据(例如:Male, Female),所以,我们就需要将这些离散型数据转换为计算机可识别的数值型数据(如:0,1,2...)。
这里我们介绍4种离散型数据的处理方法,其中两种是使用python的pandas库进行处理,另外两种是使用python的sklearn库进行处理。
导入数据集:
链接: https://pan.baidu.com/s/14nMqBH1kHm_CJWp_7mNE5w
查看各个特征的类型:
我们所说的离散型数据就是object和bool类型的数据,计算机无法直接处理这两类数据,所以我们需对它们做类型转换。
我们选取其中的"Generation"特征作为例子,可以看出"Genaration"特征中有6个类别值,然后分别使用4种方法对其进行处理。
首先构造映射字典,然后将原始特征映射为新的特征。
get_mmies采用的是one_hot encoding的编码方式,它将特征中的每一个类别值都编码为0,1两种,存在即为1,不存在即为0。
上图便是pd.get_mmies()的操作结果,若对数据进行后续操作,使用pd.concat([pk,gen],axis=1)将两份数据集进行合并。
LabelEncoder方法会将原特征中不同的类别从0开始进行编码,0,1,2,3.....
OneHotEncoder方法,从名字上看,与pd.get_mmies()方法是一样的。
离散型数据转化为数值型数据有4种方法[pandas.map(), pandas.get_mmies(), LabelEncoder(), OneHotEncoder()],在平时的数据处理中,我们选择其中的一种就可以。