机器学习入门(一)——数据理解
此处以Pima印第安人数据集为例,根据诊断措施预测糖尿病的发病。
一、数据集简介
1、该数据集最初来自国家糖尿病/消化/肾脏疾病研究所。数据集的目标是基于数据集中包含的某些诊断测量来诊断性的预测 患者是否患有糖尿病。
2、从较大的数据库中选择这些实例有几个约束条件。尤其是,这里的所有患者都是Pima印第安至少21岁的女性。
3、数据集由多个医学预测变量和一个目标变量组成Outcome。预测变量包括患者的怀孕次数、BMI、胰岛素水平、年龄等。
二、导入数据集
#导入库
import pandas as pd
#导入CSV文件
filename = "pima_data.csv"
name = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = pd.read_csv(filename,names=name)
数据属性:
【1】Preg:怀孕次数
【2】Plas:葡萄糖
【3】Pres:血压 (mm Hg)
【4】Skin:皮层厚度 (mm)
【5】Test:胰岛素 2小时血清胰岛素(mu U / ml
【6】Mass:体重指数 (体重/身高)^2
【7】Pedi:糖尿病谱系功能
【8】Age:年龄 (岁)
【9】Class:类标变量 (0或1)
三、查看数据
#显示数据前10行
peek = data.head(10)
print('数据查看:')
print(peek)
数据查看:
preg plas pres skin test mass pedi age class
0 6 148 72 35 0 33.6 0.627 50 1
1 1 85 66 29 0 26.6 0.351 31 0
2 8 183 64 0 0 23.3 0.672 32 1
3 1 89 66 23 94 28.1 0.167 21 0
4 0 137 40 35 168 43.1 2.288 33 1
5 5 116 74 0 0 25.6 0.201 30 0
6 3 78 50 32 88 31.0 0.248 26 1
7 10 115 0 0 0 35.3 0.134 29 0
8 2 197 70 45 543 30.5 0.158 53 1
9 8 125 96 0 0 0.0 0.232 54 1
四、数据维度--查看行和列
#数据维度--查看行和列
print('数据行列:')
print(data.shape)
数据行列:
(768, 9)
五、数据属性和类型
#数据属性和类型
print('字段属性:')
print(data.dtypes)
字段属性:
preg int64
plas int64
pres int64
skin int64
test int64
mass float64
pedi float64
age int64
class int64
dtype: object
六、数据统计性描述
1、describe()函数:展示数据记录数、平均值、标准方差、最小值、下四分位数、中位数、上四分位数、最大值
2、set_option()函数详解:
【1】pd.set_option(‘expand_frame_repr’, False)
True就是可以换行显示。设置成False的时候不允许换行
【2】pd.set_option(‘display.max_rows’, 10)
pd.set_option(‘display.max_columns’, 10)
显示的最大行数和列数,如果超额就显示省略号,这个指的是多少个dataFrame的列。如果比较多又不允许换行,就会显得很乱。
【3】pd.set_option(‘precision’, 5)
显示小数点后的位数
【4】pd.set_option(‘large_repr’, A)
truncate表示截断,info表示查看信息,一般选truncate
【5】pd.set_option(‘max_colwidth’, 5)
列长度
【6】pd.set_option(‘chop_threshold’, 0.5)
绝对值小于0.5的显示0.0
【7】pd.set_option(‘colheader_justify’, ‘left’)
显示居中还是左边,
【8】pd.set_option(‘display.width’, 200)
横向最多显示多少个字符, 一般80不适合横向的屏幕,平时多用200
pd.set_option('display.width',200)
pd.set_option('precision',2)
print('数据描述性统计:')
print(data.describe())
数据描述性统计:
preg plas pres skin test mass pedi age class
count 768.00 768.00 768.00 768.00 768.00 768.00 768.00 768.00 768.00
mean 3.85 120.89 69.11 20.54 79.80 31.99 0.47 33.24 0.35
std 3.37 31.97 19.36 15.95 115.24 7.88 0.33 11.76 0.48
min 0.00 0.00 0.00 0.00 0.00 0.00 0.08 21.00 0.00
25% 1.00 99.00 62.00 0.00 0.00 27.30 0.24 24.00 0.00
50% 3.00 117.00 72.00 23.00 30.50 32.00 0.37 29.00 0.00
75% 6.00 140.25 80.00 32.00 127.25 36.60 0.63 41.00 1.00
max 17.00 199.00 122.00 99.00 846.00 67.10 2.42 81.00 1.00
七、数据分组分布
#数据分组分布
print('数据分组分布:')
print(data.groupby('class').size())
数据分组分布:
class
0 500
1 268
dtype: int64
八、数据属性的相关性
1、数据属性的相关性:指数据的两个属性是否相互影响,以及这种影响是什么方式的 2、皮尔逊相关系数:最通用的计算两个属性的相关性,为介于1和-1之间的值 其中1表示变量完全正相关,0表示无关,-1表示完全负相关 3、当数据特征的相关性比较高时,应该考虑对特征进行降维处理
#数据属性的相关性
print('数据属性的相关性:')
print(data.corr(method='pearson'))
数据属性的相关性:
preg plas pres skin test mass pedi age class
preg 1.00 0.13 0.14 -0.08 -0.07 0.02 -0.03 0.54 0.22
plas 0.13 1.00 0.15 0.06 0.33 0.22 0.14 0.26 0.47
pres 0.14 0.15 1.00 0.21 0.09 0.28 0.04 0.24 0.07
skin -0.08 0.06 0.21 1.00 0.44 0.39 0.18 -0.11 0.07
test -0.07 0.33 0.09 0.44 1.00 0.20 0.19 -0.04 0.13
mass 0.02 0.22 0.28 0.39 0.20 1.00 0.14 0.04 0.29
pedi -0.03 0.14 0.04 0.18 0.19 0.14 1.00 0.03 0.17
age 0.54 0.26 0.24 -0.11 -0.04 0.04 0.03 1.00 0.24
class 0.22 0.47 0.07 0.07 0.13 0.29 0.17 0.24 1.00
九、数据的分布分析
1、通过分析数据的高斯分布情况来确认数据的偏离情况 2、在高斯分布图中,y轴两点之间的面积是发生的概率 3、skew()函数的结果显示了数据分布是左偏还是右偏。当数据接近0时,表示数据的偏差非常小
#数据的分布分析
print('数据的分布分析:')
print(data.skew())
数据的分布分析:
preg 0.90
plas 0.17
pres -1.84
skin 0.11
test 2.27
mass -0.43
pedi 1.92
age 1.13
class 0.64
dtype: float64
上一篇: 一文搞定机器学习算法
下一篇: 机器学习入门研究(十五)-模型保存与加载