美文网首页
数据预处理 - 类型转换(离散型)

数据预处理 - 类型转换(离散型)

作者: taon | 来源:发表于2019-10-13 16:12 被阅读0次

当我们拿到一个数据分析任务时,我们并不能直接调用数据挖掘算法来解决该问题。在实际的任务中,我们所面对的数据质量都不是特别的好,如果我们对质量较差的数据集直接应用算法建模,那么得到结果也可想而知。所以在调用算法之前,必须对数据进行预处理工作。数据预处理是整个数据挖掘过程中最累的一部分工作,但也是非常重要的一部分工作,只要得到质量较高的数据集,后期的建模工作才会更有意义。数据预处理涉及的方面非常的多,如缺失值处理,异常值处理,重复值处理,数据类型转换,样本处理等等。


Data Science.jpg

这一小节,我们先来了解下数据类型转换中的离散型数据转换。在调用算法对数据集进行训练时,算法并不能识别这些离散型的数据(例如:Male, Female),所以,我们就需要将这些离散型数据转换为计算机可识别的数值型数据(如:0,1,2...)。

这里我们介绍4种离散型数据的处理方法,其中两种是使用python的pandas库进行处理,另外两种是使用python的sklearn库进行处理。

导入数据集:
链接:https://pan.baidu.com/s/14nMqBH1kHm_CJWp_7mNE5w
提取码:i75t

import pandas as pd
import numpy as np
pk = pd.read_csv('D:\\Py_dataset\\Pokemon.csv')
pk.head()
Pokemon dataset.png

查看各个特征的类型:

print(pk.dtypes)
Pokemon dtypes.png

我们所说的离散型数据就是object和bool类型的数据,计算机无法直接处理这两类数据,所以我们需对它们做类型转换。
我们选取其中的"Generation"特征作为例子,可以看出"Genaration"特征中有6个类别值,然后分别使用4种方法对其进行处理。

print(pk['Generation'].unique())
['Gen 1' 'Gen 2' 'Gen 3' 'Gen 4' 'Gen 5' 'Gen 6']

1.Pnadas.map()

首先构造映射字典,然后将原始特征映射为新的特征。

#构造映射字典
pk_map = {'Gen 1':1, 
          'Gen 2':2, 
          'Gen 3':3, 
          'Gen 4':4, 
          'Gen 5':5, 
          'Gen 6':6}
#将原始的特征映射为新的特征
pk['Generation_label'] = pk['Generation'].map(pk_map)
#查看新特征中的数据leibie
pk['Generation_label'].unique()
array([1, 2, 3, 4, 5, 6], dtype=int64)

2.Pandas.get_dummies()

get_dummies采用的是one_hot encoding的编码方式,它将特征中的每一个类别值都编码为0,1两种,存在即为1,不存在即为0。

Gen = pd.get_dummies(pk['Generation'])
#随机选取几行结果进行观察
Gen.iloc[581:588]
pd.get_dummies.png

上图便是pd.get_dummies()的操作结果,若对数据进行后续操作,使用pd.concat([pk,gen],axis=1)将两份数据集进行合并。

3.sklearn.preprocessing.LabelEncoder

LabelEncoder方法会将原特征中不同的类别从0开始进行编码,0,1,2,3.....

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
pk['Gen_le'] = le.fit_transform(pk['Generation'])
print(pk['Gen_le'].unique())
[0 1 2 3 4 5]

4.sklearn.preprocessing.OneHotEncoder

OneHotEncoder方法,从名字上看,与pd.get_dummies()方法是一样的。

from sklearn.preprocessing import OneHotEncoder,LabelEncoder

gen_le = LabelEncoder()
pk['Generation1'] = gen_le.fit_transform(pk1['Generation'])
ohe = OneHotEncoder()
gen_ohe = OneHotEncoder().fit_transform(pk[['Generation']]).toarray()
gen = pd.DataFrame(gen_ohe,columns = list(gen_le.classes_))
gen.head()
onehotencoder方法.png

总结:

离散型数据转化为数值型数据有4种方法[pandas.map(), pandas.get_dummies(), LabelEncoder(), OneHotEncoder()],在平时的数据处理中,我们选择其中的一种就可以。

相关文章

  • 数据预处理 - 类型转换(离散型)

    当我们拿到一个数据分析任务时,我们并不能直接调用数据挖掘算法来解决该问题。在实际的任务中,我们所面对的数据质量都不...

  • 机器学习:数据处理、算法选择、算法验证

    1. 数据处理 转换数据格式 比如将名称用数字表示、浮点数转为整数 特征值的类型 离散型还是连续型,这会影响算法的...

  • Day4—循环和分支

    1 数据类型的转换 数据类型转换即为int(整型)、float(浮点型)、bool(布尔型)、str(字符串型)等...

  • 一二三四,保持队型

    数据,分为两种类型,一种是离散型数据,一种是连续型数据。 离散型数据:指某些既定的值。比如投掷一个骰子,有1、2、...

  • JAVA的类型转换

    基本数据类型之间的转换(值转换) boolean类型不可以和其他基本数据类型进行转换 整型,字符型,浮点型之间的转...

  • day04-python中的循环与分支结构

    01-数据类型转换 1、数据类型的自动转换(主要是整型和浮点型之间自动转换) 2、数据类型的强制转换格式:类型名(...

  • 基本数据类型转换

    boolean 类型不可以转换为其他的数据类型 整形 字符型 浮点型的数据在混合运算中相互转换,转换时遵循以下原则...

  • java向上转型、向下转型

    整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型;b...

  • Python数据预处理

    数据预处理是指在对数据进行数据挖掘之前,先对原始数据进行必要的清洗、集成、转换、离散和规约等一系列的处理工...

  • 01python入门

    一.数据类型转换 1.浮点型转换成整形 a = 4.052 b = int(a) print(b) 2.字符型转换...

网友评论

      本文标题:数据预处理 - 类型转换(离散型)

      本文链接:https://www.haomeiwen.com/subject/okrnpctx.html