大学生课程|统计基础与python分析2|实战:线性回归评估(免费下载所有课程材料)

news/发布时间2024/5/15 16:23:49

本文所有材料均可免费下载

目录

本文所有材料均可免费下载

线性回归模型评估

1 一元线性回归代码

1.1 线性回归模型评估代码

1.2 显示结果

1.3 结果解读

2  一元二次线性回归

2.1 一元二次回归代码

2.2 模型评估

2.3 显示结果

2.4 结果解读

3 获取R-squared值的另一种方法


久菜盒子工作室:大数据科学团队/全网可搜索的久菜盒子工作室 我们是:985硕博/美国全奖doctor/计算机7年产品负责人/医学大数据公司医学研究员/SCI一区2篇/Nature子刊一篇/中文二区核心一篇/都是我们 主要领域:医学大数据分析/经管数据分析/金融模型/统计数理基础/统计学/卫生经济学/流行与统计学/ 擅长软件:R/python/stata/spss/matlab/mySQL

团队理念:从零开始,让每一个人都得到优质的科研教育

点点关注,一起成长,会变更强哦

本次责任编辑:久菜老师

线性回归模型评估

R-squared,统计学中的R^2,衡量线性拟合的优劣。取值范围为0-1,越高(接近1),模型的拟合程度越高。

Adj. R-squared,即Adjusted R^2,衡量线性拟合的优劣。取值范围为0-1,越高(接近1),模型的拟合程度越高。

P值,衡量特征变量的显著性。本质是个概率值,其取值范围也为0-1。如果P值越低(接近0),那么该特征变量的显著性越高,也即真的和预测变量有相关性。通常以0.05为阈值,即小于0.05时,特征变量与目标变量有显著相关性。

需要安装statsmodels库

pip install statsmodels

1 一元线性回归代码

# 读取数据
import pandas as pd
df = pd.read_excel('IT行业收入表.xlsx')
# 自变量要构造成二维结构
x = df[['工龄']]  # 读出来是一个DataFrame
# 因变量一维结构即可
y = df['薪水']  # 读出来是一个Series# 模型搭建
from sklearn.linear_model import LinearRegression
regr = LinearRegression()
regr.fit(x, y)  # x需要是一个二维结构形式, y需要是一个一维结构形式;如果x是一个一维结构形式,会出错# 模型可视化
from matplotlib import pyplot as plt
# 用于正常显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# x是一个DataFrame,x.values转成数组,才能被plot()函数读取
# plt.plot(x, regr.predict(x), color='red'),即x没有values,会出错
plt.scatter(x, y)
plt.plot(x.values, regr.predict(x), color='red')
plt.xlabel('工龄')
plt.ylabel('薪水')
plt.show()# 线性回归方程构造
print('系数a:' + str(regr.coef_[0]))
print('截距b:' + str(regr.intercept_))
print()

1.1 线性回归模型评估代码

# 引入用于评估线性回归模型的statsmodels库import statsmodels.api as sm# 利用add_constant()函数,给原来的特征变量x添加常数项,并赋给x2,使得y=ax+b有常数项,即截距bx2 = sm.add_constant(x)  #注意:一元用x,多元用x_# 用OLS()和fit()函数对y和x2进行线性回归方程搭建est = sm.OLS(y, x2).fit()# 打印输出模型的数据信息print(est.summary())

1.2 显示结果

系数a:2497.1513476046866

截距b:10143.131966873787

                            OLS Regression Results                            

==============================================================================

Dep. Variable:                     薪水   R-squared:                       0.855

Model:                                OLS   Adj. R-squared:                  0.854

Method:                     Least Squares   F-statistic:                     578.5

Date:                          Sun, 30 Jan 2022   Prob (F-statistic):           6.69e-43

Time:                          02:25:40   Log-Likelihood:                -930.83

No. Observations:                    100   AIC:                             1866.

Df Residuals:                            98   BIC:                             1871.

Df Model:                                  1                                         

Covariance Type:                       nonrobust                                         

==============================================================================

                 coef    std err          t      P>|t|      [0.025      0.975]

------------------------------------------------------------------------------

const       1.014e+04    507.633     19.981      0.000    9135.751    1.12e+04

工龄          2497.1513    103.823     24.052      0.000    2291.118    2703.185

==============================================================================

Omnibus:                        0.287   Durbin-Watson:                   0.555

Prob(Omnibus):                  0.867   Jarque-Bera (JB):                0.463

Skew:                           0.007   Prob(JB):                        0.793

Kurtosis:                       2.667   Cond. No.                         9.49

==============================================================================

Notes:

