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

机器学习 —— 深入剖析线性回归模型

一、线性回归模型简介

线性回归是机器学习中最为基础的模型之一,主要用于解决回归问题,即预测一个连续的数值。其核心思想是构建线性方程,描述自变量(特征)和因变量(目标值)之间的关系。简单来说,若有一个自变量 x x x 和一个因变量 y y y,简单线性回归模型可表示为: y = θ 0 + θ 1 x y = \theta_0 + \theta_1x y=θ0+θ1x,其中 θ 0 \theta_0 θ0 是截距, θ 1 \theta_1 θ1 是斜率,也被称为回归系数。通过这条直线,我们尝试让模型预测值尽可能接近真实值。

(一)多元线性回归

在实际应用中,数据往往具有多个特征,这就需要多元线性回归模型。假设我们有 n n n 个自变量 x 1 , x 2 , ⋯ , x n x_1, x_2, \cdots, x_n x1,x2,,xn,多元线性回归模型的表达式为: y = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n y = \theta_0 + \theta_1x_1 + \theta_2x_2 + \cdots + \theta_nx_n y=θ0+θ1x1+θ2x2++θnxn。从几何角度理解,简单线性回归是在二维平面上找一条最佳拟合直线;而多元线性回归则是在更高维度空间中寻找一个超平面,使得所有数据点到这个超平面的距离之和最小。

例如,在预测房价时,房屋价格可能受到面积、房龄、房间数量、周边配套设施等多个因素影响,多元线性回归模型能够综合考虑这些因素,从而做出更准确的预测。

(二)岭回归

岭回归是一种改进的线性回归算法,也被称为 Tikhonov 正则化。在普通线性回归中,当特征数量较多且存在多重共线性(即某些特征之间存在较强的线性关系)时,计算正规方程中的 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 可能会出现问题,导致模型不稳定,对训练数据的微小变化非常敏感,泛化能力差。

岭回归通过在损失函数中添加一个 L2 正则化项来解决这个问题。其损失函数变为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 + λ ∑ j = 1 n θ j 2 J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 + \lambda\sum_{j = 1}^{n}\theta_j^2 J(θ)=i=1m(y(i)y^(i))2+λj=1nθj2,其中 λ \lambda λ 是正则化参数,用来控制正则化的强度。当 λ \lambda λ 越大时,对回归系数的约束越强,使得回归系数更倾向于收缩到 0,从而防止过拟合;当 λ \lambda λ 为 0 时,岭回归就退化为普通的线性回归。

岭回归的优势在于,它不仅能在一定程度上解决多重共线性问题,还能提高模型的泛化能力,使得模型在面对新数据时表现更加稳定。

(三)Lasso 回归

Lasso 回归,即 Least Absolute Shrinkage and Selection Operator,同样是一种用于线性回归的正则化方法。与岭回归不同,Lasso 回归在损失函数中添加的是 L1 正则化项,其损失函数为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 + λ ∑ j = 1 n ∣ θ j ∣ J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 + \lambda\sum_{j = 1}^{n}|\theta_j| J(θ)=i=1m(y(i)y^(i))2+λj=1nθj

L1 正则化的特点是它能够产生稀疏解,即可以自动筛选出对目标值影响较大的特征,将一些不重要的特征对应的系数直接压缩为 0,从而达到特征选择的目的。例如在基因数据分析中,数据维度极高,特征众多,Lasso 回归可以帮助我们从大量的基因特征中筛选出真正与疾病相关的基因,简化模型的同时提高解释性。

(四)弹性网络回归

弹性网络回归结合了岭回归和 Lasso 回归的优点,在损失函数中同时使用 L1 和 L2 正则化项,其损失函数表达式为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 + λ 1 ∑ j = 1 n ∣ θ j ∣ + λ 2 ∑ j = 1 n θ j 2 J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 + \lambda_1\sum_{j = 1}^{n}|\theta_j| + \lambda_2\sum_{j = 1}^{n}\theta_j^2 J(θ)=i=1m(y(i)y^(i))2+λ1j=1nθj+λ2j=1nθj2 ,其中 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 分别是 L1 和 L2 正则化项的系数。

