在本篇文章中,主要是介绍利用波士顿房价数据来掌握回归预测分析的一些方法。通过本篇文章你可以学习到:
1、可视化数据集的重要特征
2、估计回归模型的系数
3、使用RANSAC拟合高鲁棒性回归模型
4、如何来评价回归模型
5、多项式回归
6、决策树回归
7、随机森林回归
掌握数据的基本情况
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#设置seaborn的风格
sns.set(style="whitegrid",context="notebook")
if __name__ == "__main__":
#读取数据集
data = pd.read_csv("data/train.csv")
#获取csv的前5行数据
print(data.head(5))
一、数据特征的可视化
探索性数据分析(Exploratory Data Analysis,EDA):是机器学习模型训练之前的一个重要步骤,通过借助python第三方库pandas、seaborn来绘图,可以帮助我们分析和发现数据中的异常情况、数据的分布情况,以及特征将的相互关系。
由于屏幕大小关系,我们选择四个自变量和因变量进行分析,indus(房屋所在镇无零售业务区域所占比例),nox(一氧化氮浓度,每千万分之一),rm(每处寓所的平均房间数),lstat(弱势群体人口所占比例),medv(房屋平均价格,单位1000美元)。
1、绘制散点图
#选择需要绘制散点图的列名
cols = ["lstat","indus","nox","rm","medv"]
#通过seaborn绘制散点图
sns.pairplot(data[cols],size=1.5)
plt.show()
通过绘制特征的散点图,我们可以发现变量之间的关系。对角线是变量的直方图,可以看出特征的分布情况。通过medv(房价)的直方图可以发现,房价服从正态分布,但是在大于40的部分包含了几个异常值。通过rm(房间数)和medv(房价)的散点图,第四行第五列,呈线性分布。而其他的三个变量与mdv(房价)呈一个非线性分布。
注意:训练一个线性回归模型并不需要自变量或者因变量呈正态分布,正态假设仅适用于某些统计检验和假设检验。
2、系数矩阵
除了通过变量之间的散点图来寻找变量之间的关系,还可以通过变量之间的相关系数来发现变量的关系。相关系数矩阵,常用的有皮尔逊相关系数(Pearson product-moment correlation coefficient,Pearson's r)的方阵,通过它可以来衡量两个特征之间的线性关系。皮尔逊相关系数的取值在[-1,1]范围内,如果r=1,表示两个变量呈正相关,r=0表示两个变量没有关系,r=-1表示两个变量呈负相关。其实,相关系数矩阵就是标准化的协方差矩阵。
#获取相关系数矩阵
cm = np.corrcoef(data[cols].values.T)
#设置字的比例
sns.set(font_scale=1.5)
#绘制相关系数图
hm = sns.heatmap(cm,cbar&#