为了得到更准确的结果,必须理解数据的特征、分布情况,以及需要解决的问题,以便建立和优化算法模型。以下介绍七种方法来理解数据:
1.简单地查看数据。
2.审查数据的维度。
3.审查数据的类型和属性。
4.总结查看数据分类的分布情况。
5.通过描述性统计分析数据。
6.理解数据属性的相关性。
7.审查数据的分布状况。
对数据的简单审视,是加强对数据理解最有效的方法之一。通过对数据的观察,可以发现数据的内在关系。这些发现有助于对数据进行整理。
from pandas import read csv
#显示数据的前10行
filename ='pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age', 'class']
data = read_csv(filename, names=names)
peek = data.head(lO)
print(peek)
在机器学习中要注意数据的行和列,必须对所拥有的数据非常了解,要知道有多少行和多少列,这是因为:
1.太多的行会导致花费大量时间来训练算法得到模型:太少的数据会导致对算法的训练不充分,得不到合适的模型。
2.如果数据具有太多的特征,会引起某些算法性能低下的问题。
通过DataFrame的shape属性,可以很方便地查看数据集中有多少行和多少列。代码如下:
from pandas import read csv
#显示数据的行和列数据
filename ='pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age', 'class']
data = read_csv(filename, names=names)
print(data.shape)
数据的类型是很重要的一个属性。字符串会被转化成浮点数或整数,以便于计算和分类。可以通过DataFrame的Type属性来查看每一个字段的数据类型.
print(data.dtypes)
描述性统计可以给出一个更加直观、更加清晰的视角,以加强对数据的理解。在这里可以通过DataFrame的describe()方法来查看描述性统计的内容。
describe方法展示八方面的信息:数据记录数、平均值、标准方差、最小值、下四分位数、中位数、上四分位数、最大值。这些信息主要用来描述数据的分布情况
set_option('display.width',100)
#设置数据的精确度
set_option('precision',4)
print(data.describe())
数据分组分布(适用于分类算法)
在分类算法中,需要知道每个分类的数据大概有多少条记录,以及数据分布是否平衡。如果数据分布的平衡性很差,需要在数据加工阶段进行数据处理,来提高数据分布的平衡性。利用Pandas的属性和方法,可以很方便地查看数据的分布情况。
data = read_csv(filename, names=names) print(data.groupby('class').size())
数据属性的相关性是指数据的两个属性是否互相影响,以及这种影响是什么方式的等。非常通用的计算两个属性的相关性的方法是皮尔逊相关系数,皮尔逊相关系数是度量两个变量间相关程度的方法。它是一个介于1和-1之间的值,其中,1表示变量完全正相关,0表示无关,-1表示完全负相关。在自然科学领域中,该系数广泛用于度量两个变量之间的相关程度。在机器学习中,当数据的关联性比较高时,有些算法(如linear、逻辑回归算法等)的性能会降低。所以在开始训练算法前,查看一下算法的关联性是一个很好的方法。当数据特征的相关性比较高时,应该考虑对特征进行降维处理。下面通过使用DataFrame的corr()方法来计算数据集中数据属性之间的关联关系矩阵。代码如下:
from pandas import read_csv
from pandas import set_option
#显示数据的相关性
filename ='pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age', 'class']
data = read_csv(filename, names=names)
set_option('display.width', 100)
#设置数据的精确度
set_option('precision',2)
print(data.corr(method='pearson')
执行之后会得到一个每个属性相互影响的矩阵
通过分析数据的高斯分布情况来确认数据的偏离情况。高斯分布又叫正态分布,是在数据、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响。高斯分布的曲线呈钟形,两头低,中间高,左右对称。在高斯分布图中,y轴两点之间的面积是发生的概率。在很多机器学习算法中都会假定数据遵循高斯分布,先计算数据的高斯偏离状况,再根据偏离状况准备数据。我们可以使用DataFrame的skew()方法来计算所有数据属性的高斯分布偏离情况。
print(data.skew())
skew()函数的结果显示了数据分布是左偏还是右偏。当数据接近0时,表示数据的偏差非常小。