机器学习实战演练 波士顿房价预测与模型评估

介绍数据集:

本数据集共有506个样本,每个样本有13个特征及标签MEDV
特征信息:
CRIM 城镇人均犯罪率
ZN 占地面积超过2.5万平方英尺的住宅用地比例
INDUS 城镇非零售业务地区的比例
CHAS 查尔斯河虚拟变量 (= 1 如果土地在河边;否则是0)
NOX 一氧化氮浓度(每1000万份)
RM 平均每居民房数
AGE 在1940年之前建成的所有者占用单位的比例
DIS 与五个波士顿就业中心的加权距离
RAD 辐射状公路的可达性指数
TAX 每10,000美元的全额物业税率
PTRATIO 城镇师生比例
B 1000(Bk - 0.63)^2 其中 Bk 是城镇的黑人比例
LSTAT 人口中地位较低人群的百分数
MEDV 以1000美元计算的自有住房的中位数

实战演练:

1.导入所需要的包

from sklearn.datasets import load_boston
import numpy as np
import pandas as pd
import matplotlib.pyplot as pl

2.加载数据集

boston = load_boston()#加载数据集
print(type(boston))
print(boston.data.shape)#(506,13)
#初始化一个DataFrame
data = pd.DataFrame(boston.data)
print(type(data))
display(data)#如下图1所示
#给DataFrame加载一个变量
data.columns = boston.feature_names
print(type(data.columns))
print(data.shape)
display(data)#如下图二所示

在这里插入图片描述
在这里插入图片描述

3、给DataFrame加载一个变量

#加载一个可变的target给DataFrame
data['PRICE'] = boston.target
print(data.shape)50614)
data.columns
'''
Index(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX','PTRATIO', 'B', 'LSTAT', 'PRICE'],dtype='object')
'''
data.dtypes
'''
CRIM       float64
ZN         float64
INDUS      float64
CHAS       float64
NOX        float64
RM         float64
AGE        float64
DIS        float64
RAD        float64
TAX        float64
PTRATIO    float64
B          float64
LSTAT      float64
PRICE      float64
dtype: object
'''
data.nunique()#每一列中不重复的数据个数
'''
CRIM       504
ZN          26
INDUS       76
CHAS         2
NOX         81
RM         446
AGE        356
DIS        412
RAD          9
TAX         66
PTRATIO     46
B          357
LSTAT      455
PRICE      229
dtype: int64
'''

4.数据的检测

#检查错误值
print(type(data.isnull()))
#i返回布尔值;该处为缺失值,返回True,该处不为缺失值,则返回False
#data.isnull()
#每列缺失值的个数
print(data.isnull().sum())
#print(type(data.isna()))
#检测缺失值
#print(data.isna().sum())#每列中缺失值的个数
# print(data.isnull().any(axis=1))#检查每行的缺失值
'''
<class 'pandas.core.frame.DataFrame'>
CRIM       0
ZN         0
INDUS      0
CHAS       0
NOX        0
RM         0
AGE        0
DIS        0
RAD        0
TAX        0
PTRATIO    0
B          0
LSTAT      0
PRICE      0
dtype: int64
'''

5、分析数据

data.describe()#统计数据

在这里插入图片描述

import seaborn as sn
#计算数据的相关性
corr = data.corr()
corr.shape
#print('corrlation matrix')
#print(type(corr))
#print(corr)
plt.figure(figsize=(20,20))
ax = sn.heatmap(corr,square=True,fmt='.2f',annot=True,linewidths=.5,annot_kws={'size':15},cmap='YlGnBu')
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
cbar = ax.collections[0].colorbar
cbar.ax.tick_params(labelsize=20)

在这里插入图片描述

6、切分数据集

#trainData+features
X = data.drop(['PRICE'],axis=1)
#testData+label
y = data['PRICE']
from sklearn.model_selection import  train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=4)

7、线性回归算法

1、调用模型
#线性回归算法
from sklearn.linear_model import LinearRegression
lm = LinearRegression()
lm.fit(X_train,y_train)
2、模型评估
“斜率”参数(w,也叫作权重或系数)被保存在coef_属性中,而便宜或截距(b)被保存在intercept_属性中。
# 例如:g(x) = w1x1 + w2x2 + w3x3 + w0
print(lm.intercept_)#即为W0
print('---------------')
print(lm.coef_)#即为W1、W2、W3
print(lm.coef_.shape)
'''
36.35704137659441
---------------
[-1.22569795e-01  5.56776996e-02 -8.83428230e-03  4.69344849e+00-1.44357828e+01  3.28008033e+00 -3.44778157e-03 -1.55214419e+003.26249618e-01 -1.40665500e-02 -8.03274915e-01  9.35368715e-03-5.23477529e-01]
(13,)
'''
#转换成一个DataFrame
coeffcients = pd.DataFrame([X_train.columns,lm.coef_]).T
coeffcients = coeffcients.rename(columns={0:'Attribute',1:'Coefficients'})
coeffcients

