普通线性回归和评估指标代码实战

news2024/11/25 7:20:01

        我们用加州房价预测来讲述普通线性回归的算法实战和预测指标。在这里省去数据预处理和特征工程的步骤。首先导入相应的模块:

from sklearn.linear_model import LinearRegression as LR
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.datasets import fetch_california_housing as fch #加利福尼亚房屋价值数据集
import pandas as pd

接下来导入数据:

housevalue = fch() #会需要下载

然后我们用特征名字替换原有的column名,pd.dataframe将数据转化为数据框格式,数据拆分并重置索引:

X.columns = housevalue.feature_names
X = pd.DataFrame(housevalue.data) 
y = pd.DataFrame(housevalue.target)
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3,random_state=420)

可以看到划分出来的数据集索引的乱的,因此我们要重置索引:

#恢复索引
for i in [Xtrain, Xtest]:
    i.index = range(i.shape[0])

接下来我们训练模型:

reg = LR().fit(Xtrain, Ytrain)

用训练好的模型去预测我们的yhat:

yhat = reg.predict(Xtest) #预测我们的yhat

查看每个变量对应的参数值:

[*zip(Xtrain.columns,reg.coef_.reshape(-1))]

查看截距:

reg.intercept_

现在我们用MSE(均方误差)和r2来评判模型的好坏。MSE用来预测是否预测到了正确的数值,R2用来判断是否拟合了足够多的信息,MSE越小越好,R2越接近1越好:

在这里我们用交叉验证去获得MSE值和R2:

from sklearn.metrics import mean_squared_error as MSE
cross_val_score(reg,X,y,cv=10,scoring="neg_mean_squared_error").mean()
from sklearn.metrics import r2_score
cross_val_score(reg,X,y,cv=10,scoring="r2").mean()

      我们观察到,我们在加利福尼亚房屋价值数据集上的MSE其实不是一个很大的数(0.5),但我们的R2不高,百分之四十几的信息都被遗漏掉了。这证明我们的模型比较好地拟合了一部分数据的数值,却没有能正确拟合数据的分布。让我们与绘图来看看,究竟是不是这 样一回事。我们可以绘制一张图上的两条曲线,一条曲线是我们的真实标签Ytest,另一条曲线是我们的预测结果 yhat,两条曲线的交叠越多,我们的模型拟合就越好:
 

plt.plot(range(len(Ytest)),sorted(Ytest),c="black",label= "Data")
plt.plot(range(len(yhat)),sorted(yhat),c="red",label = "Predict")
plt.legend()
plt.show()

      可见,虽然我们的大部分数据被拟合得比较好,但是图像的开头和结尾处却又着较大的拟合误差。如果我们在图像右 侧分布着更多的数据,我们的模型就会越来越偏离我们真正的标签。这种结果类似于我们前面提到的,虽然在有限的数据集上将数值预测正确了,但却没有正确拟合数据的分布,如果有更多的数据进入我们的模型,那数据标签被预测 错误的可能性是非常大的。

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

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

相关文章

基于若依的ruoyi-nbcio流程管理系统增加读取节点扩展属性的方法

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 我们的在流程设计器里会根据需要再不同的节点增加扩展属性,如何动态读取这些扩展属性&#xff…

机器人仿真GAZEBO开源代码分享

1、https://github.com/PRBonn/agribot 2、https://github.com/ros-mobile-robots/diffbot

OpenHarmony worker详解

一,定义 worker是与主线程并行的独立线程。创建Worker的线程被称为宿主线程,Worker工作的线程被称为Worker线程。创建Worker时传入的脚本文件在Worker线程中执行,通常在Worker线程中处理耗时的操作,需要注意的是,Work…

【开源项目】snakeflow流程引擎研究

项目地址 https://gitee.com/yuqs/snakerflow https://toscode.mulanos.cn/zc-libre/snakerflow-spring-boot-stater (推荐) https://github.com/snakerflow-starter/snakerflow-spring-boot-starter 常用API 部署流程 processId engine.process().de…

仓库管理系统(WMS)升级解决方案—条码引入

在企业的整个供应链中,仓储起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。 传统简单、静态的仓库管理通常以结果为导向&#xff0…

windows aseprite编译指南(白嫖)

aseprite是画像素图的专业软件,steam上有售卖,不过官方也在github开源了,需要自己编译。 1. 首先获取源码 直接在github上clone源码到本地指定目录 git.bash中执行(需要腾一个用来安放源码的路径): git…

react脚手架create-react-app创建react项目

