![数据科学与机器学习:数学与统计方法](https://wfqqreader-1252317822.image.myqcloud.com/cover/83/47684083/b_47684083.jpg)
1.2 类型结构特征
我们一般将特征分为定量特征和定性特征。定量特征具有“数值量”,如身高、年龄、出生人数等,它可以是连续的,也可以是离散的。连续的定量特征在可能的连续范围内取值,如身高、电压或农作物产量,这种特征体现了总是可以进行更精确测量的思想。离散的定量特征具有可数的可能性,如计数。
与此相反,定性特征没有数值含义,但它们可能的取值可以划分成固定数量的类别,如{M,F}表示性别,{蓝色, 黑色, 棕色, 绿色}表示眼睛的颜色。因此,这样的特征也称为分类特征。一个简单的经验法则是,如果对数据进行平均没有意义,那么它就是分类特征。例如,对眼睛颜色进行平均是没有意义的。当然,我们仍然可以用数字来表示分类数据,比如,1表示蓝色,2表示黑色,3表示棕色,但是这样的数字没有量化意义。分类特征通常称为因子(factor)。
在操作、汇总和显示数据时,正确指定变量(特征)的类型十分重要。我们使用文献[73]提供的nutrition_elderly数据集来说明这一点,该数据集是有关老人营养的研究结果,它包含226名老人(行)的13个特征(列)的营养测量数据。该数据集可以通过网址http://www.biostatisticien.eu/springeR/nutrition_elderly.xls获得。
Excel文件可以通过read_excel方法直接读入pandas:
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/17_01.jpg?sign=1738931159-fYfb6Bu1dc7ZDA9wIbG79Sb5Njrledoe-0-eed5d8ca8c0b097c5b8d8faefcc9cc30)
这将创建一个DataFrame对象nutri。nutri的前三行数据如下:
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/17_02.jpg?sign=1738931159-9yGwVhSYlGhXVUjbcDdrx7bowzf3pT8S-0-069da12f42fc19af81eb6b354b2b8d41)
我们可以通过nutri的info方法来查看变量的类型或结构:
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/17_03.jpg?sign=1738931159-SPaoBpIVZyW8iRJQJ1eJXBRJHKgR8P8z-0-e3c0f912d93e7669a1aea927080dc8a0)
nutri中的13个特征全部都被Python解释为定量变量,实际上是整数,因为它们是作为整数输入的。表1.1显示了应如何对变量类型进行分类。当我们考虑表1.2给出的特征描述时,这些数字的含义就变得很清楚了。
表1.1 DataFrame对象nutri的特征类型
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/18_01.jpg?sign=1738931159-Q9CylbFJAwv4oYFUxEoqxGCA94cYNf7N-0-47cff93ee3f258c4b28624533044e797)
请注意,表1.1中定性特征第二行的类别变量meat到chocol有一个自然顺序。这样的定性特征有时称为序数特征,相反,没有序数属性的定性特征称为标称特征。我们在本书中不做这样的区分。
表1.2 营养研究中的变量说明[73]
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/18_02.jpg?sign=1738931159-Krg06gj6rBp3cEGWpaFDevWdeO5rZLU8-0-5355bce01cd28581b99d090ac119bfa9)
我们可以使用Python中的replace和astype方法修改每个分类特征的值和类型。对于分类特征,比如gender,我们可以将1替换为'Male',将2替换为'Female',并将变量的类型修改为'category',方法如下:
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/18_03.jpg?sign=1738931159-2wcwxE88Xeeg23OqzIH8RX9odskSELV8-0-34bb718d9053c1cc24f6f3a1790075a5)
其他分类特征的结构也可以用类似的方式改变。像height这样的连续特征,其类型应为float:
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/19_01.jpg?sign=1738931159-Oxlglp2ZWvwkdd6YGyijOtno6e6SLlPo-0-c0e3bbfe1a5af9829a5a512549f4ac05)
我们可以对其他变量重复这样的操作(见习题2),并使用pandas的to_csv方法将修改后的数据帧保存为CSV文件。
![](https://epubservercos.yuewen.com/C30954/27086998107751806/epubprivate/OEBPS/Images/19_02.jpg?sign=1738931159-4saDj8d0JCHupe0MWsxPmrfeN6meLIfN-0-311c163eec524669135cfba19547413c)