在这里插入图片描述
R方(R-squared):衡量模型拟合度的一个量,用来度量未来的样本是否可能通过模型被很好地预测。分值为1表示最好,它可以是负数(因为模型可以很糟糕);
调整R方(Adjusted R-Square):用r square的时候,不断添加变量能让模型的效果提升,而这种提升是虚假的。用adjusted r square,能对添加的非显著变量给出惩罚,也就是说随意添加一个变量不一定能让模型拟合度上升。
平均绝对误差(Mean absolute error):该指标对应于绝对误差loss(absolute error loss)或l1范式loss(l1-norm loss)的期望值。
均方误差(Mean squared error):该指标对应于平方(二次方)误差loss(squared (quadratic) error loss)的期望值。
均方根误差(RMSE):RMSE其实是MSE开根号,两者实质一样,但RMSE能更好的描述数据。

#模型预测train data
y_pred = lm.predict(X_train)#模型评估
from sklearn import metrics
print('R^2:',metrics.r2_score(y_train,y_pred))#决定系数
print('Adjusted R^2',1-(1-metrics.r2_score(y_train,y_pred))*(len(y_train)-X_train.shape[1]-1))#校正决定系数
print('MAE:',metrics.mean_absolute_error(y_train,y_pred))
print('MSE:',metrics.mean_squared_error(y_train,y_pred))
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_train,y_pred)))
'''
R^2: 0.7465991966746854
Adjusted R^2 -85.15627313060695
MAE: 3.0898610949711287
MSE: 19.073688703469035
RMSE: 4.367343437774162
'''
#比较精确的 PRICE 和 预测值
plt.figure(figsize=(10,10),dpi=500)
plt.scatter(y_train,y_pred)
plt.xlabel('Prices')
plt.ylabel("Preadicted prices")
plt.title("price vs Predicted Prices")
plt.show()

在这里插入图片描述

#检查剩余误差
plt.figure(figsize=(10,10),dpi=500)
plt.scatter(y_pred,y_train-y_pred)
plt.xlabel('Predicted')
plt.ylabel("Residuals")
plt.title("Residuals vs Predicted ")
plt.show()

在这里插入图片描述

#检测误差
plt.figure(figsize=(7,7),dpi=500)
sn.distplot(a=y_train - y_pred,color='#9b59b6')
plt.title('Histogram of Residuals')
plt.xlabel("Residuals")
plt.ylabel("Frequency")
plt.show()

在这里插入图片描述

#预测test data
y_test_pred = lm.predict(X_test)
#衡量模型拟合度的一个量,用来度量未来的样本是否可能通过模型被很好地预测。分值为1表示最好,它可以是负数(因为模型可以很糟糕)
print('R^2:',metrics.r2_score(y_test,y_test_pred))#决定系数
print('Adjusted R^2',1-(1-metrics.r2_score(y_test,y_test_pred))*(len(y_train)-X_train.shape[1]-1))#校正决定系数
print('MAE:',metrics.mean_absolute_error(y_test,y_test_pred))
print('MSE:',metrics.mean_squared_error(y_test,y_test_pred))
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_test,y_test_pred)))
'''
R^2: 0.7120461624218637
Adjusted R^2 -96.90430477656635
MAE: 3.8670693946558057
MSE: 30.068160533746802
RMSE: 5.483444221814133
'''

8、模型改进

1、对数据进行标准化
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
2、引如xgboost模型
# Import XGBoost Regressor
from xgboost import XGBRFRegressor
xg = XGBRFRegressor()
xg.fit(X_train,y_train)
3、模型评估
#模型预测 train data
y_pred = xg.predict(X_train)#模型评估
from sklearn import metrics
#衡量模型拟合度的一个量,用来度量未来的样本是否可能通过模型被很好地预测。分值为1表示最好,它可以是负数(因为模型可以很糟糕)
print('R^2:',metrics.r2_score(y_train,y_pred))#决定系数
print('Adjusted R^2',1-(1-metrics.r2_score(y_train,y_pred))*(len(y_train)-X_train.shape[1]-1))#校正决定系数
print('MAE:',metrics.mean_absolute_error(y_train,y_pred))
print('MSE:',metrics.mean_squared_error(y_train,y_pred))
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_train,y_pred)))
'''
R^2: 0.9610761807415549
Adjusted R^2 -12.234098547871342
MAE: 1.338177258011985
MSE: 2.929828169220753
RMSE: 1.7116740838199171
'''
plt.scatter(y_train, y_pred)
plt.xlabel("Prices")
plt.ylabel("Predicted prices")
plt.title("Prices vs Predicted prices")
plt.show()

