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

【大数据】机器学习-----模型的评估方法

一、评估方法

  • 留出法(Holdout Method)
    • 将数据集划分为训练集和测试集两部分,通常按照一定比例(如 70% 训练集,30% 测试集)。训练集用于训练模型,测试集用于评估模型性能。
    • 优点:简单易行。
    • 缺点:结果依赖于数据集的划分方式,不同的划分可能导致不同的评估结果。
  • 交叉验证法(Cross Validation)
    • 最常见的是 k 折交叉验证。将数据集分成 k 个大小相似的互斥子集,每次用 k-1 个子集作为训练集,余下的一个作为测试集,进行 k 次训练和测试,最终将 k 次的结果取平均值。
    • 优点:能更充分利用数据,结果相对稳定,能降低因数据划分导致的偏差。
    • 缺点:计算开销较大,尤其是对于大数据集和复杂模型。
    • 例如,5 折交叉验证就是将数据集分成 5 份,每次取 4 份训练,1 份测试,重复 5 次。
  • 自助法(Bootstrap Method)
    • 从原始数据集中有放回地抽样产生多个新的训练集,每次抽样得到的样本作为一个训练集,未被抽到的样本作为测试集。
    • 优点:在数据集较小、难以有效划分训练集和测试集时很有用。
    • 缺点:改变了初始数据集的分布,会引入一定的偏差。

二、性能度量

  • 分类问题的性能度量
    • 准确率(Accuracy):预测正确的样本数占总样本数的比例,公式为 Accuracy = (TP + TN) / (TP + TN + FP + FN),其中 TP 是真正例,TN 是真反例,FP 是假正例,FN 是假反例。
    • 精确率(Precision):预测为正例的样本中真正例的比例,公式为 Precision = TP / (TP + FP)
    • 召回率(Recall):真正例中被预测为正例的比例,公式为 Recall = TP / (TP + FN)
    • F1 分数:精确率和召回率的调和平均值,公式为 F1 = 2 * (Precision * Recall) / (Precision + Recall)
    • ROC 曲线和 AUC 值
      • ROC 曲线以假正例率(FPR)为横坐标,真正例率(TPR)为纵坐标绘制,通过调整分类阈值得到不同的点连成曲线。
      • AUC 值是 ROC 曲线下的面积,范围在 0 到 1 之间,值越大表示模型性能越好。
  • 回归问题的性能度量
    • 均方误差(MSE):预测值与真实值差的平方的平均值,公式为 MSE = (1/n) * Σ(y - y_pred)^2,其中 y 是真实值,y_pred 是预测值。
    • 平均绝对误差(MAE):预测值与真实值差的绝对值的平均值,公式为 MAE = (1/n) * Σ|y - y_pred|
    • 均方根误差(RMSE):MSE 的平方根,对较大误差更敏感,公式为 RMSE = sqrt(MSE)

三、比较检验

  • 假设检验
    • 用于比较不同模型性能差异是否显著。
    • 例如,使用 t 检验或 McNemar 检验。
    • t 检验通常用于比较两个模型在同一数据集上的性能是否有显著差异,基于样本均值和标准差。
    • McNemar 检验用于比较两种分类算法在同一测试集上的差异,主要关注两种算法的分类结果不一致的部分。
  • 交叉验证 t 检验
    • 结合了交叉验证和 t 检验,用于比较多个模型的性能。
    • 对于两个模型,分别进行多次交叉验证,得到多个性能度量,然后对这些度量进行 t 检验,以判断它们是否有显著差异。

四、偏差与方差

  • 偏差(Bias)
    • 反映了模型预测值与真实值的期望之间的差异,描述了模型的准确性。
    • 高偏差意味着模型过于简单,可能导致欠拟合,不能很好地拟合训练数据,也不能很好地泛化到新数据。
  • 方差(Variance)
    • 反映了模型在不同训练集上的预测值的变化程度,描述了模型的稳定性。
    • 高方差意味着模型对训练数据的微小变化非常敏感,可能导致过拟合,在训练集上表现好,但在新数据上表现差。
  • 偏差-方差权衡
    • 模型的泛化误差可以分解为偏差、方差和噪声。通常,简单模型偏差大、方差小,复杂模型偏差小、方差大,需要找到一个平衡,使泛化误差最小。

在这里插入图片描述

公式

