当前位置: 首页 > news >正文

scikit-learn/sklearn学习|岭回归python代码解读

【1】引言

前序学习进程中,已经掌握了岭回归的基本定义,本次就更进一步,学习岭回归的一个实例。

【2】代码解读

今天的学习通过官网示例进行:
岭回归官网示例代码
首先给出完整代码:

# 引入必要模块
import numpy as np
import matplotlib.pyplot as plt
# 引入线性模型
from sklearn import linear_model# X is the 10x10 Hilbert matrix
# 这里包括两个步骤
# 第一步,生成[1,2,...,10]的一维数组,一共10个数,组成一个行向量
# 第二步,生成[0,1,...,9]的一维数组,一共十个数,然后增加一个轴,转化为10行1列的二维矩阵,实际上是一个列向量
# 第三步,加号"+"串联起两个数组,并且数组自动广播,都变成10行10列的二维矩阵
# 二维矩阵相加的结果是,位置为(i,j)的元素实际上是第(i+1,j+1)的元素,比如第一行第一列的元素位置被记录为(0,0)而非(1,1)
# 执行加法计算后,元素位置为(i,j)处的计算结果为(i+1+j)
# 最后获得的X则是对加法计算的矩阵在每个位置再计算倒数后的值
X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
# y是一个纯1矩阵,一共10个数
y = np.ones(10)# #############################################################################
# Compute paths# 定义常数n_alphas = 200
n_alphas = 200
# 定义以10为底数的对数,真数从-10到-2均匀变化,一共输出n_alphas个/200个数
alphas = np.logspace(-10, -2, n_alphas)# 定义一个空列表
coefs = []
for a in alphas:# ridge定义了一个岭回归对象ridge = linear_model.Ridge(alpha=a, fit_intercept=False)# 执行岭回归计算ridge.fit(X, y)# ridge.coef_是岭回归计算出来的系数# 本例中,由于每一行的样本是10个特征,所以有10个系数# 每一行样本都会使用这10个系数coefs.append(ridge.coef_)# #############################################################################
# Display resultsax = plt.gca()ax.plot(alphas, coefs)
ax.set_xscale('log')
ax.set_xlim(ax.get_xlim()[::-1])  # reverse axis
plt.xlabel('alpha')
plt.ylabel('weights')
plt.title('Ridge coefficients as a function of the regularization')
plt.axis('tight')
plt.show()

【2.1】引入必要模块

# 引入必要模块
import numpy as np
import matplotlib.pyplot as plt
# 引入线性模型
from sklearn import linear_model

这里引入了必要模块,相对简单。

【2.2】岭回归计算

岭回归计算其实非常简单,首先定义了10X10的因变量样本矩阵和10个数字组成的自变量样本矩阵,然后直接进行岭回归计算,再把计算获得的岭回归系数都储存起来:

# X is the 10x10 Hilbert matrix
# 这里包括两个步骤
# 第一步,生成[1,2,...,10]的一维数组,一共10个数,组成一个行向量
# 第二步,生成[0,1,...,9]的一维数组,一共十个数,然后增加一个轴,转化为10行1列的二维矩阵,实际上是一个列向量
# 第三步,加号"+"串联起两个数组,并且数组自动广播,都变成10行10列的二维矩阵
# 二维矩阵相加的结果是,位置为(i,j)的元素实际上是第(i+1,j+1)的元素,比如第一行第一列的元素位置被记录为(0,0)而非(1,1)
# 执行加法计算后,元素位置为(i,j)处的计算结果为(i+1+j)
# 最后获得的X则是对加法计算的矩阵在每个位置再计算倒数后的值
X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
# y是一个纯1矩阵,一共10个数
y = np.ones(10)# #############################################################################
# Compute paths# 定义常数n_alphas = 200
n_alphas = 200
# 定义以10为底数的对数,真数从-10到-2均匀变化,一共输出n_alphas个/200个数
alphas = np.logspace(-10, -2, n_alphas)# 定义一个空列表
coefs = []
for a in alphas:# ridge定义了一个岭回归对象ridge = linear_model.Ridge(alpha=a, fit_intercept=False)# 执行岭回归计算ridge.fit(X, y)# ridge.coef_是岭回归计算出来的系数# 本例中,由于每一行的样本是10个特征,所以有10个系数# 每一行样本都会使用这10个系数coefs.append(ridge.coef_)

【2.3】画图

最后一部非常简单,展示每一个系数随着惩罚系数的变化而变化的趋势:

# Display resultsax = plt.gca()ax.plot(alphas, coefs)
ax.set_xscale('log')
ax.set_xlim(ax.get_xlim()[::-1])  # reverse axis
plt.xlabel('alpha')
plt.ylabel('weights')
plt.title('Ridge coefficients as a function of the regularization')
plt.axis('tight')
plt.show()

在这里插入图片描述

【3】总结

通过一个python实例进一步了解了岭回归计算。

http://www.dtcms.com/a/327742.html

相关文章:

  • CVPR 2025丨机器人如何做看懂世界
  • 全面解析远程桌面:功能实现、性能优化与安全防护全攻略
  • 第十篇:3D模型性能优化:从入门到实践
  • AWT与Swing深度对比:架构差异、迁移实战与性能优化
  • 自己动手造个球平衡机器人
  • 基于 gRPC 的接口设计、性能优化与生产实践
  • open Euler--单master部署集群k8s
  • 【能耗监控数据聚合处理策略应用】
  • IIS 多用户环境中判断服务器是否为开发用电脑,数据状态比较
  • GeoScene 空间大数据产品使用入门(2)数据资源
  • 英伟达被约谈?国产替代迎来新机遇
  • 中国网络安全处罚综合研究报告(2020-2025)
  • 项目部署总结
  • iceberg FlinkSQL 特性
  • 什么是分布式,它有哪些功能和应用场景
  • 如何在idea中导入外来文件
  • 呼吸道病原体检测需求激增,呼吸道快检试纸条诊断试剂生产厂家推荐,默克全链解决方案助IVD企业把握百亿风口
  • Protocol Buffers(Protobuf) 详解
  • SQL注入学习笔记
  • 计算机网络1-7:第一章 概述 章节小结
  • 科普:增强细节真实感的“微弹跳”
  • 5-终端安全检测和防御技术
  • FPGA即插即用Verilog驱动系列——SPI发送模块
  • AV、IPS、WAF对比
  • 云手机网速和本机网速的关系
  • 解锁 Appium Inspector:移动端 UI 自动化定位的利器
  • 秋招笔记-8.12
  • STM32_bug总结(TIM定时中断进不去和只进1次)
  • 【Python 爬虫】Playwright 多浏览器支持(Chromium/Firefox/WebKit)
  • AI入门学习--AI模型评测