在这里插入图片描述

plt.scatter(y_pred,y_train-y_pred)
plt.title("Predicted vs residuals")
plt.xlabel("Predicted")
plt.ylabel("Residuals")
plt.show()

在这里插入图片描述

y_test_pred = xg.predict(X_test)print('R^2:',metrics.r2_score(y_test,y_test_pred))#决定系数
print('Adjusted R^2',1-(1-metrics.r2_score(y_test,y_test_pred))*(len(y_train)-X_train.shape[1]-1))#校正决定系数
print('MAE:',metrics.mean_absolute_error(y_test,y_test_pred))
print('MSE:',metrics.mean_squared_error(y_test,y_test_pred))
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_test,y_test_pred)))
'''
R^2: 0.8280047551811247
Adjusted R^2 -57.4783832384176
MAE: 2.716848931814495
MSE: 17.95975589612247
RMSE: 4.23789522004998
'''

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这就是波士顿动力第一款商用产品「机器狗」Spot

波士顿动力 CEO Marc Raibert 告诉《The Verge》称&#xff0c;最近 Spot 正在大量的「概念验证」环境下接受测试&#xff0c;包括包裹递送和监控作业。他表示&#xff0c;尽管商用版 Spot 没有具体的上线日期&#xff0c;但应该会在几个月内与公众见面&#xff0c;并且年底前肯…

波士顿动力9.21亿美元被卖,地主家也养不起网红机器狗

据韩国经济日报消息&#xff0c;消息人士透露在今天上午的董事会上&#xff0c;韩国现代集团确认将以不到一万亿韩元&#xff08;约9.21亿美元&#xff09;收购波士顿动力。 消息人士称&#xff0c;为完成波士顿动力收购&#xff0c;现代汽车已聘请高盛&#xff08;Goldman Sa…

科普分享 | 波士顿动力机器人进化史

我想很多人都看过美国科幻电影系列《终结者》&#xff0c;著名电影杂志《电影周刊》在评选20世纪最值得收藏的一部电影时&#xff0c;此片以最高票数位居第一。科幻是现实对历史的镜像&#xff0c;机器人领域最让人津津乐道的莫过于波士顿动力公司了。 图1 《终结者》剧照 波士…

人工智能与大数据—线性回归之波士顿房价预测

一&#xff0c;首先导入必要的包 1&#xff0c;paddle.fluid--->PaddlePaddle深度学习框架 2&#xff0c;numpy---------->python基本库&#xff0c;用于科学计算 3&#xff0c;os------------------>python的模块&#xff0c;可使用该模块对操作系统进行操作 4&a…

波斯顿动力机器人为啥那么牛逼?

关注星标公众号&#xff0c;不错过精彩内容 作者 | strongerHuang 微信公众号 | 嵌入式专栏 原文&#xff1a;1980 - 2022年&#xff0c;波斯顿动力发展历程、机器人产品分类汇总。 视频&#xff1a;位于我的视频号『strongerHuang』中视频专辑《斯顿动力机器人》&#xff08;第…

思考累了,看看故事:波士顿动力公司大狗系列--SpotMini

2016年6月23日&#xff0c;Boston Dynamics在YouTube发布了他们新一款的机器人SpotMini&#xff0c;截止26日&#xff0c;网上已经有超过200万人观看过这段视频&#xff0c;再加上国内视频的转发&#xff0c;观看量可想而知。这个热门程度有不禁让人想起来今年年初新一代Atlas发…

波士顿动力机器狗在工厂打工的实录火了

博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI 实验室里的波士顿动力狗&#xff0c;跳舞跑酷后空翻&#xff0c;堪称狗界网红&#xff0c;机器界顶流&#xff1a; 但如果出了实验室&#xff0c;开始正经找个厂上班呢&#xff1f; 机器狗的生活就变成了现在这样&#xff1a; 迈着…

开源教程 | 树莓派 DIY 波士顿动力机器狗,立省 53 万 RMB

国外小哥 Michael Romanko 利用树莓派3B&#xff0c;伺服电机&#xff0c;液晶显示器&#xff0c;锂电池&#xff0c;PCA9695控制板打造了一只波士顿动力机器狗&#xff0c;成本不到4000元。 通过三轴身体姿态控制&#xff0c;这样一只树莓派版波士顿动力狗&#xff0c;可以实现…

波士顿动力真的无可企及吗?一步步剖析四足机器人技术(一)