一、分类问题的性能度量公式

  • 准确率(Accuracy)

    • 公式: Accuracy = T P + T N T P + T N + F P + F N \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN
    • 解释:
      • T P TP TP(True Positive):真正例,即实际为正类且被预测为正类的样本数量。
      • T N TN TN(True Negative):真反例,即实际为反类且被预测为反类的样本数量。
      • F P FP FP(False Positive):假正例,即实际为反类但被预测为正类的样本数量。
      • F N FN FN(False Negative):假反例,即实际为正类但被预测为反类的样本数量。
      • 该公式计算的是预测正确的样本数(包括正确预测为正类和正确预测为反类)在总样本数中的占比,反映了模型预测的整体准确性。
  • 精确率(Precision)

    • 公式: Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP
    • 解释:
      • 它衡量的是在所有被预测为正类的样本中,真正为正类的样本所占的比例。精确率高表示在预测为正类的样本中,误判为正类的情况较少,侧重于预测结果为正类的准确性。
  • 召回率(Recall)

    • 公式: Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP
    • 解释:
      • 召回率表示在所有实际为正类的样本中,被正确预测为正类的样本所占的比例。召回率高表示实际正类被模型成功找出的比例高,侧重于对正类的查全能力,避免遗漏正类样本。
  • F1 分数(F1 Score)

    • 公式: F1 = 2 × Precision × Recall Precision + Recall \text{F1} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1=2×Precision+RecallPrecision×Recall
    • 解释:
      • F1 分数是精确率和召回率的调和平均值,是一个综合考虑精确率和召回率的指标,用于平衡精确率和召回率之间的关系。当精确率和召回率都很高时,F1 分数会比较高,避免了单独考虑精确率或召回率的片面性。
  • ROC 曲线和 AUC 值

    • ROC 曲线(Receiver Operating Characteristic Curve)
      • 绘制方式:通过调整分类器的阈值,得到一系列的真阳性率( T P R TPR TPR)和假阳性率( F P R FPR FPR),以 F P R FPR FPR 为横坐标, T P R TPR TPR 为纵坐标绘制曲线。
      • T P R = T P T P + F N TPR = \frac{TP}{TP + FN} TPR=TP+FNTP,表示在所有实际正类中被正确预测为正类的比例。
      • F P R = F P T N + F P FPR = \frac{FP}{TN + FP} FPR=TN+FPFP,表示在所有实际反类中被错误预测为正类的比例。
    • AUC 值(Area Under the Curve)
      • 解释:是 ROC 曲线下的面积,范围在 0 到 1 之间。
      • AUC 值越大,说明分类器在不同阈值下的性能越好,能够更好地区分正类和反类,当 AUC = 1 时表示完美分类器,AUC = 0.5 表示随机分类器。

二、回归问题的性能度量公式

  • 均方误差(MSE - Mean Squared Error)

    • 公式: MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2
    • 解释:
      • y i y_i yi 是第 i i i 个样本的真实值, y ^ i \hat{y}_i y^i 是第 i i i 个样本的预测值, n n n 是样本数量。
      • MSE 计算的是预测值与真实值差的平方的平均值,对较大误差的惩罚较大,因为误差是平方项,会放大较大误差的影响,常用于评估回归模型的性能。
  • 平均绝对误差(MAE - Mean Absolute Error)

    • 公式: MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1nyiy^i
    • 解释:
      • 计算预测值与真实值差的绝对值的平均值,对所有误差同等对待,不像 MSE 那样对大误差进行平方放大,更直观地反映了预测误差的平均大小。
  • 均方根误差(RMSE - Root Mean Squared Error)

    • 公式: RMSE = MSE \text{RMSE} = \sqrt{\text{MSE}} RMSE=MSE
    • 解释:
      • 是 MSE 的平方根,它与预测值和真实值具有相同的量纲,使得结果更具解释性,例如在预测房价时,RMSE 的单位与房价的单位相同。

三、假设检验公式(以 t 检验为例)

  • t 检验
    • 公式: t = X 1 ˉ − X 2 ˉ s p 1 n 1 + 1 n 2 t = \frac{\bar{X_1} - \bar{X_2}}{s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}} t=spn11+n21 X1ˉX2ˉ
    • 解释:
      • X 1 ˉ \bar{X_1} X1ˉ X 2 ˉ \bar{X_2} X2ˉ 是两个样本的均值, n 1 n_1 n1 n 2 n_2 n2 是两个样本的大小。
      • s p s_p sp 是合并标准差,公式为 s p = ( n 1 − 1 ) s 1 2 + ( n 2 − 1 ) s 2 2 n 1 + n 2 − 2 s_p = \sqrt{\frac{(n_1 - 1)s_1^2 + (n_2 - 1)s_2^2}{n_1 + n_2 - 2}} sp=n1+n22(n11)s12+(n21)s22 ,其中 s 1 2 s_1^2 s12 s 2 2 s_2^2 s22 是两个样本的方差。
      • t 检验用于检验两个样本的均值是否有显著差异,根据计算得到的 t 值和自由度,查 t 分布表可得到对应的 p 值,若 p 值小于显著性水平(如 0.05),则认为两个样本的均值有显著差异。

