文章目录
一、定性数据的分类
数据可以按照数据的本质是数值的还是类别的分为定量数据和定性数据。通常来说,在这个基础上还可以将数据再分类,定性数据可以按照数据结构的强弱再细分为定序等级(ordinal level) 和 定类等级(nominal level)。
1.定序等级
定序等级的数据可以自然排序,即其取值不仅表示类别,而且它们之间具有可比较性。例如,调查问卷中的认可程度由低到高分为非常不赞同、比较不赞同、一般、比较赞同和非常赞同五个等级,如果用数值1-5分别表示这五个等级,那么数值5就表示比数值4更强的赞同度。
2.定类等级
定类等级的数据结构弱于定序等级,其取值仅仅表示某一个类别,数值之间的比较没有意义。例如,用0和1分别表示男性和女性,此时虽然1大于0,但这样的大小关系并无实际意义。
二、定性数据的编码
在解决实际问题的过程中,我们得到的原始数据往往是直接表示类别的字符串,例如"Male"和"Female","grade_A"和"grade_B"之类,此时如果要把它们表达的信息计入模型,就需要对这类变量进行合理的编码,将其转换为数值。但编码不是随便选用一种方式,而是要弄明白它们编码之后属于什么等级的数据才能找到相对应的编码方式。
1.定序等级编码
如果编码以后属于上述所说的定序等级,那么使用
sklearn.preprocessing.LabelEncoder
LabelEncoder()
LabelEncoder()的作用是将特征中的n种取值一一对应地编码为0到n-1的整数。例如,银行客户贷款的数据中有一个属性是客户的信用评级,评级最好的为A,最差的为D,样本数据为: B D B C A 。显然这个属性编码后数值的大小具有可比较性,是定序数据,于是选用LabelEncoder()对其编码:
from sklearn.preprocessing import LabelEncoder
data = ['B','D','B','C','A']
enc = LabelEncoder()
enc = enc.fit(['A','B','C','D'])
data_enc = enc