如何理解岭回归模型?(python)

news2024/11/20 9:04:05

1 何为岭回归?

在这里插入图片描述
岭参数k不是唯一确定的,其估计的回归系数是一个估计族。

2 何为岭迹分析?

1)定义
在这里插入图片描述

2)作用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
k值的选取原则:
在这里插入图片描述
如下图所示,当k=k0时,各回归系数的估计值基本都能相对稳定。
在这里插入图片描述
除了岭迹法,还可以使用VIF确定k值。可以选方差扩大因子cjj≤10k值:

在这里插入图片描述
除了岭迹法、VIF,还可使用残差平方和确定k值:
在这里插入图片描述

3 如何基于岭回归选择变量?

选择变量的原则:

在这里插入图片描述

4 python实现

from sklearn.linear_model import Ridge
import pandas as pd
import statsmodels.formula.api as smf
from statsmodels.stats.outliers_influence import variance_inflation_factor
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 

#构造数据
df = pd.DataFrame(
    {'y':  [15, 10, 8, 9, 3],
     'x1': [1, 1, 2, 3, 4],
     'x2': [2, 2, 3, 2, 1],
     'x3': [4, 6, 7, 8, 9],
     'x4': [4, 3, 4, 5, 4]},

) 
#建模
result = smf.ols('y~x1+x2+x3+x4',data = df).fit()
 
# 计算方差扩大因子(多重共线性判断)
VIFlist = []
for i in range(1, 3, 1):
    vif = variance_inflation_factor(result.model.exog, i)
    VIFlist.append(vif)
print(pd.Series(VIFlist))
 
#岭回归处理(即原理部分)
eps = list(np.random.randn(5))  # 误差项,个数是由数据的条数决定
y = -1.1584 + 0.0547 * df['x1'] + 0.1341 * df['x2'] -0.0548 * df['x3']-0.0320* df['x4'] + eps
df['y'] = y  #覆盖原来的y值
 
#岭回归模型
dfnorm = (df - df.mean()) / df.std() #标准化自变量矩阵
# 切片将x和y分开
Xnorm = dfnorm.iloc[:, 1:]
ynorm = df.iloc[:, 0]
 
clf = Ridge()  #岭回归函数
coefs = []   #存放岭回归估计值
errors = []  #存放残差
 
alphas = np.linspace(0.1, 30, 2000)  #步长为0.1, 取30个alpha值
 
#遍历每个alpha值,计算出一系列的岭回归估计值
for a in alphas:
    clf.set_params(alpha=a)
    clf.fit(dfnorm, ynorm)
    coefs.append(clf.coef_)
 
#画岭回归图
plt.subplot(111)  #创建一个画布
ax = plt.gca()   #gca()一个坐标轴的设置函数
ax.plot(alphas, coefs, label=list(Xnorm.keys()))   #画图
ax.legend(list(Xnorm.keys()), loc='best')  #设置图例
plt.xlabel('alpha')
plt.ylabel('weights')
plt.title('Ridge coefficients as a function of the regularization')
plt.axis('tight')
plt.show()
 
#下面就是删除调变化趋势大的自变量,重复上面的所有的操作,直到一个最优的结果,然后确定k值

在这里插入图片描述
从图中可以看出,alpha(k)越小时,系数很不稳定,随着k的增大,系数趋于稳定,当k趋近于无穷时,系数趋近于0

参考:
https://blog.csdn.net/DL11007/article/details/129198295

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

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

相关文章

Prometheus结合K8s(二)使用

上一篇介绍了如何搭建 Prometheus结合K8s(一)搭建-CSDN博客,这章介绍使用 页面访问 kubectl get svc -n prom 看promeheus和granfana的端口访问页面 Prometheus 点击status—target,可以看到metrics的数据来源,即各…

泷羽sec学习打卡-云技术基础2-捕获照片

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于云技术基础的那些事儿-捕获帅照 搭建网站的前提有哪些?搭建网站的流程有哪些&#xff1f…

常见的水位检测传感器及其特点

常见的水位检测传感器及其特点: 1. 浮球液位传感器: - 工作原理:利用浮力,使浮子上升,通过判断浮子上升来判断水位 -优点:便宜简单 - 缺点:精确度低,应用环境受限。靠液体的浮力…

Flink Lookup Join(维表 Join)

Lookup Join 定义(支持 Batch\Streaming) Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维…

Azure Kubernetes Service (AKS)资源优化策略

