波士顿房价预测新手教程

库函数介绍

我们在实现对波士顿房价预测过程中调用了以下的python库函数:

  1. Seaborn ,是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。
  2. Matplotlib ,是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
  3. Matplotlib, 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
  4. scikit-learn, 是基于 Python 语言的机器学习工具:简单高效的数据挖掘和数据分析工具。
  5. NumPy,是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  6. 以下代码导入本文中使用到的库函数
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
from sklearn import preprocessing
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import KFold

导入数据集并进行简单操作

  1. 导入数据集
data = load_boston()#导入数据集
  1. 将数据集转化为panda,并将房价加入到数据集
data_pd =pd.DataFrame(data.data,columns=data.feature_names) #将数据集数据转换成panda
data_pd['price'] = data.target #把房价加入到数据集中
  1. 对数据集的基本操作
操作代码
查看数据类型data_pd.dtypes.value_counts()
查看空值data_pd.isnull().sum()
查看数据大小data_pd.shape
查看数据描述data_pd.describe
显示前五行数据data_pd.head()
计算属性X的最小值data_pd.min(X)
计算属性X的最大值data_pd.max(X)
计算属性X的平均值data_pd.mean(X)
计算属性X的中值data_pd.median(X)
计算属性X的标准差data_pd.std(X)

如果想要查看以上操作的输出结果,使用print (XXX) 即可

计算数据集中属性与价格属性的相关系数并绘图

  1. 计算每一个属性和价格的相关系数
data_pd.corr()['price']
  1. 绘制相关系数特征图
corr = data_pd.corr()
corr = corr['price']
corr.sort_values().plot.bar()
plt.show()

各属性和价格的相关系数特征图
3. 当然我们还可以对相关系数做出一些限定,例如,另相关系数>0.5.

corr = data_pd.corr()
corr = corr['price']
corr[abs(corr)>0.5].sort_values().plot.bar()
plt.show()

在这里插入图片描述

X属性和房价的散点图

由相关系数特征图我们可以明确,属性LSTAT、RM、PTRATIO和房价的相关系数最高,因此我们选定 LSTAT、RM、PTRATIO作为X,并绘制其和房价的散点图

  1. LSTAT和价格price散点图
plt.scatter (data_pd['LSTAT'],data_pd['price'])

在这里插入图片描述
2. RM和price的散点图

plt.scatter (data_pd['RM'],data_pd['price'])

在这里插入图片描述
3. PTRATIO和price的散点图

plt.scatter (data_pd['PTRATIO'],data_pd['price'])

在这里插入图片描述
由以上三个图片可知,图三属性和房价关系不是很紧密,而图一二中属性和房价息息相关。

  1. 当然我们可能需要绘制多张散点图,并包含表头,坐标轴表示含义等。这样的情况下,如果分开来写我们的代码就会非常冗杂,那么我们可以完成一个绘制散点图的函数,在需要绘图的时候直接调用即可。
def drawScatter(x, y, xlabel):
    plt.scatter(x, y)
    plt.title('%s与房价散点图' %xlabel)
    plt.xlabel(xlabel)
    plt.ylabel('房价')
    plt.yticks(range(0,60,5))
    plt.grid()
    plt.show()

在这里插入图片描述

处理训练集和测试集数据

  1. 制作训练集和测试集数据
data_pd = data_pd[['LSTAT','PTRATIO','RM','price']]
y = np.array(data_pd['price'])
data_pd=data_pd.drop(['price'],axis=1)
X = np.array(data_pd)
  1. 分割训练集和测试集
train_X,test_X,train_Y,test_Y = train_test_split(X,y,test_size=0.2)

进行预测

# 加载模型
linreg = LinearRegression()
# 拟合数据
linreg.fit(train_X,train_Y)
# 进行预测
y_predict = linreg.predict(test_X)
# 计算均方差
metrics.mean_squared_error(y_predict,test_Y)

在这里插入图片描述

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值