1.全局安装 create-react-app winR/桌面目录下cmd进入终端页面 npm i -g create-react-app2.create-react app 初始化项目 create-react-app 项目名称项目初始化完成 运行项目 目录下cmd控制台输入 npm start然后打开本地服务运行项目查看

RE切入点:选择SLI,设定SLO

还是先来复习下上节课讲的“系统可用性”的两种计算方式,一种是从故障角度出发,以时长维度对系统进行稳定性评估;另一种是从成功请求占比角度出发,以请求维度对系统进行稳定性评估。同时,我们还讲到,在 SRE…

飞天使-django创建一个初始项目过程

创建django项目 运行项目 运行命令 pyhont manage.py runserver 然后访问 http://127.0.0.1:8000/, 则可以打开本地新建的项目 虚拟环境的部署-mac 在一台计算机上可以通过虚拟环境实现多个版本Django的开发环境 安装虚拟环境工具:如果你的系统中没有安…

线性代数(三) | 向量组的秩 线性相关无关 几何直观理解 题解应用

文章目录 1 维数?向量组的秩究竟是什么?1.1 线是一维的1.2 面是二维的1.3 体是三维的 2 线性相关、线性无关、线性表示究竟是什么?2.1 基于以上几何直观的解题角度2.2 基于方程组的解题角度 1 维数?向量组的秩究竟是什么&#xff…

考研的风吹到你了吗?中国人民大学与加拿大女王大学金融硕士为你提供另一读研途径

24考研的风吹到你了吗?随着社会的不断发展,越来越多的人选择继续深造,通过考研来提升自己的学历和能力。然而,考研并不是一件容易的事情,需要付出大量的时间和精力。面对国内竞争激烈的考研环境,许多人会选…

图解Morris遍历

1. 简述 morris遍历是不借助栈空间实现二叉树遍历的一种方法。 其核心思想是,利用当前节点左子树的最右叶子节点当索引节点。 即中序遍历的前驱节点。 第一次遍历根节点的时候,找到该节点,将该节点右儿子指向根节点。 第二次回到该节点时…

什么是指纹浏览器?——社媒营销多账号的管理神器

对于跨境卖家来说,通过海外社媒平台进行引流推广是不错的选择,但在实际操作中我们总会遇到很多问题。比如老手们肯定都经历过多个账号被封禁的情况,如果你也跟以前的东哥一样困扰怎么在一台电脑登录同平台多个账号,那今天这篇文章…

下载并安装DevEco Studio 3.1,初尝鸿蒙编程

摘自华为官网 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发,提供了代码智能编辑、低代码开发、双向预览等功能,以及轻量构建工具DevEco Hvigor 、本地模拟器,持续提升应用及服务开发效率。 下载 官网下载地址 HUAWEI…

2023年云计算的发展趋势

随着互联网和信息技术的快速发展,云计算已经成为了企业和个人的重要工具,而在未来,云计算仍然会持续发展,并且发展趋势会更加迅猛。在本文中,我们将讨论2023年云计算的发展趋势。 一、混合云将成为主流 混合云是指将公…

任正非说:流程主要是为一线作战服务,流程是手段,支撑一线、服务市场才是目的。

你好!这是华研荟【任正非说】系列的第37篇文章,让我们聆听任正非先生的真知灼见,学习华为的管理思想和管理理念。 华研荟注:昨天的任正非先生讲话主要谈了IPD、ISC两个主业务流程,今天主要来看看任正非先生关于LTC的一…

企业微信后台通过小程序给员工发送文字信息附带超链接实现(加上A标签:<a href=“网址“> </a>)

如下&#xff0c;在编辑文本消息的时候&#xff0c;添加上HTML的A标签 <a href"www.baidu"> </a>即可实现点击直接跳转

uniapp: 实现pdf预览功能

目录 第一章 实现效果 第二章 了解并解决需求 2.1 了解需求 2.2 解决需求 2.2.1 方法一 2.2.2 方法二 第三章 资源下载 第一章 实现效果 第二章 了解并解决需求 2.1 了解需求 前端需要利用后端传的pdf临时路径实现H5端以及app端的pdf预览首先我们别像pc端一样&#…

接口自动化测试操作流程

接口自动化大致步骤&#xff1a; 1、发送请求 2、解析结果 3、验证结果 定义三个和业务相关的类 1、一个用来封装HTTPclient&#xff0c;用来发送请求 2、解析结果xml的类 3、一个用于比较测试结果和期望值的类&#xff0c;用于验证 4、自动生成报告的类&#xff1a;自…

网络安全/黑客技术(0基础入门到进阶提升)

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习…