机器学习-Python实践Day2(数据操作)

1.1、 数据导入方法

机器学习的数据源通常都会以csv的格式来存储,因此在开始机器学习之前,需要先将数据导入到项目中,便于对数据进行后续操作。

有多种方法能对数据进行导入操作,我接下来将介绍常用的三种方法:

1.1.1、通过标准的Python库导入csv文件

from csv import reader
import numpy as np
# 使用标准的Python类库导入csv数据
filename='pima_data.csv'
with open(filename,'r') as raw_data:
    readers=reader(raw_data,delimiter=',')
    x=list(readers)
    data=np.array(x)
    print(data.shape)
    print(data)

机器学习-Python实践Day2(数据操作)

1.1.2、通过Numpy导入csv文件

# 采用Numpy导入数据
import numpy as np
filename='pima_data.csv'
with open(filename,'r') as raw_data:
    data=np.loadtxt(raw_data,delimiter=',')
    print(data.shape)
    print(data)

机器学习-Python实践Day2(数据操作)

1.1.3、通过Pandas导入csv文件

# 采用Pandas导入数据
import pandas as pd
filename='pima_data.csv'
df=pd.read_csv(filename,header=None)
print(df.shape)
print(np.array(df))

机器学习-Python实践Day2(数据操作)
通过Pandas.read_csv()函数导入CSV文件,返回值是DataFrame。在机器学习中经常利用Pandas来做数据清洗和数据处理工作。因此推荐使用这个方法。

1.2、数据理解

1.2.1、简单查看数据

import pandas as pd
filename='pima_data.csv'
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
df=pd.read_csv(filename,names=names)
# 查看前5行数据
df.head()

机器学习-Python实践Day2(数据操作)

1.2.2、数据维度

# 查看数据维度
print(df.shape)

机器学习-Python实践Day2(数据操作)

1.2.3、数据类型和属性

# 查看数据属性和类型
print(df.dtypes)

机器学习-Python实践Day2(数据操作)

1.2.4、数据分类和分布情况

# 数据分组分类
print(df.groupby('class').size())

机器学习-Python实践Day2(数据操作)

1.2.5、描述性统计分析数据

# 描述性统计
print(df.describe())

机器学习-Python实践Day2(数据操作)
描述性统计可以给出一个更加直观的视角,加强对数据的理解,通过DataFrame的describe()方法来查看描述性统计的内容。
展示了8个指标:数据量,平均数,标准方差,最小数,第一四分位数,中位数,第三位四分位数,最大值。

1.2.6、理解数据属性相关性

import pandas as pd
# 数据属性相关性
pd.set_option('display.width',100)
# 设置数据精确度
pd.set_option('precision',2)
print(df.corr(method='pearson'))

机器学习-Python实践Day2(数据操作)
数据属性的相关性是指两个属性是否互相影响,非常通用的计算两个属性的相关性方法是皮尔逊相关系数。它是一个介于1和-1之间的值,1表示变量完全正相关,0表示无关,-1表示全负相关。
通过DataFrame的corr()方法来计算个特征之间的关联关系矩阵。

1.2.7、查看数据分布分析

# 计算数据高斯偏离
print(df.skew())

机器学习-Python实践Day2(数据操作)
通过分析数据的高斯分布情况来确认数据的偏离情况。高斯分布又称正态分布,图形呈钟形)
DataFrame的skew()方法来计算数据属性的高斯分布偏离情况。
当数据接近0时,表示数据偏差非常小。

1.3、数据可视化

1.3.1、单一图表

直方图

# 直方图
import matplotlib.pyplot as plt
df.hist()
plt.show()

机器学习-Python实践Day2(数据操作)

密度图

# 密度图
df.plot(kind='density',subplots=True,layout=(3,3),sharex=False)
plt.show()

机器学习-Python实践Day2(数据操作)

箱线图

# 箱线图
df.plot(kind='box',subplots=True,layout=(3,3),sharex=False)
plt.show()

机器学习-Python实践Day2(数据操作)

1.3.2、多重图表

相关矩阵图

# 相关矩阵图
correlations=df.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)

机器学习-Python实践Day2(数据操作)

散点矩阵图

# 散点矩阵图
from pandas.plotting import scatter_matrix
scatter_matrix(df)
plt.show()

机器学习-Python实践Day2(数据操作)