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

news2025/8/8 4:33:15

文章目录

    • 划分训练集和测试集
    • 建立线性回归模型
    • 特征选择重建模型
    • 尝试使用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()
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATMEDV
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.9824.0
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.1421.6
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.0334.7
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.9433.4
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.3336.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: >

png

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

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>

png

划分训练集和测试集

由于数据没有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.3708





array([-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
TitleCoef
0CRIM-0.119007
1ZN0.036406
2INDUS0.016855
3CHAS2.293970
4NOX-16.070645
5RM3.723715
6AGE0.009228
7DIS-1.306748
8RAD0.343073
9TAX-0.014583
10PTRATIO-0.973487
11B0.007898
12LSTAT-0.572555
hos_pre = pd.DataFrame()
hos_pre['Predict'] = line_pre
hos_pre['Truth'] = y_test
hos_pre.plot()
<AxesSubplot: >

png

  • 得出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)算法能得到非常良好的结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一个SpringBoot项目的创建

目录 一、SpringBoot是什么&#xff1f; 初识springboot springboot的优点 二、SpringBoot项目的创建与简单运行 &#x1f351;使用idea创建springboot项目 &#x1f351; Spring Boot 项目目录介绍 &#x1f351;springboot项目的简单运行与使用 一、SpringBoot是什么&a…

emq证书过期问题

近期在进行远程漏洞扫描后发现&#xff0c;有存在服务器证书过期的情况&#xff0c;可以通过以下步骤进行问题的处理&#xff1a; 1、先根据对应出现漏洞的端口进行检查&#xff0c;看端口对应的服务是哪个服务&#xff1a; netstat -tunlp|grep 端口号 2、通过命令&#xf…

40 - 前置操作符和后置操作符

---- 整理自狄泰软件唐佐林老师课程 问题 下面代码的区别&#xff1f;why&#xff1f; 1.1 编程实验 汇编中的处理是一样的&#xff0c;所以不可能从编译后的二进制程序还原 i 还是 i 1.2 事实 现代编译器产品会对代码进行优化优化使得最终的二进制程序更加高效优化后的二…

[附源码]java毕业设计渔具店管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Linux】系统编程之网络编程(socket)

目录一、Socket编程1、TCP/UDP&#xff08;1&#xff09;TCP/UDP区别&#xff08;2&#xff09;TCP/UDP服务端和客户端的通信流程2、IP地址和端口号&#xff08;1&#xff09;IP地址&#xff08;2&#xff09;端口号二、字节序1、字节系相关概念2、有关字节序转换的函数&#x…

小小王总,如何变成任正非、化腾、强东这样的巨人!

原创&#xff1a;小姐姐味道&#xff08;微信公众号ID&#xff1a;xjjdog&#xff09;&#xff0c;欢迎分享&#xff0c;非公众号转载保留此声明。王总特别迷信外面的企业培训。当遇到问题时&#xff0c;他喜欢去取经。这个经不像唐僧取经一样&#xff0c;需要历经九九八十一难…

ImmunoChemistry艾美捷通用阻断ELISA阻断缓冲液说明书

ImmunoChemistry艾美捷通用阻断ELISA阻断缓冲液包含适用于大多数抗体捕获ELISA格式和肽或蛋白质抗原下调ELISA格式的哺乳动物蛋白质阻断剂。这种封闭缓冲液为干燥的抗原或抗体外壳蛋白提供了长期稳定的环境&#xff0c;并使测定过程中的非特异性结合相互作用最小化。 General B…

中石油测井-技术研发岗回顾

前提&#xff1a; 时间&#xff1a;2022年11月25日 结果&#xff1a;暂未可知 阶段&#xff1a;面试结束 等结果 整个过程中&#xff0c;注意查看官网 中石油招聘 投递之前关注一下基本要求&#xff08;学历-专业&#xff09; 招聘人数&#xff1a;应聘人数 &#xff08;通过能…

【富文本编辑器】Ueditor的demo——创建、修改——代码使用

文章目录富文本编辑器简述&#xff1a;使用&#xff1a;1.下载的demo&#xff1a;2.项目创建&#xff1a;3.修改代码&#xff1a;4.使用富文本编辑器&#xff1a;示例&#xff1a;富文本编辑器 Ueditor的资源官网&#xff1a;http://fex.baidu.com/ueditor/ 资源下载官网&…

【Linux】进程优先级(PRI,NI)和进程切换

1、进程优先级 无论是外设还是CPU&#xff0c;所能提供给操作系统的资源很少&#xff0c;而操作系统中的进程又非常多&#xff0c;安排谁先使用资源&#xff0c;就需要进程优先级的存在。   查看进程优先级 ps -al 查看当前运行进程的优先级信息。 ps -al | grep test 配合…

卫龙食品冲刺港股:上半年经调整利润超4亿 高瓴与红杉是股东

雷帝网 雷建平 11月24日卫龙食品日前更新招股书&#xff0c;准备在香港上市。这是卫龙食品通过聆讯后第二次更新招股书。卫龙食品的前身可追溯到20多年前。当年&#xff0c;卫龙食品创办人刘卫平下了火车&#xff0c;找到一个简陋的小旅馆休息&#xff0c;天亮后&#xff0c;就…

DirectX12 - Swap Chain(交换链)

这里是SunshineBooming&#xff0c;GPU公司一枚小小的Driver工程师&#xff0c;主要工作是写DirectX12 Driver&#xff0c;我会持续更新这个DX12 Spec系列&#xff0c;可能比较冷门&#xff0c;但是都是干货和工作中的心得体会&#xff0c;有任何GPU相关的问题都可以在评论区互…

宠物经济:千亿级的孤独生意,如何用智能化玩出新花样?

今年双十一&#xff0c;由铲屎官们主导的宠物经济成功实现逆增长&#xff0c;在众多行业中脱颖而出&#xff0c;成为消费疲软环境下的一匹强势黑马。 天猫、京东数据显示&#xff1a;双十一期间&#xff0c;天猫平台宠物烘焙粮销量同比增长超 700%&#xff0c;京东平台宠物高端…

js逆向tips-某思录登录

0. 写在最前 现在很多时候我们再网页上进行操作时都是用http协议进行一个交流&#xff0c;前端后也是如此&#xff0c;现在的开发模式大部分都是前后端分离的一个交互模式&#xff0c;那就意味着前端发送请求时也是和我们点击按钮一样去向后端发送一个请求&#xff0c;那这种请…

Pr 时间重映射卡点

哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何通过用Pr时间重映射做出卡点的效果~ 卡点音乐 一首适合卡点&#xff08;群青为例&#xff09;的音乐可以帮助我们更好的掌握视频的节奏&#xff0c;卡点可以采用手动卡点&#xff0c;方法可以通过在峰值最高处标…

3.66 OrCAD中不同的工程文件,怎么输出所需要工程文件的网表?OrCAD中怎么给元器件自定义属性?

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

vue如何通过VNode渲染节点

vue如何通过VNode渲染节点vue的源码包含三大核心实现一个Mini-Vue渲染系统的实现vue2和vue3写法上的区别vue的源码包含三大核心 Compiler模块&#xff1a;编译模板系统 Runtime模块&#xff1a;也可以称之为Renderer模块&#xff0c;真正的渲染的模块 Reactivity模块&#x…

合成孔径雷达地面运动目标检测技术研究——基于概率图(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

SpringCloud学习笔记(四)

文章目录SpringCloud学习笔记(四)1.说在前面2.OpenFeign 简介3.OpenFeign 快速入门3.1 本次调用的设计图3.2 启动一个 eureka-server 服务&#xff0c;这里不重复演示&#xff0c;参考 eureka3.3 先创建 01-order-service&#xff0c;选择依赖3.4 创建 02-user-consumer&#x…

Uni-app常用知识点总结

一、一句话总的形容一下uniapp与vue和微信小程序的异同点 简单来讲Uni-app就是用着vue的指令和小程序的组件和API 二、Uniapp中配置tabbar的方式 见之前的单独文章—— (3条消息) Uni-app中的tabBar的配置_终将抵达丶的博客-CSDN博客_uniapp设置tabbar图片大小https://blog.…