# 简单查看数据
from pandas import read_csv
filename = 'data/pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names) # 手动指定头部
peek = data.head(10)
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
知道数据有多少行,多少列很重要,通过pandas的shape属性可以知道。
print(data.shape)
(768, 9)
了解数据是什么类型,方便下一步的计算。
print(data.dtypes)
preg int64
plas int64
pres int64
skin int64
test int64
mass float64
pedi float64
age int64
class int64
dtype: object
可以看出来,数据都是数值类型,两个是浮点数,其他都是整数类型。
from pandas import set_option
set_option('precision',4)
print(data.describe())
preg plas pres skin test mass pedi \
count 768.0000 768.0000 768.0000 768.0000 768.0000 768.0000 768.0000
mean 3.8451 120.8945 69.1055 20.5365 79.7995 31.9926 0.4719
std 3.3696 31.9726 19.3558 15.9522 115.2440 7.8842 0.3313
min 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0780
25% 1.0000 99.0000 62.0000 0.0000 0.0000 27.3000 0.2437
50% 3.0000 117.0000 72.0000 23.0000 30.5000 32.0000 0.3725
75% 6.0000 140.2500 80.0000 32.0000 127.2500 36.6000 0.6262
max 17.0000 199.0000 122.0000 99.0000 846.0000 67.1000 2.4200
age class
count 768.0000 768.000
mean 33.2409 0.349
std 11.7602 0.477
min 21.0000 0.000
25% 24.0000 0.000
50% 29.0000 0.000
75% 41.0000 1.000
max 81.0000 1.000
知道每个类有多少数据,看数据的分布是否均衡,如果不均衡,我们就对数据进行预处理,再进入下一步。
print(data.groupby('class').size())
class
0 500
1 268
dtype: int64
可以看出数据有两个类别,一类有500个,另一类有268个数据,不是特别均衡,但是在同一个数量级。
在机器学习中,当数据的关联性比较高时,有些算法的性能会降低,比如线性回归和逻辑斯蒂回归算法等。
当数据特征相关性比较高时,可以考虑对特征进行降维,使用corr()
可以查看数据特征值之间的关联关系。
set_option('display.width', 100)
# 设置数据精度
set_option('precision', 2)
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
机器学习算法一般假设数据遵循高斯分布,所以通过分析数据的高斯分布情况,可以确认数据的偏离情况。用skew()
方法计算所有数据属性的高斯分布偏离情况。数据接近0时表示数据的偏差很小。
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
对数据的分析是机器学习的重要步骤,只有对数据有足够的理解,才能选择出有效的算法来建立模型。上面列出的7个方法,也是7个角度,7个步骤。
审查数据时,还有以下几个技巧:
END.
参考:
《机器学习Python实践》–魏贞原