四、偏差与方差公式(在平方损失下)

  • 偏差(Bias)

    • 对于一个模型 f ( x ) f(x) f(x),假设真实的数据生成函数是 y = g ( x ) + ϵ y = g(x) + \epsilon y=g(x)+ϵ,偏差的期望定义为: Bias ( f ^ ( x ) ) = E [ f ^ ( x ) ] − g ( x ) \text{Bias}(\hat{f}(x)) = E[\hat{f}(x)] - g(x) Bias(f^(x))=E[f^(x)]g(x)
    • 解释:
      • 偏差反映了模型预测的期望与真实值的差距,衡量了模型对数据的拟合能力,高偏差可能导致欠拟合,即模型过于简单,无法很好地拟合训练数据和潜在的数据模式。
  • 方差(Variance)

    • 对于一个模型 f ( x ) f(x) f(x),方差定义为: Variance ( f ^ ( x ) ) = E [ ( f ^ ( x ) − E [ f ^ ( x ) ] ) 2 ] \text{Variance}(\hat{f}(x)) = E[(\hat{f}(x) - E[\hat{f}(x)])^2] Variance(f^(x))=E[(f^(x)E[f^(x)])2]
    • 解释:
      • 方差反映了模型在不同训练集上预测结果的波动情况,高方差可能导致过拟合,即模型对训练数据过于敏感,在不同训练集上会产生较大的预测差异。

这些公式在评估机器学习模型的性能、比较不同模型以及分析模型的拟合能力等方面都起着至关重要的作用,你可以根据具体的问题和数据类型选择合适的评估指标和检验方法,使用相应的公式进行计算和分析。

Python 的 numpy 库来进行向量和矩阵的操作,以方便计算上述公式中的求和、平方、绝对值等操作。,计算 MSE 的
Python 代码如下:

import numpy as npdef mse(y_true, y_pred):return np.mean((y_true - y_pred) ** 2)# 示例使用
y_true = np.array([1, 2, 3, 4, 5])
y_pred = np.array([1.2, 2.1, 2.8, 4.2, 5.1])
print(mse(y_true, y_pred))

代码解释:

  • 导入 numpy 库,使用 numpyarray 存储真实值和预测值。
  • 定义 mse 函数,使用 numpymean 函数计算差值的平方的平均值。
  • 最后给出一个示例调用函数,计算并输出 MSE 值。

五、代码示例(Python 实现)

from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target# 留出法示例
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
model = LogisticRegression()
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
print(f"Holdout Method Accuracy: {accuracy}")# 交叉验证示例
model = LogisticRegression()
cv_scores = cross_val_score(model, X, y, cv=5)
print(f"Cross Validation Scores: {cv_scores}")
print(f"Cross Validation Mean Accuracy: {cv_scores.mean()}")# 性能度量示例(使用混淆矩阵计算精确率、召回率和 F1 分数)
from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score
y_pred = model.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')
print(f"Confusion Matrix:\n{cm}")
print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1 Score: {f1}")# 比较检验示例(这里简单对比两个不同参数的逻辑回归模型)
model1 = LogisticRegression(C=1.0)
model2 = LogisticRegression(C=0.1)
cv_scores1 = cross_val_score(model1, X, y, cv=5)
cv_scores2 = cross_val_score(model2, X, y, cv=5)
from scipy.stats import ttest_ind
t_stat, p_value = ttest_ind(cv_scores1, cv_scores2)
print(f"T-Test Statistic: {t_stat}, P-Value: {p_value}")# 偏差与方差示例(这里仅为概念说明,实际需要多次实验)
def train_and_predict(X_train, y_train, X_test):model = LogisticRegression()model.fit(X_train, y_train)return model.predict(X_test)# 多次实验观察结果的变化,可判断方差
results = []
for i in range(10):X_train, _, y_train, _ = train_test_split(X, y, test_size=0.3, random_state=i)y_pred = train_and_predict(X_train, y_train, X_test)results.append(y_pred)

