1 数据导入
在机器学习中使用的数据通常会以csv的格式来存储,或者能够方便地转化为csv格式
1.1 采用标准Python类库导入数据
from csv import reader
import numpy as np
# 采用标准的Python类库导入csv数据
filename = 'pima_data.csv'
with open(filename, 'rt') as raw_data:
readers = reader(raw_data, delimiter=',')
x = list(readers)
data = np.array(x).astype('float')
print(data.shape)
1.2 采用NumPy导入数据
from numpy import loadtxt
# 使用NumPy导入CSV数据
filename = 'pima_data.csv'
with open (filename, 'rt') as raw_data:
data = loadtxt(raw_data, delimiter=',')
print(data.shape)
1.3 采用Pandas导入数据
from pandas import read_csv
# 使用Pandas导入CSV数据
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
print(data.shape)
注:通过Pandas导入CSV文件要使用pandas.read_csv()函数,函数的返回值是DataFrame,可以很方便地进行下一步的处理。在机器学习中一般建议采用Pandas导入
2 数据理解
2.1 简单地查看数据
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)
# 显示数据的前10行
peek = data.head(10)
print(peek)
2.2 数据的维度
# 显示数据的行和列数据
print(data.shape)
2.3 数据的属性和类型
# 显示数据的类型
print(data.dtypes)
2.4 描述性统计
# 描述性统计
set_option('display.width', 100)
# 设置数据的精确度
set_option('precision', 4)
print(data.describe())
2.5 数据分组分布(适用于分类算法)
print(data.groupby('class').size())
2.6 数据属性的相关性
# 显示数据的相关性
print(data.corr(method='pearson'))
注:数据属性的相关性是指数据的两个属性是否互相影响,以及这种影响是什么方式等。比较通用的计算两个属性的相关性的方法是皮尔逊相关系数,当数据的关联性比较高时,有些算法的性能会降低。
2.7 数据的分布分析
# 计算数据的高斯偏离
print(data.skew())
注:skew()函数的结果显示了数据分布是左偏还是右偏,当数据接近0时,表示数据的偏差非常小。
3 数据可视化
3.1 单一图表
# 绘制直方图
data.hist()
plt.show()
# 绘制密度图
data.plot(kind='density', subplots=True, layout=(3, 3), sharex=False)
plt.show()
# 绘制密度图
data.plot(kind='box', subplots=True, layout=(3, 3), sharex=False)
plt.show()
3.2 多重图表
3.2.1 相关矩阵图
# 绘制相关矩阵图
correlations = data.corr()
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0, 9, 1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
plt.show()
注:相关矩阵图主要用来展示两个不同属性的相互影响的程度。
3.2.2 散点矩阵图
# 绘制散点矩阵图
scatter_matrix(data)
plt.show()
注:散点矩阵图表示因变量岁自变量变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。
参考文献
[1] 魏贞原.2018.机器学习:Python实践[M].北京:电子工业出版社