[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

1.3 结果解读

R-squared=0.855,接近1,拟合程度高

Adj. R-squared=0.854,接近1,拟合程度高

coef有两个值:

const,常数项系数,对应P值为0.000,显著性高

工龄,特征变量系数,对应P值为0.000,显著性高

2  一元二次线性回归

2.1 一元二次回归代码

# 读取数据import pandas as pddf = pd.read_excel('IT行业收入表.xlsx')# 自变量要构造成二维结构x = df[['工龄']]  # 读出来是一个DataFrame# 因变量一维结构即可y = df['薪水']  # 读出来是一个Series# 引入多次项的模块PolynomialFeaturesfrom sklearn.preprocessing import PolynomialFeatures# 设置最高次项为二次项,为生成二次项数据(x^2)做准备poly_reg = PolynomialFeatures(degree=2)# 将原有的x转换为一个新的二维数组x_,该二维数组包含新生成的二次项数据(x^2)和原有的一次项数据(x)x_ = poly_reg.fit_transform(x)# 获得一元二次线性回归模型from sklearn.linear_model import LinearRegressionregr = LinearRegression()regr.fit(x_, y)# 一元二次线性回归模型可视化from matplotlib import pyplot as plt# 用于正常显示中文plt.rcParams['font.sans-serif'] = ['SimHei']plt.scatter(x, y)plt.plot(x.values, regr.predict(x_), color='red')plt.xlabel('工龄')plt.ylabel('薪水')plt.show()# 一元二次线性回归方程构造print(str(regr.coef_))  # 获取系数a、bprint(str(regr.intercept_))  # 获取常数项cprint()

2.2 模型评估

# 引入用于评估线性回归模型的statsmodels库
import statsmodels.api as sm
# 利用add_constant()函数,传入的是含有二次项(x^2)的x_
x2 = sm.add_constant(x)
# 用OLS()和fit()函数进行线性回归方程搭建
est = sm.OLS(y, x2).fit()
# 打印输出模型的数据信息
print(est.summary())

2.3 显示结果

[   0.         -743.68080444  400.80398224]

13988.159332096886

                            OLS Regression Results                            

==============================================================================

Dep. Variable:                     薪水   R-squared:                       0.931

Model:                            OLS   Adj. R-squared:                  0.930

Method:                 Least Squares   F-statistic:                     654.8

Date:                Sun, 30 Jan 2022   Prob (F-statistic):           4.70e-57

Time:                        02:50:37   Log-Likelihood:                -893.72

No. Observations:                 100   AIC:                             1793.

Df Residuals:                      97   BIC:                             1801.

Df Model:                           2                                         

Covariance Type:            nonrobust                                         

==============================================================================

                 coef    std err          t      P>|t|      [0.025      0.975]

------------------------------------------------------------------------------

const       1.399e+04    512.264     27.307      0.000     1.3e+04     1.5e+04

x1          -743.6808    321.809     -2.311      0.023   -1382.383    -104.979

x2           400.8040     38.790     10.333      0.000     323.816     477.792

==============================================================================

Omnibus:                        2.440   Durbin-Watson:                   1.137

Prob(Omnibus):                  0.295   Jarque-Bera (JB):                2.083

Skew:                          -0.352   Prob(JB):                        0.353

Kurtosis:                       3.063   Cond. No.                         102.

==============================================================================

Notes:

[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

2.4 结果解读

R-squared=0.931,接近1,拟合程度高,比一元一次回归效果好

Adj. R-squared=0.930,接近1,拟合程度高,比一元一次回归效果好

coef有三个值:

const=1.399e+04,常数项,P值为0.000,显著性高

x1=-743.6808,一次项系数,P值为0.023,显著性高

x2=400.8040,二次项系数,P值为0.000,显著性高

3 获取R-squared值的另一种方法

# 获取R_squared值from sklearn.metrics import r2_scorer2 = r2_score(y, regr.predict(x))print(r2)

显示:0.8551365584870814

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

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

相关文章

【Python笔记-设计模式】享元模式

一、说明 享元模式是一种结构型设计模式,它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。 (一) 解决问题 旨在减少大量相似对象创建时的内存开销 (二) 使用场景 大量…

qt 软件发布(Windows)

1. 开发环境 QtCreator MSVC编译器 2. 源码编译 生成release或者debug版本的exe可执行文件(x64或x86) 3. windeployqt 打包 ①左下角开始菜单栏找到QT的命令交互对话框,如下图MSVC 2017 64-bit(根据第二步编译的类型选择64位或者32位)。 ②cd 切换到第二步可…

[C++]智能指针用法

一、智能指针存在的意义 智能指针主要解决以下问题: (1)内存泄漏:内存手动释放,使用智能指针可以自动释放。 (2)共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题…

【ubuntu】永久修改主机名

文章目录 1. 问题描述2. 解决方案 1. 问题描述 主机名过长(后面的部分) 2. 解决方案 查看主机名详情 hostnamectl修改指定主机名 hostnamectl set-hostname ubuntu2204 --static登出重进即可

Win上面安装 stable- diffusion-webui 和 如何汉化

前置 1.git 安装 https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git直接安装,一路next 记得取消相关的连接的notes就行 2.python 3.10 以上 python3.10 记得勾选加入路径 下载stable-diffusion webui stable- diffusion webui 运行…

LeetCode | 两数相加 C语言

Problem: 2. 两数相加 文章目录 思路解题方法Code一些感想 思路 主要是一一相加和逆序的方式存储 先说逆序储存,看下图 我们先声明出指针p和指针q,还有指针head(主要用于return上而已),然后进行一系列操作&#xff0c…

学习SpringMVC的第四天

异常处理 整体思路如下 第一种方式 : 只能回显视图 ,不能会先json字符串 第二种方式 :都可回显 , 但是很麻烦 第三种 : 很智能 , 推荐使用 来看第三种方式 , 如下 ControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(RuntimeException.class)public…

基于ZYNQ的PCIE高速数据采集卡的设计(二)总体设计与上位机

采集卡总体设计及相关技术 2.1 引言 本课题是来源于雷达辐射源识别项目,需要对雷达辐射源中频信号进行采集传输 和存储。本章基于项目需求,介绍采集卡的总体设计方案。采集卡设计包括硬件设计 和软件设计。首先对采集卡的性能和指标进行分析&#x…

hexo+gitee免费打造个人网站导航

一、准备工作 本文在win10系统下进行环境搭建 1.可参考官方文档 hexo官方网站 Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页 2.配置环境 这…

excel标记文本中的关键词加红加粗

任务: 有这么一张表,关键词为 word,文本内容为 text,现在想把 text 中的 word 标红加粗,如果数据量少,文本段手动标还可以,多起来就不太方便了 代码: import pandas as pd import x…

【Docker 的安装:centos】

文章目录 1 :peach:各版本平台支持情况:peach:2 :peach:CentOS 安装:peach:2.1 :apple:安装依赖:apple:2.2 :apple:安装 Docker:apple:2.3 :apple:实战经验:apple:2.3.1 :lemon:Docker 镜像源修改:lemon:2.3.2 :lemon:Docker 目录修改:lemon: 1 🍑各版本平台支持情况…

五、分类算法 总结

代码: from sklearn.datasets import load_iris, fetch_20newsgroups from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.naive_bayes import MultinomialNB from s…

threeJS 全屏或非全屏状态下鼠标点击获取屏幕位置

使用threeJS引入模型进行点击事件,其实有一个是将获取到坐标位置进行webgl坐标系的转换 全屏状态: 全屏状态下直接利用window.innerWidth和 window.innerHeight进行计算即可,代码如下 // 校验控制器旋转的时候不触发点击事件boxClickEvent(…

Qt应用-视频播放器实例

本文讲解Qt视频播放器应用实例。 实现功能 视频的播放暂停、拖动进度控制,声音控制播放列表控制播放区域的暂停控制,全屏控制等。 界面设计 <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"><class>frmVide…

该如何选择适合的服务器

服务器&#xff0c;简单来说&#xff0c;就是一个专门用来为其他计算机提供服务的计算机。 我们熟悉的网站、应用和各种在线服务&#xff0c;绝大多数都运行在一台或多台服务器中&#xff0c;所以说服务器是整个网络世界的基石。 服务器一般具有高速的CPU运算、高数据吞吐、可扩…

人工智能深度学习

目录 人工智能 深度学习 机器学习 神经网络 机器学习的范围 模式识别 数据挖掘 统计学习 计算机视觉 语音识别 自然语言处理 机器学习的方法 回归算法 神经网络 SVM&#xff08;支持向量机&#xff09; 聚类算法 降维算法 推荐算法 其他 机器学习的分类 机器…

FDTD算法总结

计算电磁学(Computational Electromagnetics, CEM)是通过数值计算来研究电磁场的交叉学科。 数值求解电磁学问题的方法可以分成频域(Frequency Doamin, FD)、时域(Time Domain, TD)等两类。 频域法基于时谐微分&#xff0c;通过对多个采样值的傅里叶逆变换得到所需的脉冲响应…

Python入门必学:单引号、双引号与三引号的差异与应用

Python入门必学&#xff1a;单引号、双引号与三引号的差异与应用 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得…

Linux——基础IO

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C语言IO1、写文件2、读文件3、stdin & stdout & stderr 二、系统文件I/O1、写文件…

个人博客系列-环境配置-gitee(2)

注册gitee账户 地址&#xff1a;https://gitee.com/ 此步骤省略 新建仓库 执行以下命令 即可 拉取代码 创建目录 mkdir myCode && cd myCode 登录gitee找到项目&#xff0c;点击克隆&#xff0c;拉取代码 连接远程仓库命令 git remote add origin 仓库地址http…
推荐文章