代码解释:

  1. 留出法
    • 使用 train_test_splitiris 数据集中划分出训练集和测试集。
    • 创建 LogisticRegression 模型,在训练集上训练并在测试集上评估准确率。
  2. 交叉验证
    • 直接使用 cross_val_score 进行 5 折交叉验证,得到 5 次验证的准确率得分,取平均值。
  3. 性能度量
    • 使用 confusion_matrix 计算混淆矩阵,进而计算精确率、召回率和 F1 分数。
  4. 比较检验
    • 创建两个不同参数的 LogisticRegression 模型,使用 cross_val_score 得到它们的交叉验证得分。
    • 使用 ttest_ind 进行 t 检验,得到 t 统计量和 p 值,根据 p 值判断差异是否显著。
  5. 偏差与方差
    • 定义 train_and_predict 函数进行训练和预测。
    • 多次不同划分进行实验,观察结果的变化,可定性分析方差。

通过上述评估方法、性能度量、比较检验和对偏差与方差的理解,你可以更好地评估和选择机器学习模型,使模型在训练和测试中取得更好的性能,并能有效地比较不同模型的优劣。

阅读代码时,注意 sklearn 中函数的参数设置,如 train_test_splittest_size 决定了测试集比例,cross_val_scorecv
表示交叉验证的折数。。

相关文章:

【大数据】机器学习-----模型的评估方法

一、评估方法 留出法(Holdout Method): 将数据集划分为训练集和测试集两部分,通常按照一定比例(如 70% 训练集,30% 测试集)。训练集用于训练模型,测试集用于评估模型性能。优点&…...

【Excel笔记_3】execl的单元格是#DIV/0!,判断如果是这个,则该单元格等于空

在 Excel 中,可以使用 IF 函数来判断单元格是否是 #DIV/0! 错误,并将其替换为空值(即空字符串 "")。具体公式如下: IF(ISERROR(A1), "", A1)或者,如果只想判断 #DIV/0! 错误&#xff…...

FPGA EDA软件的位流验证

位流验证,对于芯片研发是一个非常重要的测试手段,对于纯软件开发人员,最难理解的就是位流验证。在FPGA芯片研发中,位流验证是在做什么,在哪些阶段需要做位流验证,如何做?都是问题。 我们先整体的…...

信号与系统初识---信号的分类

文章目录 0.引言1.介绍2.信号的分类3.关于周期大小的求解4.实信号和复信号5.奇信号和偶信号6.能量信号和功率信号 0.引言 学习这个自动控制原理一段时间了,但是只写了一篇博客,其实主要是因为最近在打这个华数杯,其次是因为在补这个数学知识…...

信号量机制之苹果-橘子问题

桌上有一空盘,允许存放一种水果。爸爸可向盘中放苹果,也可向盘中放橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一个水果供吃者取用。 要求:请用信号量机制实现爸爸、儿子、女儿三个并发…...

三相无刷电机控制|FOC理论04 - 克拉克变换 + 帕克变换的最终目标

导言 通过坐标系旋转,将电机中复杂的三相交流信号映射到与转子磁场同步的旋转参考系中,将动态问题转化为静态问题。这种方法的优点在于: 简化了控制逻辑。实现了转矩Iq和磁通Id的解耦。提供了直流量控制的可能性,大大提高了控制效…...

Nacos: 一个动态服务发现与配置管理平台

Nacos: 一个动态服务发现与配置管理平台 引言 在微服务架构日益普及的今天,服务之间的调用和配置管理变得越来越复杂。为了简化这一过程并提高开发效率,阿里巴巴推出了Nacos——一个易于使用的动态服务发现、配置管理和服务管理平台。 Nacos是什么&am…...

认识机器学习中的结构风险最小化准则

上一篇文章我们学习了关于经验风险最小化准则,其核心思想是通过最小化训练数据上的损失函数来优化模型参数,从而提高模型在训练集上的表现。但是这也会导致一个问题,经验风险最小化原则很容易导致模型在训练集上错误率很低,但在未…...

计算机网络 (35)TCP报文段的首部格式

前言 计算机网络中的TCP(传输控制协议)报文段的首部格式是TCP协议的核心组成部分,它包含了控制TCP连接的各种信息和参数。 一、TCP报文段的结构 TCP报文段由首部和数据两部分组成。其中,首部包含了控制TCP连接的各种字段&#xff…...

ubuntu24.04安装docker显卡工具包nvidia-container-toolkit

问题描述 docker 容器启动时如果需要访问 gpu ,需要安装 nvidia-container-toolkit 才行,否则会提示如下错误 sudo docker run --rm -it --gpus all ubuntu:latest docker: Error response from daemon: could not select device driver "" …...