这种方法既可以像 Lasso 回归一样进行特征选择,又能像岭回归一样处理多重共线性问题。在一些复杂的数据场景中,比如图像识别中,数据既存在大量冗余特征,又有特征间的相关性,弹性网络回归能够发挥其综合优势,平衡模型的复杂度和性能。

二、线性回归模型的原理

线性回归模型的目标是找到一组最优的回归系数 θ = [ θ 0 , θ 1 , ⋯ , θ n ] \theta = [\theta_0, \theta_1, \cdots, \theta_n] θ=[θ0,θ1,,θn],使得模型预测值与真实值之间的误差最小。通常,我们使用最小二乘法来衡量这种误差。最小二乘法的目标函数(也称为损失函数)为: J ( θ ) = ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 J(\theta) = \sum_{i = 1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 J(θ)=i=1m(y(i)y^(i))2,其中 m m m 是样本数量, y ( i ) y^{(i)} y(i) 是第 i i i 个样本的真实值, y ^ ( i ) \hat{y}^{(i)} y^(i) 是第 i i i 个样本的预测值, y ^ ( i ) = θ 0 + θ 1 x 1 ( i ) + θ 2 x 2 ( i ) + ⋯ + θ n x n ( i ) \hat{y}^{(i)} = \theta_0 + \theta_1x_1^{(i)} + \theta_2x_2^{(i)} + \cdots + \theta_nx_n^{(i)} y^(i)=θ0+θ1x1(i)+θ2x2(i)++θnxn(i)

为了找到使损失函数最小的 θ \theta θ,我们可以对 J ( θ ) J(\theta) J(θ) 求关于 θ \theta θ 的导数,并令导数为零,从而得到正规方程: θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)1XTy,其中 X X X 是特征矩阵,每一行代表一个样本,每一列代表一个特征, y y y 是目标值向量。但正如前面提到的,当 X T X X^TX XTX 接近奇异矩阵(即不可逆)时,求解正规方程会出现问题,这也是岭回归、Lasso 回归和弹性网络回归等方法出现的原因之一。

三、线性回归模型的优化方法

除了使用正规方程求解回归系数外,我们还可以使用梯度下降法来优化损失函数。梯度下降法是一种迭代的优化算法,它通过不断地沿着损失函数的负梯度方向更新回归系数,来逐步减小损失函数的值。

具体来说,对于损失函数 J ( θ ) J(\theta) J(θ),其梯度为: ∇ J ( θ ) = 2 m X T ( X θ − y ) \nabla J(\theta) = \frac{2}{m}X^T(X\theta - y) J(θ)=m2XT(y)。在每次迭代中,我们按照以下公式更新回归系数: θ = θ − α ∇ J ( θ ) \theta = \theta - \alpha\nabla J(\theta) θ=θαJ(θ),其中 α \alpha α 是学习率,它控制着每次更新的步长。学习率的选择非常关键,如果学习率过大,可能会导致模型无法收敛,甚至发散;如果学习率过小,模型收敛速度会非常慢,需要更多的迭代次数。

四、Python 代码实现