针对Azure Kubernetes Service (AKS)的资源优化策略,可以从多个维度进行考虑和实施,以提升集群的性能、效率和资源利用率。以下是一些关键的优化策略: 一、 Pod资源请求和限制 设置Pod请求和限制:在YAML清单中为所有Pod设置CPU和…

RabbitMQ1:初识MQ

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

AI 提示词(Prompt)入门 十:最佳实践|详细询问,提供细节!

1、原则解释 当与 ChatGPT 交流时,提供具体和详细的信息非常重要。 这样做可以帮助 ChatGPT 更准确地理解你的需求和上下文,从而生成更相关和有用的回答 明确的信息可以包括具体的问题背景、相关领域的说明、你所期望的答案类型等。 2、如何实践 明…

实验十三 生态安全评价

1 背景及目的 生态安全是生态系统完整性和健康性的整体反映,完整健康的生态系统具有调节气候净化污染、涵养水源、保持水土、防风固沙、减轻灾害、保护生物多样性等功能。维护生态安全对于人类生产、生活、健康及可持续发展至关重要。随着城市化进程的不断推进&…

怎样实现跨部门和跨地区的数据共享?

随着企业规模的扩大和业务的多样化,不同部门和地区之间的数据共享变得越来越重要。实时数据同步作为保证数据准确性和完整性的重要手段,被广泛应用于各行各业。那不同部门和不同地区怎么实现共享数据呢? 一、前期数据准备 前期数据上需要建…

国家工信安全中心:公共数据授权运营平台技术要求(附下载)

2023年11月23日,第二届全球数字贸易博览会“数据要素治理与市场化论坛”于杭州成功召开,国家数据局党组书记、局长刘烈宏,浙江省委常委、常务副省长徐文光出席会议并致辞。会上,国家工业信息安全发展研究中心(以下简称…

C语言数据结构——详细讲解 双链表

从单链表到双链表:数据结构的演进与优化 前言一、单链表回顾二、单链表的局限性三、什么是双链表四、双链表的优势1.双向遍历2.不带头双链表的用途3.带头双链表的用途 五、双链表的操作双链表的插入操作(一)双链表的尾插操作(二&a…

【ArcGISPro】地理配准-影像校正

由于大部分数据安全性,以下是随意下载的图片,仅展示配置操作 地图-地理配准 添加控制点 修改控制点 可以导入、导出、添加和删除控制点 保存 关闭地理配准

ReNamer Pro 7.5 中文绿色便携专业版-文件重命名工具

前言 我们日常生活和工作中所涉及的文件数量日益增多。无论是图片、音频、视频还是各种文档,这些文件在存储、管理和分享时,都需要有一个清晰、有序的文件命名规则。然而,手动重命名大量文件不仅耗时耗力,而且容易出错&#xff0c…

PgSQL即时编译JIT | 第1期 | JIT初识

PgSQL即时编译JIT | 第1期 | JIT初识 JIT是Just-In-Time的缩写,也就是说程序在执行的时候生成可以执行的代码,然后执行它。在介绍JIT之前,需要说下两种执行方式:解释执行和编译执行。其中解释执行是通过解释器,将代码逐…

力扣-Hot100-数组【算法学习day.37】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

DataStream编程模型之数据源、数据转换、数据输出

Flink之DataStream数据源、数据转换、数据输出(scala) 0.前言–数据源 在进行数据转换之前,需要进行数据读取。 数据读取分为4大部分: (1)内置数据源; 又分为文件数据源; socket…

爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具

第三节:使用Postman和浏览器开发者工具 在网络爬虫开发过程中,我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具(特别是Network面板和Console面板)是两种最常用的工具,能够帮助开发者有效地捕…

vue2侧边导航栏路由

<template><div><!-- :default-active"$route.path" 和index对应其路径 --><el-menu:default-active"active"class"el-menu-vertical-demo"background-color"#545c64"text-color"#fff"active-text-col…

时代变迁对传统机器人等方向课程的巨大撕裂

2020年之后&#xff0c;全面转型新质课程规划&#xff0c;传统课程规划全部转为经验。 农耕-代表性生产关系-封建分配制度主要生产力-人力工业-代表性生产关系-资本分配制度工业分为机械时代&#xff0c;电气时代&#xff0c;信息时代&#xff1b;主要生产力-人力转为人脑&…

JVM类加载过程-Loading

一、Class对象的生命周期 .class文件是如何加载到内存中:.class文件是ClassLoader通过IO将文件读到内存,再通过双亲委派的模式进行Loading,再Linking、以及Initializing,代码调用等一系列操作后,进行GC,组成完整的生命周期; 二、双亲委派模式(Loading的过程): 1、类…