rknn环境搭建之docker篇

目录 1. rknn简介2. 环境搭建2.1 下载 RKNN-Toolkit2 仓库2.2 下载 RKNN Model Zoo 仓库2.3 下载交叉编译器2.4 下载Docker镜像2.5 下载ndk2.5 加载docker镜像2.6 docker run 命令创建并运行 RKNN Toolkit2 容器2.7 安装cmake 3. 模型转换3.1 下载模型3.2 模型转换 4. 编译cdem…...

OpenCV相机标定与3D重建(56)估计物体姿态(即旋转和平移)的函数solvePnPRansac()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用RANSAC方案从3D-2D点对应关系中找到物体的姿态。 cv::solvePnPRansac 是 OpenCV 中用于估计物体姿态(即旋转和平移)的…...

vue倒计时组件封装,根据每个循环项的倒计时是否结束添加新类名。

1.创建countdown.vue文件&#xff1a; <template><p style"font-size: 10px">{{time}}</p> </template> <script>export default{data () {return {time : ,flag : false}},mounted () {let time setInterval(() > {if (this.fla…...

缩放 对内外参的影响

当你对图像进行同比例缩小时&#xff0c;图像的内参需要相应地变化&#xff0c;但外参通常保持不变。 相机内参 相机内参&#xff08;内参矩阵&#xff09;描述了相机的固有属性&#xff0c;包括焦距和主点&#xff08;光轴与图像平面的交点&#xff09;的坐标。 当你对图像…...

SQL面试题2:留存率问题

引言 场景介绍&#xff1a; 在互联网产品运营中&#xff0c;用户注册量和留存率是衡量产品吸引力和用户粘性的关键指标&#xff0c;直接影响产品的可持续发展和商业价值。通过分析这些数据&#xff0c;企业可以了解用户行为&#xff0c;优化产品策略&#xff0c;提升用户体验…...

晨辉面试抽签和评分管理系统之九:随机编排考生的分组(以教师资格考试面试为例)

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...

【EtherCATBridge】- KRTS C++示例精讲(9)

EtherCATBridge示例讲解 文章目录 EtherCATBridge示例讲解结构说明代码说明 项目打开请查看【BaseFunction精讲】。 结构说明 EtherCATBridge.h &#xff1a;数据定义 EtherCATBridge.cpp &#xff1a;应用层源码 EtherCATBridge_dll.cpp &#xff1a;内核层源码 其余文件说明…...

C++实现设计模式--- 观察者模式 (Observer)

观察者模式 (Observer) 观察者模式 是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生改变时&#xff0c;其依赖者&#xff08;观察者&#xff09;会收到通知并自动更新。 意图 定义对象之间的一对多依赖关系。当一个对象状…...

iOS 解决两个tableView.嵌套滚动手势冲突

我们有这样一个场景&#xff0c;就是页面上有一个大的tableView&#xff0c; 每一个cell都是和屏幕一样高的&#xff0c;然后cell中还有一个可以 tableView&#xff0c;比如直播间的情形&#xff0c;这个时候如果我们拖动 cell里面的tableView滚动的话&#xff0c;如果滚动到内…...

Lianwei 安全周报|2025.1.13

新的一周又开始了&#xff0c;以下是本周「Lianwei周报」&#xff0c;我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件&#xff0c;保证大家不错过本周的每一个重点&#xff01; 政策/标准/指南最新动态 01 美国国土安全部发布《公共部门生成式人工智能部署手…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

【题解-洛谷】P10480 可达性统计

题目&#xff1a;P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图&#xff0c;分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M&#xff0c;接下来 M M M 行每行两个整数 x , y x,y x,y&#xff0c;表示从 …...

OpenGL-什么是软OpenGL/软渲染/软光栅?

‌软OpenGL&#xff08;Software OpenGL&#xff09;‌或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式&#xff08;包括几何处理、光栅化、着色等&#xff09;&#xff0c;不依赖GPU硬件加速。这种模式通常性能较低&#xff0c;但兼容性极强&#xff0c;常用于不支持硬件加速…...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...

CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found

Nginx1.24编译时&#xff0c;报LuaJIT2.x错误&#xff0c; configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…...

联邦学习带宽资源分配

带宽资源分配是指在网络中如何合理分配有限的带宽资源&#xff0c;以满足各个通信任务和用户的需求&#xff0c;尤其是在多用户共享带宽的情况下&#xff0c;如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源&#xff0c;通常指的是单位时间…...