下面我们使用 Python 来实现一个简单的线性回归模型,包括普通线性回归、多元线性回归、岭回归、Lasso 回归和弹性网络回归,并对比它们的效果。首先,我们需要导入必要的库,如numpymatplotlibsklearn中的相关模块。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import GridSearchCV# 生成一些随机数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 普通线性回归
lin_reg = LinearRegression()
lin_reg.fit(X, y)
y_lin_pred = lin_reg.predict(X)# 多元线性回归(添加一个多项式特征)
poly_features = PolynomialFeatures(degree=3, include_bias=False)  # 修改多项式次数为3
X_poly = poly_features.fit_transform(X)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)
y_poly_pred = lin_reg_2.predict(X_poly)# 岭回归
ridge_reg = Ridge(alpha=0.1)
ridge_reg.fit(X, y)
y_ridge_pred = ridge_reg.predict(X)# Lasso回归
lasso_reg = Lasso(alpha=0.1)
lasso_reg.fit(X, y)
y_lasso_pred = lasso_reg.predict(X)# 弹性网络回归
elastic_net_reg = ElasticNet(alpha=0.1, l1_ratio=0.5)
elastic_net_reg.fit(X, y)
y_elastic_pred = elastic_net_reg.predict(X)# 使用网格搜索优化岭回归和Lasso回归的超参数
ridge_grid = GridSearchCV(Ridge(), param_grid={'alpha': [0.01, 0.1, 1, 10, 100]})
ridge_grid.fit(X, y)
best_ridge = ridge_grid.best_estimator_
y_ridge_best_pred = best_ridge.predict(X)lasso_grid = GridSearchCV(Lasso(), param_grid={'alpha': [0.01, 0.1, 1, 10, 100]})
lasso_grid.fit(X, y)
best_lasso = lasso_grid.best_estimator_
y_lasso_best_pred = best_lasso.predict(X)# 绘制数据和拟合直线
plt.figure(figsize=(15, 8))plt.subplot(2, 3, 1)
plt.plot(X, y, "b.")
plt.plot(X, y_lin_pred, "r-", linewidth=2, label='Linear Regression')
plt.title('Linear Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 2)
plt.plot(X, y, "b.")
X_sorted = np.sort(X, axis=0)
X_poly_sorted = poly_features.fit_transform(X_sorted)
plt.plot(X_sorted, lin_reg_2.predict(X_poly_sorted), "g-", linewidth=2, label='Polynomial Linear Regression (Degree=3)')
plt.title('Polynomial Linear Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 3)
plt.plot(X, y, "b.")
plt.plot(X, y_ridge_pred, "m-", linewidth=2, label='Ridge Regression (alpha=0.1)')
plt.title('Ridge Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 4)
plt.plot(X, y, "b.")
plt.plot(X, y_lasso_pred, "c-", linewidth=2, label='Lasso Regression (alpha=0.1)')
plt.title('Lasso Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 5)
plt.plot(X, y, "b.")
plt.plot(X, y_elastic_pred, "y", linewidth=2, label='Elastic Net Regression (alpha=0.1, l1_ratio=0.5)')
plt.title('Elastic Net Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.subplot(2, 3, 6)
plt.plot(X, y, "b.")
plt.plot(X, y_ridge_best_pred, "k", linewidth=2, label='Optimized Ridge Regression')
plt.plot(X, y_lasso_best_pred, "saddlebrown", linewidth=2, label='Optimized Lasso Regression') 
plt.title('Optimized Ridge and Lasso Regression')
plt.xlabel("$x_1$", fontsize=18)
plt.ylabel("$y$", rotation=0, fontsize=18)
plt.legend()plt.tight_layout()
plt.show()

在上述代码中,我们首先生成了一些随机数据。然后分别使用LinearRegression类实现普通线性回归和多元线性回归(通过添加多项式特征实现),使用Ridge类实现岭回归,使用Lasso类实现 Lasso 回归,使用ElasticNet类实现弹性网络回归。最后绘制出数据点和各个模型的拟合直线,以便直观对比它们的效果。

五、总结与模型选用建议

不同的线性回归模型各有特点,在实际应用中需要根据具体情况选择合适的模型。

✨简单线性回归模型形式最为简单,仅包含一个自变量和一个因变量 ,适用于特征与目标值之间呈现明显线性关系,且数据特征单一的场景,比如根据时间预测某一产品的销量变化趋势。

🎈多元线性回归在简单线性回归基础上拓展到多个自变量,能处理更复杂的数据关系,像预测房价时综合考虑多个影响因素。但当数据存在多重共线性时,普通的多元线性回归可能导致模型不稳定。

🎨岭回归通过 L2 正则化项,在一定程度上缓解多重共线性问题,同时提升模型泛化能力。若数据特征众多且存在共线性,又希望保留所有特征,岭回归是不错的选择,如金融风险评估中,众多经济指标相互关联,岭回归可有效处理。

🍫Lasso 回归利用 L1 正则化产生稀疏解,自动筛选重要特征,实现特征选择,在高维数据场景优势明显,如基因数据分析,能从海量基因特征中找出关键特征。

🧆弹性网络回归结合了 L1 和 L2 正则化,兼具特征选择和处理共线性的能力,当数据既存在大量冗余特征,又有特征间相关性时,弹性网络回归能平衡模型复杂度与性能,例如图像识别领域。

在选择线性回归模型时,首先要分析数据特征,判断是否存在多重共线性、数据维度高低等。若数据简单且特征少,普通线性回归即可;若特征多且存在共线性,可考虑岭回归;若需特征选择,Lasso 回归或弹性网络回归更合适。还可以通过交叉验证等方法,比较不同模型在训练集和验证集上的性能指标,如均方误差(MSE)、决定系数(R²)等,最终选择性能最优的模型。 不断实践和尝试不同模型,才能在实际应用中发挥线性回归模型的最大价值。

相关文章:

机器学习 —— 深入剖析线性回归模型

一、线性回归模型简介 线性回归是机器学习中最为基础的模型之一,主要用于解决回归问题,即预测一个连续的数值。其核心思想是构建线性方程,描述自变量(特征)和因变量(目标值)之间的关系。简单来…...

vs封装dll 给C#使用

一,vs创建控制台应用 创建控制台应用得好处时,我们可以自己测试接口,如果接口没有问题,改成dll重新编译一遍就可以。 二, 创建一个c 类,将所需提供得功能 封装到类中。 这样可以将 所有功能,进…...

V8 引擎:深入理解 JavaScript 的执行环境

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

JDK 9新特性学习大纲

第1部分:引言与背景 第1章:JDK 9的诞生与目标 1.1 JDK 9的核心目标与设计哲学 1.2 JDK 9的重要更新概览 1.3 兼容性与升级策略 第2部分:模块化系统(Project Jigsaw) 第2章:模块化基础 2.1 模块化的背景…...

DeepSeek从入门到精通:全面掌握AI大模型的核心能力

文章目录 一、DeepSeek是什么?性能对齐OpenAI-o1正式版 二、Deepseek可以做什么?能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek?四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…...

MySQL数据库(七)SQL 优化

目录​​​​​​​ 一 插入数据 1 批量插入 2 手动提交事务 3 主键顺序插入 4* 使用load插入指令数据 二 主键优化 1 数据组织方式 2 页分裂 ​编辑3 页合并 4* 主键设计原则 三 order by 优化 四 group by 优化 五 limit 优化 六 count优化 七 update优化 一…...

Oracle数据连接 Dblink

拓展: oracle远程登陆数据库 1.oracle客户端或者服务端 2.修改你的电脑如下路径文件(服务器IP,服务器的数据库名,服务器的数据库端口号) c:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora orcl_109 (DESCRIPTION …...

基于 Nginx 的 CDN 基础实现

概览 本文是对基于Nginx的CDN网络的学习笔记,阅读的代码为:https://github.com/leandromoreira/cdn-up-and-running 其中,先确定CDN中的一些基础概念: Balancer:负载均衡,即请求数据的流量最开始打到Bal…...

网络编程基础1

七层协议模型和四层协议模型 七层协议模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 四层协议模型:链路层、网络层、传输层、应用层 TCP通信流程 服务器端 (1)创建socket(socket) (2)绑定自己的IP(bind) (3)监听客户端连接(liste…...

Web3 跨链技术:构建互联互通的虚拟世界

随着区块链技术的蓬勃发展,我们正站在 Web3 时代的门槛上。Web3 不仅仅是技术的革新,它更是一场关于数据所有权和互联网自由的革命。然而,区块链技术的一个核心挑战是如何打破不同链之间的壁垒,实现信息和资源的自由流动。跨链技术…...

【专题】2025年我国机器人产业发展形势展望:人形机器人量产及商业化关键挑战报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p39668 机器人已广泛融入我们生活的方方面面。在工业领域,它们宛如不知疲倦的工匠,精准地完成打磨、焊接等精细工作,极大提升了生产效率和产品质量;在日常生活里,它们是贴心…...

FPGA VGA timing

概念 VGA(Video Graphics Array)时序是控制VGA接口显示图像的关键参数,它主要包括行时序和场时序两部分。以下是对VGA时序的详细解释: 一、VGA接口简介 VGA接口是IBM公司在1987年推出的一种使用模拟信号的视频传输标准,具有成本低、结构简单、应用灵活等优点,至今仍被广…...

[7] 游戏机项目说明

[7] 游戏机项目说明 在这节课中,我们将学习如何基于FreeRTOS开发一个简单的游戏项目。我们会使用一个开源项目nwatch,它是一个基于STM32的开源手表,包含了三个游戏。我们的目标是将这个游戏移植到我们的开发板上,并逐步使用FreeR…...

UE学习日志#25、26 C++笔记#11 智能指针

注:本篇内容主要为《C20高级编程》的学习笔记 当智能指针离开作用域或被重置时,会自动释放所占用的资源。智能指针可用于管理在函数作用域内(或作为类的数据成员)动态分配的资源。也可以通过函数实参来传递动态分配的资源的所有权…...

Spring AI -使用Spring快速开发ChatGPT应用

前言 Spring在Java生态中一直占据大半江山。最近我发现Spring社区推出了一个Spring AI项目,目前该项目还属于Spring实验性项目,但是我们可以通过该项目,可以非常快速的开发出GPT对话应用。 本篇文章将会对SpringAI进行简单的介绍和使用&#…...

windows通过网络向Ubuntu发送文件/目录

由于最近要使用树莓派进行一些代码练习,但是好多东西都在windows里或虚拟机上,就想将文件传输到树莓派上,但试了发现u盘不能简单传送,就在网络上找到了通过windows 的scp命令传送 前提是树莓派先开启ssh服务,且Window…...

大语言模型需要的可观测性数据的关联方式

可观测性数据的关联方式及其优缺点 随着现代分布式架构和微服务的普及,可观测性(Observability)已经成为确保系统健康、排查故障、优化性能的重要组成部分。有效的可观测性数据关联方式不仅能够帮助我们实时监控系统的运行状态,还…...

python连点器

要实现一个用于抖音点赞的鼠标连点工具,可以通过编程或现有软件实现。以下是两种常见方法(但请注意:频繁自动化操作可能违反平台规则,需谨慎使用): 方法 1:使用现成工具(如 AutoClic…...

Nginx部署Umi React前端项目标准配置

文章目录 概要前端Umi项目配置文件请求后端Api打包 后端项目Nginx配置配置文件 错误信息 概要 使用UmiJs开发的前端项目打包部署在Nginx,主要是Umi中项目的配置和Nginx的配置 前端Umi项目 基于"umijs/max": "^4.3.24", "react": &…...

Ubuntu20.4软件应用打不开

安装 snap-store: 确保 Snap 已安装: Snap 是一个包管理系统,需要先确保 snapd 已经安装。如果系统中没有安装,可以通过以下命令来安装 Snap: sudo apt update sudo apt install snapd安装 snap-store: 使…...

如何在Vscode中接入Deepseek

一、获取Deepseek APIKEY 首先,登录Deepseek官网的开放平台:DeepSeek 选择API开放平台,然后登录Deepseek后台。 点击左侧菜单栏“API keys”,并创建API key。 需要注意的是,生成API key复制保存到本地,丢失…...

apisix的real-ip插件使用说明

k8s集群入口一般都需要过负载均衡,然后再到apisix。 这时候如果后台业务需要获取客户端ip,可能拿到的是lb或者网关的内网ip。 这里一般要获取真实ip需要做几个处理。 1. 负载均衡上,一般支持配置获取真实ip参数,需要配置上。然…...

基于 Ollama+Docker+OpenWebUI 的本地化部署deepseek流程

搭建deepseek 安装Ollama Ollama官方下载地址 下载完成后双击打开Ollama进行安装,点击install 安装完成后系统会弹出下图提示代表安装成功并且已启动 验证安装 ollama -v安装完成后,cmd 打开命令行窗口,输入 “ollama -v” 测试,显示 olla…...

打家劫舍3

今天和打家讲一下打家劫舍3 题目: 题目链接:337. 打家劫舍 III - 力扣(LeetCode) 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。 除了 root 之外,每栋房子有且只有一个“父“…...

第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我们是直接利用GPIO子系统控制了LED2的亮和灭,这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…...

归一化与伪彩:LabVIEW图像处理的区别

在LabVIEW的图像处理领域,归一化(Normalization)和伪彩(Pseudo-coloring)是两个不同的概念,虽然它们都涉及图像像素值的调整,但目的和实现方式截然不同。归一化用于调整像素值的范围&#xff0c…...

DeepSeek-V2 论文解读:混合专家架构的新突破

论文链接:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model 目录 一、引言二、模型架构(一)多头部潜在注意力(MLA):重塑推理效率(二)DeepSeekM…...

基于布谷鸟算法实现率定系数的starter

布谷鸟算法(Cuckoo Search, CS)是一种基于群体智能的优化算法,灵感来源于布谷鸟的繁殖行为以及宿主鸟发现外来蛋的概率。该算法由 Xin-She Yang 和 Suash Deb 在2009年提出。它结合了莱维飞行(Lvy flight)这一随机漫步…...

Java之自定义注解

介绍:在Java中,自定义注解是通过 interface 关键字定义的。注解是一种元数据,可以附加到类、方法、字段等代码元素上,用于提供额外的信息或配置。 1. 自定义注解的基本语法 使用 interface 关键字定义注解,注解中可以…...

SpringCloud面试题----Nacos和Eureka的区别

功能特性 服务发现 Nacos:支持基于 DNS 和 RPC 的服务发现,提供了更为灵活的服务发现机制,能满足不同场景下的服务发现需求。Eureka:主要基于 HTTP 的 RESTful 接口进行服务发现,客户端通过向 Eureka Server 发送 HT…...

prometheus配置大盘与告警

1、prometheus配置大盘 kube-prometheus-stack 定义 dashboard https://stackoverflow.com/questions/77271449/persist-grafana-dashboard-on-kube-prometheus-and-expose-itAlso to persist dashboards to outlive pod deletion follow the below steps: Create your cust…...

记录 | WPF创建和基本的页面布局

目录 前言一、创建新项目注意注意点1注意点2 解决方案名称和项目名称 二、布局2.1 Grid2.1.1 RowDefinitions 行分割2.1.2 Row & Column 行列定位区分 2.1.3 ColumnDefinitions 列分割 2.2 StackPanel2.2.1 Orientation 修改方向 三、模板水平布局【Grid中套StackPanel】中…...

git代理设置

在 Git 中,可以通过以下命令查看当前设置的代理配置: 查看 HTTP 代理 git config --get http.proxy查看 HTTPS 代理 git config --get https.proxy查看全局代理设置 如果你设置了全局代理,可以通过以下命令查看: git config …...

使用 Axios ——个人信息修改与提示框实现

目录 详细介绍:个人信息设置与修改页面实现 1. HTML 结构 2. CSS 样式 3. JavaScript 核心逻辑 a. 信息渲染与表单提交 b. 头像上传与预览 4. 功能详解 5. 总结 提示: 这段代码展示了如何创建一个简单的个人信息设置页面,包含用户个…...

(done) openMP学习 (Day11: 可怕的东西:内存模型,Atomics,Flush(Pairwise同步))

url: https://dazuozcy.github.io/posts/introdution-to-openmp-intel/#19-%E6%8A%80%E8%83%BD%E8%AE%AD%E7%BB%83%E9%93%BE%E8%A1%A8%E5%92%8Copenmp 这一节介绍了一些概念,包括 OpenMP 内存模型,串行一致性的概念,以及 Flush 操作&#xff…...

docker数据持久化的意义

Docker 数据持久化是指在 Docker 容器中保存的数据不会因为容器的停止、删除或重启而丢失。Docker 容器本身是临时性的,默认情况下,容器内的文件系统是临时的,容器停止或删除后,其中的数据也会随之丢失。为了确保重要数据&#xf…...

【漫话机器学习系列】084.偏差和方差的权衡(Bias-Variance Tradeoff)

偏差和方差的权衡(Bias-Variance Tradeoff) 1. 引言 在机器学习模型的训练过程中,我们常常面临一个重要的挑战:如何平衡 偏差(Bias) 和 方差(Variance),以提升模型的泛…...

android的Compose 简介

Jetpack Compose 简介 Jetpack Compose 是 Android 官方推出的声明式 UI 工具包,用于替代传统 XML 布局,简化界面开发流程。它基于 Kotlin 语言,通过函数式编程实现高效、灵活的 UI 构建,支持实时预览和更直观的状态管理。 优势…...

git学习

报错504:代理有问题 查看代理: 法1 export | grep proxy 法2 env | grep xxx设置代理HTTPS_PROXY为空: export HTTPS_PROXY重进入git bash,HTTPS_PROXYxxx,又出现了 有效的办法 无效的办法: #取消htt…...

Spring Boot 对接深度求索接口实现知识问答功能

Spring Boot 对接深度求索接口实现知识问答功能 一、概述 本文将详细介绍如何使用 Spring Boot 对接深度求索(DeepSeek)接口,实现知识问答功能。深度求索是一个强大的自然语言处理平台,提供多种 API 接口,包括知识问…...

探索Scikit-learn:Python中的机器学习宝库

探索Scikit-learn:Python中的机器学习宝库 引言 在数据科学和机器学习的世界中,Python无疑是最受欢迎的编程语言之一。而在Python的众多机器学习库中,Scikit-learn无疑是最闪耀的明星之一。Scikit-learn是一个开源的Python库,它…...

活动预告 | Power Hour: Copilot 引领商业应用的未来

课程介绍 智能化时代,商业应用如何实现突破?微软全球副总裁 Charles Lamanna 将为您深度解析,剖析其中关键因素。 在本次线上研讨会中,Charles Lamanna 将分享他在增强商业运营方面的独到见解与实战策略,深度解读商业…...

MIT6.824 Lecture 2-RPC and Threads Lecture 3-GFS

Lecture 2-RPC and Threads Go语言在多线程、同步,还有很好用的RPC包 《Effective Go》 线程是实现并发的重要工具 在分布式系统里关注多线程的原因: I/O concurrencyParallelismConvenience Thread challenges 用锁解决race问题 Coordination channel…...

MariaDB *MaxScale*实现mysql8读写分离

1.MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 2.MaxScale 实验环境 中间件192.168.12…...

Linux之Http协议分析以及cookie和session

Linux之Http协议分析以及cookie和session 一.分析请求行与响应行1.1请求行1.1.1资源的URL路径1.1.2常见的方法1.2响应行 二.cookie和session2.1cookie2.2session 一.分析请求行与响应行 在我们简单了解了请求和响应的格式以及模拟实现了请求和响应后我们已经可以通过网页来访问…...

Python Pandas(5):Pandas Excel 文件操作

Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls 和 .xlsx 文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。 操作方法说明读取 Excel 文件pd.read_excel()读取 Excel 文件,返回 DataF…...

iOS主要知识点梳理回顾-3-运行时

运行时(runtime) 运行时是OC的重要特性,也是OC动态性的根本支撑。动态,如果利用好了,扩展性就很强。当然了,OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比,OC动态性很…...

[渗透测试]热门搜索引擎推荐— — shodan篇

[渗透测试]热门搜索引擎推荐— — shodan篇 免责声明:本文仅用于分享渗透测试工具,大家使用时,一定需要遵守相关法律法规。 除了shodan,还有很多其他热门的,比如:fofa、奇安信的鹰图、钟馗之眼等&#xff0…...

java-初识List

List: List 是一个接口,属于 java.util 包,用于表示有序的元素集合。List 允许存储重复元素,并且可以通过索引访问元素。它是 Java 集合框架(Java Collections Framework)的一部分 特点: 有序…...

ElasticSearch集群因索引关闭重打开导致飘红问题排查

背景 某组件向 ElasticSearch 写入数据,从最近某一天开始写入速度变慢,数据一直有积压。推测是 ElasticSearch 集群压力导致的,查看 ElasticSearch 集群状态,发现集群确实处于 red 状态。 本文记录 ElasticSearch 集群因索引关闭…...