文章目录

  • 划分训练集和测试集
  • 建立线性回归模型
  • 特征选择重建模型
  • 尝试使用GradientBoosting
import pandas as pd
import numpy as np
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.datasets import load_boston
from matplotlib import pyplot as plt
from sklearn.decomposition import PCA
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置在matplotlib上的中文字体
plt.rcParams['axes.unicode_minus'] = False # 在matplotlib绘图正常显示符号x_data = load_boston().data # 导入所有特征变量
y_data = load_boston().target # 导入目标变量房价
feature_name = load_boston().feature_names # 导入特征名
df = pd.DataFrame(x_data,columns=feature_name)
df['MEDV'] = y_data
df.head()
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT MEDV
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98 24.0
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14 21.6
2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 392.83 4.03 34.7
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94 33.4
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33 36.2
  • CRIM: 城镇人均犯罪率
  • ZN: 住宅用地所占比例
  • INDUS: 城镇仲非住宅用地所占比例
  • CHAS: 虚拟变量,用于回归分析
  • NOX: 环保指数
  • RM: 每栋住宅的房间数
  • AGE: 1940年以前建成的自祝单位的比例
  • DIS: 距离5个波士顿的就业中心的加权距离
  • RAD: 距离高速公路的便利指数
  • TAX: 每一万美元的不动产税率
  • PTRATIO: 城镇中的教师学生比例
  • B: 城镇中的黑人比例
  • LSTAT: 地区中有多少房东属于低收入人群
  • MEDV: 自住房屋房价中位数

查看各个特征是否有相关性,判断用哪种模型合适

plt.figure(figsize=(12,8))
sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='PuBu')
<AxesSubplot: >

数据不存在相关性较小的属性,也不用担心共线性,故我们可以用线性回归模型去预测

df.corr()['MEDV'].sort_values()
LSTAT     -0.737663
PTRATIO   -0.507787
INDUS     -0.483725
TAX       -0.468536
NOX       -0.427321
CRIM      -0.388305
RAD       -0.381626
AGE       -0.376955
CHAS       0.175260
DIS        0.249929
B          0.333461
ZN         0.360445
RM         0.695360
MEDV       1.000000
Name: MEDV, dtype: float64

尝试了解因变量和自变量,自变量和自变量之间的关系

sns.pairplot(df[["LSTAT","RM","PTRATIO","MEDV"]])
<seaborn.axisgrid.PairGrid at 0x2c88da29a90>

划分训练集和测试集

由于数据没有null值,并且都是连续型数据,所以暂时不用对数据进行过多的处理,不够既然要建立模型,首先就要进行对housing分为训练集和测试集,取出了大概百分之20的数据作为测试集,剩下的百分之70为训练集

X ,y = x_data,y_data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=888)

建立线性回归模型

首先,利用线性回归模型对数据进行训练,并预测测试集数据

linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
coef = linear_model.coef_#回归系数
line_pre = linear_model.predict(X_test)
print('SCORE:{:.4f}'.format(linear_model.score(X_test, y_test)))
print('RMSE:{:.4f}'.format(np.sqrt(mean_squared_error(y_test, line_pre))))
coef
SCORE:0.7559
RMSE:4.3708array([-1.19007229e-01,  3.64055815e-02,  1.68552680e-02,  2.29397031e+00,-1.60706448e+01,  3.72371469e+00,  9.22765437e-03, -1.30674803e+00,3.43072685e-01, -1.45830386e-02, -9.73486692e-01,  7.89797436e-03,-5.72555056e-01])

线性回归相关的系数如下

df_coef = pd.DataFrame()
df_coef['Title'] = df.columns.delete(-1)
df_coef['Coef'] = coef
df_coef
Title Coef
0 CRIM -0.119007
1 ZN 0.036406
2 INDUS 0.016855
3 CHAS 2.293970
4 NOX -16.070645
5 RM 3.723715
6 AGE 0.009228
7 DIS -1.306748
8 RAD 0.343073
9 TAX -0.014583
10 PTRATIO -0.973487
11 B 0.007898
12 LSTAT -0.572555
hos_pre = pd.DataFrame()
hos_pre['Predict'] = line_pre
hos_pre['Truth'] = y_test
hos_pre.plot()
<AxesSubplot: >

  • 得出score为76%,从上图得知预测的房价整体偏小,在10-35这个区间预测结果较为准确,超过这个区间预测价格偏小,可进一步对原始数据离群值做处理
  • 数据比较干净,练习起来缺少特征工程部分的工作,而且是预测性模型,相比分类问题少了模型选择上的空间

特征选择重建模型

试使用相关性最高的3个特征量重建模型,并与原模型进行比较

df.corr()['MEDV'].abs().sort_values(ascending=False).head(4)
MEDV       1.000000
LSTAT      0.737663
RM         0.695360
PTRATIO    0.507787
Name: MEDV, dtype: float64
X2 = np.array(df[['LSTAT','RM','PTRATIO']])
X2_train, X2_test, y_train, y_test = train_test_split(X2, y, random_state=1,test_size=0.2)
linear_model2 = LinearRegression()
linear_model2.fit(X2_train,y_train)
print(linear_model2.intercept_)
print(linear_model2.coef_)
line2_pre = linear_model2.predict(X2_test)  #预测值
print('SCORE:{:.4f}'.format(linear_model2.score(X2_test, y_test)))#模型评分
print('RMSE:{:.4f}'.format(np.sqrt(mean_squared_error(y_test, line2_pre))))#RMSE(标准误差)
24.112838451644947
[-0.59061956  3.81700007 -0.97465491]
SCORE:0.6959
RMSE:5.4820