四足机器人运动控制 第一章 序第二章 运动状态姿态控制运动控制 第三章 步态第四章 CPG控制网络介绍CPG模型分类基于HOPF振荡器的CPG单元模型CPG网络控制模型 Tips参考文献 大家可以先看看效果 [四足机器人]开环运动控制测试 第一章 序 足式机器人较传统的四轮式和履带式有着…

自己动手做个DIY波士顿机器狗

我想来整个DIY波士顿机器狗。 中文的介绍: https://www.qbitai.com/2020/08/17572.html 软件安装: https://github.com/mike4192/spotMicro 硬件制作: https://www.thingiverse.com/thing:3445283 中文介绍是这样的: 用树莓派DIY波士顿机器狗,帮你省下50万:教程开…

波士顿仿生机械狗 原理分析

导语&#xff1a;Boston Dynamics 在机器人动力方面堪称翘楚&#xff0c;其由双足或多足机器人组成的机器人天团总是时不时能给我们带来惊喜。上周&#xff0c;Boston Dynamics 又发布了一段视频&#xff0c;并再次推出了一款全新机器人——Handle&#xff0c;这也是Boston Dyn…

数据可视化分析报告这样做,大家都轻松

在BI数据可视化工具上这样做分析报告&#xff0c;智能分析、可视化呈现&#xff0c;拖拉拽点击就能快速完成一份数据可视化分析报告。不仅做分析报告的人轻松了&#xff0c;看报表的也轻松了&#xff0c;毕竟除了能够一眼看懂分析报告&#xff0c;更能够随时随地根据实际需求去…

数据分析-01数据分析之数据可视化(转)

声明&#xff1a;数据分析01-08均来自尚学堂学习内容&#xff0c;文档仅供学习交流使用&#xff0c;已上传github 一、数据分析介绍 什么是数据分析&#xff1a; 百度百科&#xff1a;数据分析是指用适当的统计分析方法对收集来的大量数据进行分析&#xff0c;提取有用信息和…

一般用哪些工具做大数据可视化分析?

做数据分析这些年来&#xff0c;从刚开始的死磕excel&#xff0c;到现在成为数据分析行业的偷懒大户&#xff0c;使用过的工具还真不少&#xff01; 这篇分享一些我在可视化工具上的使用心得&#xff0c;由简单到复杂&#xff0c;按照可视化类型一共分为纯统计图表类、GIS地图…

如何做好数据可视化分析?

数据可视化是利用计算机图形学和图像处理技术&#xff0c;将数据转换成图形或图像在屏幕上显示出来&#xff0c;并进行交互处理的理论、方法和技术。数据可视化的实质是借助图形化手段&#xff0c;清晰有效的传达与沟通信息&#xff0c;使通过数据表达的内容更容易被理解。 那…

数据分析与可视化概述

目录 一、数据分析 二、数据可视化 三、数据分析与可视化常用工具 四、为什么用python进行数据分析与可视化 爬取数据需要 Python 数据分析需要 Python Python 语言简单高效 五、Python 数据分析与可视化常用库 1、Numpy 2、Pandas 3、Matplotlib 4、SciPy 5…

如何实现数据可视化分析?有这个解决方案就够了

在这个数据呈爆炸式增长的时代&#xff0c;每天都有海量数据在产生。如何通过简单的方式实现业务上的分析、计算、交互&#xff0c;并最终呈现出可视化的分析结果&#xff0c;帮助业务人员更好地理解数据的价值&#xff0c;将数据变现&#xff0c;是当前众多企业都需要面对的问…

数据可视化之平台数据分析

一 前言 近年来&#xff0c;随着网络技术和电子商务的发展&#xff0c;对科学数据分析的研究提出了更高的要求&#xff0c;数据分析技术随之发展起来。我们可以通过数据分析技术&#xff0c;发现大量金融、通信和商业数据中隐含的规律&#xff0c;从而为决策提供依据。这已成为…

数据可视化分析工具如何在国内弯道超车,迅速崛起?

什么是数据可视化 数据可视化&#xff1a;Data Visualization&#xff0c;即视觉传达&#xff0c;为了清晰有效地传递信息&#xff0c;数据可视化通过统计图形、图表、信息图表和其他工具&#xff0c;例如点、线或条对数字数据进行编码&#xff0c;以便在视觉上传达定量信息。…

数据可视化(推荐Tableau、 PowerBI 、FineBI、Echarts、ggplot、PYTHON、R)---数据分析领域的万金油技能

首先&#xff0c;这是一篇扩大知识面的文章&#xff0c;适合收藏起来&#xff0c;在地铁&#xff0c;公交&#xff0c;厕所&#xff0c;睡前&#xff0c;吃饭时看。。。。&#xff08;耶&#xff0c;恶趣味&#xff09; 其次&#xff0c;本文不放图&#xff0c;节省大家的阅读…