6.4 构建并评价回归模型

news/2024/11/30 9:49:59/

6.4 构建并评价回归模型

  • 6.4.1 使用sklearn估计器构建线性回归模型
  • 6.4.2 评价回归模型
  • 小结

6.4.1 使用sklearn估计器构建线性回归模型

  按照研究方法划分,回归分析研究的范围大致如图所示:
在这里插入图片描述
  在回归模型中,自变量与因变量具有相关关系,自变量的值是已知的,因变量是要预测的。回归算法的实现步骤和分类算法基本相同,分为学习和预测2个步骤。学习是通过训练样本数据来拟合回归方程;预测则是利用学习过程中拟合出的回归方程,将测试数据放入方程中求出预测值。
  常用的回归模型如下:
在这里插入图片描述
  Sklearn库内部有不少回归算法,常用的回归算法如下:
在这里插入图片描述

我要用到的:
from sklearn.ensemble import RandomForestRegressor
from sklearn. ensemble import AdaBoostRegressor
from sklearn.ensemble import GradientBoostingRegressor
from xgboost import XGBRegressor
from lightgbm import LGBMRegressor

# 6.4 构建并评价回归模型
# 6.4.1 使用sklearn估计器构建线性回归模型
# 6-24 使用sklearn估计器构建线性回归模型
## 加载所需函数
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
## 加载boston数据
boston = load_boston()
X = boston['data']
y = boston['target']
names = boston['feature_names']
## 将数据划分为训练集、测试集
X_train, X_test, y_train, y_test =train_test_split(X,y,test_size=0.2, random_state=125)
# 建立线性回归模型
clf = LinearRegression().fit(X_train, y_train)
print("建立的模型为:\n", clf)
# 预测测试集结果
y_pre = clf.predict(X_test)
print('预测的前20个结果:', y_pre[:20])

在这里插入图片描述

# 6-25 回归结果可视化
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.sans-serif'] = 'SimHei'
fig = plt.figure(figsize=(10,6))  # 设定空白画布,并制定大小
plt.plot(range(y_test.shape[0]), y_test, color='blue', linewidth = 1.5, linestyle='-')
plt.plot(range(y_test.shape[0]), y_pre, color='red', linewidth = 1.5, linestyle='-.')
plt.xlim((0,102))
plt.ylim((0,55))
plt.legend(['真实值', '预测值'])
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/6.4波士顿房价回归结果可视化.png')
plt.show()

在这里插入图片描述

6.4.2 评价回归模型

  回归模型的性能评估不同于分类模型,虽然都是对照真实值进行评估,但由于回归模型的预测结果和真实值都是连续的,所以不能够求取Precision、Recall和F1值等评价指标。
  回归模型评价指标:
在这里插入图片描述
  平均绝对误差、均方误差和中值绝对误差的值越靠近0,模型性能越好。可解释方差值和R方值则越靠近1,模型性能越好。

# 6.4.2 评价回归模型
from sklearn.metrics import explained_variance_score, mean_absolute_error, mean_squared_error, median_absolute_error, r2_score
mae = mean_absolute_error(y_test, y_pre)
print("平均绝对误差MAE =",mae)
mse = mean_squared_error(y_test, y_pre)
print("均方误差MSE =",mse)
r2 = r2_score(y_test, y_pre)
print("R2 =",r2)
med_abs = median_absolute_error(y_test, y_pre)
print("中值绝对误差 =",med_abs)
var = explained_variance_score(y_test, y_pre)
print("可解释方差 =",var)

在这里插入图片描述

小结

  本章主要根据数据分析的应用分类,重点介绍了对应的数据分析建模方法及实现过程。
  sklearn数据分析技术的基本任务主要体现在聚类、分类和回归三类。每一类又有对应的多种评估方法,能够评价所构建模型的性能优劣。
  通过这一章的学习,读者基本能够掌握常用的模型构建与评估方法,可在以后的数据分析过程中采用适当的算法并按所介绍的步骤实现综合应用。


http://www.ppmy.cn/news/343171.html

相关文章

postman中级:导入文件数据,批量化参数

建议阅读对象:已掌握postman的基本使用(参见:postman入门-主界面认识,模拟请求) 本地安装的版本:Postman for Windows Version 10.14.9 1.创建csv文件 或 txt文件 文件数据格式: 第一行写下参…

002、体系结构之TiDB Server

TiDB Server 1、TiDB总览1.1、TiDB Server架构1.2、TiDB Server 主要功能: 2、SQL语句处理语句的解析和编译SQL层协议层上下文解析层逻辑优化器物理优化器本地执行器分布式执行器 3、如何将表的数据转成kv形式4、在线DDL相关模块5、GC机制与相关模块6、TiDB Server …

办公操作2:局域网连不上打印机(hp701m)的操作

办公室新的电脑(win7系统)和打印机hp701m连接不上。 一般有两种连接打印机的方法: 1,添加打印机—搜索局域网共享的打印机,搜到后安装就可以使用。 2,在资源管理器里面输入“\192.168.1.103”(打…

Java网络编程学习

网络编程 1.1网路通信的要素 如何实现网络通信? ​ 通信双方地址: IP地址端口号 规则:网络通信的协议 ​ TCP、IP参考模型 ​ OSI七层参考模型 网络编程主要地方 小结: 网络编程中主要存在的问题: 如何准确定…

Java:网络编程

文章目录 一、计算机网络1.1 概述1.2 网络编程的目的1.3 需要的条件 二、网络通信两要素2.1 IP地址2.2 端口Port 三、通信协议3.1 OSI七层网络模型和TCP/IP四层概念3.2 三次握手3.3 四次挥手 四、TCP4.1 类4.2 聊天4.3 TCP文件上传 五、UDP5.1 类5.2 多线程聊天 六、URL6.1 常用…

网络编程全解(Java)

网络编程 1.1 概述 计算机网络: 计算网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递计算…

超详细的文件上传和下载(Spring Boot)

超详细的文件上传和下载 前言Ⅰ:RequestParam和RequestPart的区别 RequestPart RequestPart这个注解用在multipart/form-data表单提交请求的方法上。支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输…

URL编码与解码

URL编码与解码 通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。 例如,Url参数字符…