在选取的特征数量远小于第一个模型情况下,得分0.695,略小于第一个模型的0.7559

尝试使用GradientBoosting

X ,y = x_data,y_data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=888)
from sklearn import ensemble
clf = ensemble.GradientBoostingRegressor()
clf.fit(X_train, y_train)
clf_pre=clf.predict(X_test) #预测值
print('SCORE:{:.4f}'.format(clf.score(X_test, y_test)))#模型评分
print('RMSE:{:.4f}'.format(np.sqrt(mean_squared_error(y_test, clf_pre))))#RMSE(标准误差)
SCORE:0.9188
RMSE:2.5209

可以看出,梯度决策树(Gradient Boosted Decision Tree)算法能得到非常良好的结果

深度学习第一次作业 - 波士顿房价预测相关推荐

  1. 统计学习基础:数据挖掘、推理和预测_百度零基础深度学习笔记(三) 波士顿房价预测...

    波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,期待构建一个房价预测模型,其数据中包含13个影响房价的因素和该类型房屋均价. 波士顿房价影响因素 数据预处理 数据预处理包括: 数据导入 数据形 ...

  2. 【深度学习】实战Kaggle竞赛之线性模型解决波士顿房价预测问题(Pytorch)

    [深度学习]实战Kaggle竞赛之线性模型解决波士顿房价预测问题 文章目录 1 概述1.1 Competition Description1.2 Practice Skills 2 数据处理 3 训练 ...

  3. 教你使用百度深度学习框架PaddlePaddle完成波士顿房价预测(新手向)

    首先,本文是一篇纯新手向文章,我自己也只能算是入门,有说错的地方欢迎大家批评讨论 目录 一.人工智能.机器学习.深度学习 二.PaddlePaddle(飞桨) 三.波士顿房价预测模型 数据处理 模型设 ...

  4. 深度学习入门——波士顿房价预测

    基于神经网络模型的波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".以"波士顿房价预测"任务为例,我们学习如 ...

  5. 使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】

    使用Python和Numpy进行波士顿房价预测任务–详解 目录: 一.数据处理 (1)读入数据 (2)数据形状变换 (3)数据集划分 (4)数据归一化处理 (5)封装成load data函数 二.模型 ...

  6. 深度学习:波士顿房价预测

    深度学习:波士顿房价预测 1.代码 #加载波士顿房价数据 import keras from keras.datasets import boston_housing (train_data,trai ...

  7. 深度学习(波士顿房价预测)

    本程序采用百度paddlepaddle深度学习框架,并在百度AI Studio平台上运行. 目录 1实验背景 2 实验过程 2.1 数据处理 2.1.1数据集导入并按规定形状保存 2.1.2数据集的划 ...

  8. 深度学习经典入门项目—波士顿房价预测

    目录 房价预测--线性回归 数据处理 数据形状变换 数据集划分 数据归一化处理 housing.data数据格式 模型设计 线性回归模型设计 训练配置 训练过程 保存并测试模型 保存模型 测试模型 房 ...

  9. 使用Python和Numpy进行波士顿房价预测任务(一)【深度学习入门_学习笔记】

    波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".和大家对房价的普遍认知相同,波士顿地区的房价是由诸多因素影响的. 下载数据集:https:// ...

  10. MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测

    Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...

最新文章

  1. 验证(verification)和确认(validation)
  2. 处理点云数据 点云与生成前视图
  3. 关于Jquery中ajax方法data参数用法
  4. String 创建对象问题
  5. Application 用法
  6. 培训班出来的程序员能找到工作吗?
  7. IBus拼音无法选择候选词故障
  8. GprMax2D ——ABC(吸收边界条件)相关命令
  9. html表格数据按公式自动计算,Word表格怎么自动填充和计算数据
  10. SLAM Evaluation 之轨迹对齐论文翻译Closed-Form Solution of Absolute Orientation Using Orthonormal Matrices
  11. OWASP juice shop靶场闯关题解
  12. 孩子学python_小孩子的内心世界
  13. ensp路由器注册_使用ensp进行简单的路由器互连实验
  14. pytorch快速上手-使用自动标注软件Openlabeling和yolov5快速完成目标检测
  15. Win10 易升更新 安装wls2 部署docker
  16. pygame用blit()实现动画效果
  17. 长春理工大学成人高考报名流程
  18. Vue table 点击按钮展开折叠面板
  19. GooglePlay OAuth使用
  20. LCD接口设计系列一:基于eDP接口屏的硬件电路设计

热门文章

  1. 一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子以及角谷定理的计算
  2. 401832-00-4,Thalidomide-O-PEG4-Amine在EDC或HATU存在下与NHS酯基或羧酸反应的合成化合物
  3. matplotlib 全局字体改为 Times New Roman
  4. uniapp 总结篇 (小程序)
  5. 捡到的苹果手机怎么解id锁_苹果手机维修中软解和硬解的区别
  6. RSA算法详解与举例
  7. 为什么没什么人玩呢?凰华学院主校剧情有感
  8. 软件开发实习做什么_为什么要有开发人员实习时间
  9. NPN和PNP三极管收录笔记
  10. js 深浅拷贝的整理