1.样本数据分析的内容
在开始应用各种机器学习方法训练样本数据时,首先要对样本数据进行各种处理,使得样本数据符合机器学习算法的要求。
对样本数据的分析,主要用来分析样本数据的每个特征是否有缺失值,单个特征变量的均值,方差,最大最小值,分布情况。以及变量之间的相关性。
2. 样本数据分析的意义
1. 根据对样本数据的分析,来决定如何对数据进行处理,选择哪种机器学习算法来训练样本。
2. 图表汇总数据能更好地帮助我们把握数据的特点。
3. 样本数据分析的基本步骤。
(1)导入必要的工具包。
(2)读取数据。
(3)数据整体信息分析,观察是否有缺失值。
(4)查看数据各特征的分布,特征与标签之间的关系、以及特征之间相关性(是否存在冗余)。
数据表的特征类型通常有两种:
数值型特征(int64和float64)
类别型特征(categorical features)或离散型特征。离散型特征具有固定数目的值。如果特征只有两个取值,也成为二元(binary)变量。如果类别型变量的值具有顺序,称为有序(ordinal)类别型变量。
我们可以借用可视化工具来直观感觉数据的分布。 在Python中,有很多数据可视化途径。 Matplotlib非常强大,但很复杂,不易于学习。 Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。
在Boston房价预测数据集中,所有特征均为数值型特征(RAD为高速公路便利指数,亦可视为类别型特征;CHAS为0/1编码,为类别型特征)。
对数值型特征,describe方法可以特征的基本统计学特性:未缺失值的数值、均值、标准差、范围、四分位数。 查看非数值特征的统计数据时,需要通过include参数显式指定包含的数据类型(后续例子)
对于连续型变量,主要用直方图来观察特征对应的样本的分布情况,对于离散型变量,主要用条形图来分析特征对应样本的分布情况。
条形图countplot和直方图distplot看起来很像,都用于观察特征的分布,不同点:
直方图用于查看数值变量的分布,而条形图用于类别特征。
直方图的X轴是数值;条形图的X轴可能是任何类型:数字、字符串、布尔值。
直方图的X轴是笛卡尔坐标轴;条形的顺序没有事先定义。不过条形经常按照高度排序,也就是值的频率。如果是有序变量,条形通常按照变量的值排序。
特征变量与对应样本之间的关系
(5)分析两两特征之间的相关性。
两两特征之间的关系探索与要分析特征的类型有关。
数值特征——数值特征 1.1 相关矩阵:两个数值特征之间的关系可用相关矩阵来查看它们之间的相关性。这一信息很重要,因为有有些机器学习算法(如普通最小二乘线性回归)不能很好地处理高度相关的输入变量。如果特征之间高度相关,可考虑进行PCA降维(特征层面)或加正则项(模型层面)。 可用DataFrame的corr()方法先计算出每对特征间的相关矩阵,然后将所得的相关矩阵传给seaborn的heatmap()方法,渲染出一个基于色彩编码的矩阵。 1.2 散点图(scatter)将两个数值变量的值显示为二维空间中的笛卡尔坐标。
数值特征——类别特征 散点图中的数据点可以通过色彩或尺寸进行编码,以便在同一张图像中包括第三个类别变量的值。 也可以用lmplot()函数的hue参数来指定感兴趣的类别特征。 violinplot/boxplot可表示输入两个特征,用于表示在一个特征取值下(类别型特征),另一个特征(数值特征)的分布或统计量。
类别特征——类别特征 通过设置参数hue,在图形中加入类别维度 除了使用图形进行类别分析之外,还可以使用统计学的传统工具:列联表(contingency table),又称为交叉制表(cross tabulation),使用表格形式表示多个类别变量的频率分布。我们可以通过查看一列或一行来得知某个变量在另一变量的作用下的分布。
1_EDA_BostonHousePrice
Last Checkpoint: 16 小时前
(autosaved)
Logout
Python 3
Trusted
File
Edit
View
Insert
Cell
Kernel
Widgets
Help
Run
二级标题
#二级标题
标题练习
三级标题
###三级标题
In [1]:
# -*- coding:utf-8 -*-
import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")
波士顿房价数据探索
该数据集来自UCI机器学习知识库。波士顿房屋这些数据于1978年开始统计,共506个数据点,涵盖了麻省波士顿不同郊区房屋13种特征和房价中位数的信息。 本项目将原始数据集存为csv格式,方便调用pandas做数据分析。
在开始一项新任务时,通过可视化手段探索数据往往是任务的第一步,从而根据数据特点选择合适的数据预处理方式和机器学习模型。 相比直接阅读许多行原始数据,图表汇总数据能更好地帮助我们把握数据的要点。
导入必要的工具包
In [1]:
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O
import matplotlib.pyplot as plt #对数据结果可视化
import seaborn as sns #对matplotlib文件的进一步封装
%matplotlib inline
Pandas提供了大量数据分析的方法,可以使用类似SQL的方式非常方便地加载、处理、分析这些表格形式的数据。 搭配Matplotlib和Seaborn效果更好。
Pandas的主要数据结构是Series和DataFrame类。 Series是一个包含某种固定类型数据的一维数组。 DataFrame是一个二维数据表格,其中每列包含相同类型的数据。
读取数据
In [2]:
#dpath = "./data/"
df = pd.read_csv("boston_housing.csv")
#显示前5行
df.head()
Out[2