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

《机器学习》——随机森林

文章目录

  • 什么是随机森林?
  • 随机森林的原理
  • 随机森林的优缺点
    • 优点
    • 缺点
  • 随机森林模型
    • API
    • 主要参数
  • 实例
    • 实例步骤
      • 导入数据
      • 处理数据,切分数据
      • 构建模型
      • 训练模型
      • 测试数据并输出分类报告和混淆矩阵
      • 画出模型的前十重要性的特征
  • 扩展

什么是随机森林?

-随机森林(Random Forest)是一种集成学习算法,它通过构建多个决策树,并将这些决策树的结果进行综合(比如投票或者求平均)来做出最终的预测。这些决策树是在训练过程中通过对训练数据集进行有放回抽样(Bootstrap Sampling)构建的。

如对决策树不了解可看《机器学习》——决策树

随机森林的原理

  • 1、数据抽样
    • 采用自助采样法(Bootstrap Sampling)。例如,假设有一个包含 n 个样本的原始训练数据集 D,每次从 D 中有放回地抽取 n 个样本,生成一个新的训练数据集 D_i 用于训练一棵决策树。由于是有放回抽样,所以 D_i 中会有一些样本被多次抽取,也会有一些样本没有被抽到。那些没有被抽到的样本就可以作为测试集(称为袋外数据,Out - Of - Bag,简称 OOB)来评估这棵决策树的性能。
  • 2、特征选择
    • 在构建每棵决策树的节点时,并不是使用所有的特征来寻找最佳划分。而是从全部特征中随机选择一个子集(假设特征总数为 m,通常选择 m 的平方根个特征),然后在这个子集中寻找最佳划分特征。这样做的目的是为了降低决策树之间的相关性,使得每棵决策树都具有一定的独立性,从而提高整个模型的泛化能力。
  • 3、决策树构建与集成
    • 利用抽样得到的数据和选定的特征子集,构建一棵决策树。这个过程和普通决策树的构建过程类似,通过选择最佳的划分特征,不断地将数据集划分成更小的子集,直到满足停止条件(如叶子节点中的样本数小于某个阈值,或者树的深度达到了设定的最大值等)
    • 当构建了多个(假设为 k 个)这样的决策树后,对于一个新的输入样本,将其输入到这 k 棵决策树中,每棵决策树都会输出一个预测结果。如果是分类问题,通常采用投票的方式(多数表决)来确定最终的类别;如果是回归问题,则对这 k 个结果求平均值作为最终的预测值。
      在这里插入图片描述

随机森林的优缺点

优点

  • 准确性高
    • 由于它是集成了多个决策树的结果,通过综合多个 “弱学习器” 的预测,可以有效地减少模型的方差,从而提高预测的准确性。例如,在一个复杂的疾病诊断分类问题中,随机森林可以比单一的决策树更准确地判断患者是否患病。
  • 能够处理高维数据
    • 可以处理大量的特征。通过随机选择特征子集的方式,它可以筛选出对预测有重要贡献的特征,而不会因为特征过多而出现过拟合现象。比如在基因数据分析中,可能有成千上万个基因特征,随机森林可以有效地从中挖掘出与疾病相关的关键基因特征组合。
  • 抗过拟合能力强
    • 一方面是因为有放回抽样使得每棵决策树的数据都有一定的差异,另一方面是随机选择特征子集也降低了决策树之间的相关性。这两个因素使得模型不容易对训练数据过度拟合,从而在面对新的数据时也能有较好的表现。
  • 可以评估特征重要性
    • 能够计算每个特征在模型中的重要性程度。例如,在预测房屋价格的模型中,可以通过随机森林来确定房屋面积、房龄、周边配套设施等各个因素对价格影响的重要性排序。

缺点

  • 计算成本高
    • 由于需要构建多个决策树,当数据量非常大或者特征非常多时,训练时间会比较长。例如,在处理大规模的图像数据或者海量的文本数据时,构建随机森林可能需要大量的计算资源和时间。
  • 模型解释性相对较差
    • 虽然可以评估特征重要性,但是相对于简单的决策树来说,随机森林是一个由多个决策树组成的黑盒模型。要理解它具体是如何做出预测的比较困难,尤其是当决策树数量较多时。
  • 对噪声数据敏感
    • 如果训练数据中存在大量的噪声(错误的标注或者异常值),那么随机森林可能会受到影响,因为它会学习到这些噪声信息并反映在决策树的构建中。

随机森林模型

API

在这里插入图片描述

主要参数

  • n_estimators
    • 含义:森林中树的数量。
    • 取值范围:默认为 100,通常可以尝试不同的值,如 10、50、200 等。
    • 影响:增加树的数量一般会提高模型的性能,但同时也会增加计算成本和训练时间。当树的数量达到一定程度后,模型性能的提升会逐渐变缓。
    • 示例:如果将n_estimators设置为 50,模型会构建 50 棵决策树用于分类。
  • criterion
    • 含义:衡量分裂质量的标准。
    • 取值范围:可以是 “gini”(基尼不纯度)或者 “entropy”(信息熵)。
    • 影响:“gini” 倾向于在节点内保持类别分布的均匀性;“entropy” 更关注信息增益,对于类别不平衡的数据可能更敏感。
    • 示例:在一个二分类问题中,如果使用 “entropy” 作为criterion,模型在构建决策树时会更注重找到能够最大程度减少不确定性(即信息熵)的分裂特征。
  • max_depth
    • 含义:树的最大深度。
    • 取值范围:默认值为None,表示树会一直生长,直到每个叶子节点都是纯的(只包含一个类别)或者包含的样本数小于min_samples_split。也可以设置为整数,如 5、10 等。
    • 影响:限制树的深度可以防止过拟合,但如果设置得过小,可能会导致欠拟合。
    • 示例:如果max_depth设置为 3,那么决策树的最大深度就是 3 层,从根节点开始,最多向下延伸 3 层。
  • min_samples_split
    • 含义:拆分内部节点(非叶子节点)所需的最小样本数。
    • 取值范围:可以是整数(如 2)或者浮点数(如 0.1,表示样本数的比例)。
    • 影响:如果值较大,树会更容易修剪,有助于防止过拟合;如果值较小,树会更复杂,可能导致过拟合。
    • 示例:如果min_samples_split设置为 10,那么只有当一个节点包含至少 10 个样本时,才会考虑对其进行分裂。
  • min_samples_leaf
    • 含义:叶子节点所需的最小样本数。
    • 取值范围:同样可以是整数或者浮点数。
    • 影响:这个参数可以平滑模型,避免叶子节点包含太少的样本,从而防止过拟合。
    • 示例:当min_samples_leaf设置为 5 时,每个叶子节点至少要有 5 个样本。
  • max_features
    • 含义:在寻找最佳分裂时考虑的特征数量。
    • 取值范围:可以是整数(如 5,表示考虑 5 个特征)、浮点数(如 0.5,表示考虑一半的特征)、“auto”(自动考虑sqrt(n_features)个特征)、“sqrt”(同 “auto”)、“log2”(考虑log2(n_features)个特征)或者None(考虑所有特征)。
    • 影响:减少这个参数的值可以降低模型的方差,但可能会增加偏差。
    • 示例:如果max_features = 0.3,并且总共有 10 个特征,那么在每次分裂时,模型只会随机考虑 3 个特征来寻找最佳分裂点。
  • bootstrap
    • 含义:是否使用自助采样(有放回采样)来构建每棵树。
    • 取值范围:默认为True。
    • 影响:如果设置为True,可以引入随机性,有助于减少模型的方差;如果设置为False,每棵树会使用全部的训练数据,可能会导致模型过拟合。
    • 示例:当bootstrap = True时,对于一个有 100 个样本的数据集,构建每棵树时可能会对这 100 个样本进行有放回采样,有些样本可能会被多次采样,而有些样本可能不会被采样到。
  • oob_score
    • 含义:是否使用袋外(Out - Of - Bag,OOB)样本来估计模型的泛化误差。
    • 取值范围:默认为False。
    • 影响:当bootstrap = True时,大约有 1/3 的样本不会被用于构建某一棵树,这些样本称为袋外样本。使用oob_score = True可以利用这些样本进行模型评估,提供一个额外的评估指标。
    • 示例:如果设置oob_score = True,在模型训练完成后,可以通过model.oob_score_属性获取袋外样本的准确率估计值。
  • random_state
    • 含义:随机数生成器的种子。
    • 取值范围:可以是整数或者None。
    • 影响:当设置为整数时,可以保证每次运行代码时模型的结果是可复现的,因为相同的种子会产生相同的随机序列。
    • 示例:如果random_state = 42,那么每次使用相同的数据集和参数运行模型时,都会得到相同的决策树结构和分类结果。
  • class_weight
    • 含义:类别权重。
    • 取值范围:可以是 “balanced”(自动根据类别频率调整权重,使得每个类别有相同的权重)、字典(如{0:1, 1:2}表示类别 0 的权重为 1,类别 1 的权重为 2)或者None(所有类别权重相等)。
    • 影响:在类别不平衡的情况下,调整类别权重可以使模型更关注少数类,从而提高少数类的分类准确率。
    • 示例:在一个正负样本比例为 1:9 的数据集里,使用class_weight="balanced"可以让模型在训练过程中对正样本给予更多的关注,提高正样本的分类效果。

实例

我们将通过实例进行对随机森林的进一步了解。
本次实例是对垃圾邮件进行分类,共有4597条数据,其中有57个特征列和一个标签列。其中标签1为垃圾邮件,0不是垃圾邮件。

以下为少量数据:在这里插入图片描述

实例步骤

  • 导入数据
  • 处理数据,切分数据
  • 构建模型
  • 训练模型
  • 测试数据并输出分类报告和混淆矩阵
  • 画出模型的前十重要性的特征

导入数据

# 读取 csv 文件数据
df = pd.read_csv('spambase.csv')

处理数据,切分数据

# 导入数据集划分的工具
from sklearn.model_selection import train_test_split
# 获取特征列
x = df.iloc[:, :-1]
# 获取标签列
y = df.iloc[:, -1]
# 将数据集划分为训练集和测试集,测试集占 20%,随机种子为 100
xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.2, random_state=100)

构建模型

# 导入随机森林分类器
from sklearn.ensemble import RandomForestClassifier
# 实例化随机森林分类器,设置估计器数量为 100,最大特征比例为 0.8,随机种子为 0
rf = RandomForestClassifier(n_estimators=100,max_features=0.8,random_state=0
)

训练模型

# 在训练集上训练随机森林模型
rf.fit(xtrain, ytrain)

测试数据并输出分类报告和混淆矩阵

def cm_plot(y, yp):# 导入混淆矩阵计算和绘图所需的库from sklearn.metrics import confusion_matriximport matplotlib.pyplot as plt# 计算混淆矩阵cm = confusion_matrix(y, yp)# 使用蓝色调色板绘制混淆矩阵plt.matshow(cm, cmap=plt.cm.Blues)# 添加颜色条plt.colorbar()# 遍历混淆矩阵元素添加注释for x in range(len(cm)):for y in range(len(cm)):plt.annotate(cm[x, y], xy=(y, x), horizontalalignment='center',verticalalignment='center')# 给 y 轴添加标签plt.ylabel('True label')# 给 x 轴添加标签plt.xlabel('Predicted label')# 返回绘图对象return plt# 对训练集进行预测
train_predicted = rf.predict(xtrain)from sklearn import metrics
# 输出训练集上的分类报告
print(metrics.classification_report(ytrain, train_predicted))
# 调用 cm_plot 函数绘制混淆矩阵并显示
cm_plot(ytrain, train_predicted).show()# 对测试集进行预测
test_predicted = rf.predict(xtest)
# 输出测试集上的分类报告
print(metrics.classification_report(ytest, test_predicted))
# 调用 cm_plot 函数绘制混淆矩阵并显示
cm_plot(ytest, test_predicted).show()

从分类报告和混淆矩阵来看准确率和召回率还是很高的,也没有产生过拟合和欠拟合。

在这里插入图片描述
在这里插入图片描述

画出模型的前十重要性的特征

import matplotlib.pyplot as plt
from pylab import mpl
# 获取随机森林模型的特征重要性
importances = rf.feature_importances_
# 将特征重要性转换为 DataFrame
im = pd.DataFrame(importances, columns=["importances"])
# 获取数据框的列名
clos = df.columns
# 将列名转换为 numpy 数组
clos_1 = clos.values
# 将 numpy 数组转换为列表
clos_2 = clos_1.tolist()
# 去掉最后一个元素(标签列)
clos = clos_2[0:-1]
# 将特征名添加到特征重要性 DataFrame 中
im['clos'] = clos
# 按特征重要性降序排序并取前 10 个
im = im.sort_values(by=['importances'], ascending=False)[:10]# 设置字体为微软雅黑,以支持中文显示
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解决负号显示问题
mpl.rcParams['axes.unicode_minus'] = False
# 生成 y 轴刻度的范围
index = range(len(im))
# 设置 y 轴刻度标签为特征名
plt.yticks(index, im.clos)
# 绘制水平柱状图展示特征重要性
plt.barh(index, im['importances'])
# 显示图形
plt.show()

在这里插入图片描述

扩展

本实例还可以配合过采样对数据进行处理,再进行随机森林模型的训练,效果更好。
过采样算法可参考:《机器学习》——逻辑回归(过采样)

相关文章:

《机器学习》——随机森林

文章目录 什么是随机森林?随机森林的原理随机森林的优缺点优点缺点 随机森林模型API主要参数 实例实例步骤导入数据处理数据,切分数据构建模型训练模型测试数据并输出分类报告和混淆矩阵画出模型的前十重要性的特征 扩展 什么是随机森林? -随…...

Synthesia技术浅析(二):虚拟人物视频生成

Synthesia 的虚拟人物视频生成模块是其核心技术之一,能够将文本输入转换为带有同步语音和口型的虚拟人物视频。该模块如下所示: 1.文本输入处理 2.语音生成(TTS, Text-to-Speech) 3.口型同步(Lip Syncing&#xff0…...

kubelet状态错误报错

journalctl -xeu kubelet 执行后的日志如下: -- -- The process exit code is exited and its exit status is 1. Jan 02 14:20:06 iv-ydipyqxfr4wuxjsij0bd systemd[1]: kubelet.service: Failed with result exit-code. -- Subject: Unit failed -- Defined-By: system…...

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(do-while循环语句)

在C编程中,循环结构是一种用于重复执行某段代码直到特定条件不再满足的控制流语句。除了常见的for循环和while循环之外,C还提供了一种特殊的循环结构——do-while循环。这种循环结构在某些场景下非常有用,特别是在需要至少执行一次循环体的情…...

专访“梦想”号总设计师:如何向11000米深海进发

在我国迈向海洋强国的征程中,“梦想” 号钻探船无疑是一颗闪耀的明星。作为我国自主设计建造的首艘大洋钻探船,它肩负着探索深海奥秘、挖掘地球深部资源的重任,承载着无数科研人员的梦想与期望。其总长 179.8 米、型宽 32.8 米,高…...

有限元分析学习——Anasys Workbanch第一阶段笔记(7)对称问题预备水杯案例分析

目录 1 序言 2 水杯案例 2.1 添加新材料 2.2 水压设置 2.3 约束边界条件设置及其结果 2.3.1 全约束固定(压缩桌面、Fixed support固定水杯底面) 2.3.2 单方面位移约束(压缩桌面、Displacement约束软弹簧) 2.3.3 接触约束(不压缩桌面、Fixed support 固定桌面、Frictional…...

【A-Lab】部署手册:开源AAA解决方案 —FreeRADIUS

由于篇幅限制,完整版请移步至部署手册:开源AAA解决方案 —FreeRADIUS - 星融元Asterfusion 1 软件介绍 2 基础环境 2.1 部署环境 2.2 操作系统基础设置 3 安装配置数据库 4 安装配置Web和PHP 5 安装配置FreeRADIUS 6 安装配置DaloRaDIUS 7 部署结…...

配置管理工具和k8s功能重叠部分的优势比较

通过自动化配置管理工具(如 Ansible、Puppet、Chef)和应用内管理机制,也可以实现自动部署、扩缩容、负载均衡和故障恢复等功能。Kubernetes(K8s)在这些方面具有哪些独特的优势呢,尤其是在云原生环境和大规模…...

五个不同类型的数据库安装

一、 官方首页下载 打开 MySQL 官方首页,链接为: MySQL 进去社区后选择合适的版本进行安装 安装细节 依图一路next 点击finish结束安装 二、 在线YUM仓库 将该安装包的下载链接在 Linux 操作系统中按照以下命令直接进行下载 三、 二进制本地 通过该链接…...

【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装引导文件迁移显卡驱动安装等问题

Linux to go制作流程 0.写在前面 关于教程Why Linux to go?实际效果 1.准备工具2.制作步骤 下载系统镜像硬盘分区准备启动U盘安装系统重启完成驱动安装将系统启动引导程序迁移到移动硬盘上 3.可能出现的问题 3.1.U盘引导系统安装时出现崩溃3.2.不影响硬盘里本身已有…...

LeetCode 704 如何正确书写一个二分查找

题目链接 中文版:https://leetcode.cn/problems/binary-search/description/ 题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标…...

LEED绿色建筑认证在2025年相关消息

关于LEED绿色建筑认证在2025年的相关消息,以下是一些关键信息: 一、认证体系的重要性与影响力 LEED(能源与环境设计先锋奖)评估体系是全球最具影响力的绿色建筑认证标准之一。中国已成为全球第二大LEED认证市场,显示…...

百度Android最新150道面试题及参考答案 (中)

Android 中一个 View 的显示渲染过程,自定义 View 的时候需要避免什么操作? 一、View 的显示渲染过程 测量(Measure)阶段 这个阶段是 View 渲染的第一步。父容器会调用子 View 的measure()方法来确定子 View 的大小。measure()方法会传入两个参数,即MeasureSpec(测量规格…...

详解Redis的Hash类型及相关命令

目录 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX HINCRBY HINCRBYFLOAT 内部编码 应用场景 HSET 设置 hash 中指定的字段(field)的值(value)。 语法 HSET key field value [field value ...] 时…...

会议活动管理系统django

完整源码项目包获取→点击文章末尾名片!...

【数据结构与算法:七、查找】

第7章 查找 7.1 查找的基本概念 查找是通过某种算法,在一个给定的数据集合中找到目标元素或判断目标元素是否存在的操作。查找效率直接决定了程序性能,尤其在大数据处理场景下,合理选择查找算法至关重要。 查找的基本步骤 确定查找表结构…...

如何使用SparkSql

一、SparkSql的前世今生 Hive->Shark->Spark SQL 二、SparkSql依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.1.2</version> </dependency> 三、…...

沃尔玛购物卡查询

在平常生活里&#xff0c;沃尔玛卡可不只是一张购物的凭据&#xff0c;它是连着心意的绳子&#xff0c;是让生活方便的小幸福。每次拿着沃尔玛卡走进熟悉的超市大门&#xff0c;心里就会有一点期待和满足。可随着时间过去&#xff0c;可能有些卡就静静躺在抽屉角落&#xff0c;…...

Markdown中流程图的用法

Markdown中流程图图的用法 前言语法详解基本流程图几何图形节点默认的节点分离节点的ID与内容节点形状圆角形节点的语法圆形节点的语法。非对称节点语法菱形节点的语法。六角形节点的语法。平行四边形节点的语法。梯形节点的语法。 连接线基本的连接线语法。无向线段连接线。点…...

Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】

在 Linux 系统中&#xff0c;/proc 目录是一个虚拟文件系统&#xff0c;提供了关于内核、进程和系统状态的实时信息。它与系统的 内核 和 进程 运行状态紧密相关&#xff0c;是系统管理员、开发人员和用户了解系统运行状况的重要途径。 /proc 目录的名称来源于 “process”&am…...

无监督学习入门指南:从原理到实践

目录 1 无监督学习基础 1.1 核心目标 1.2 理论基础 1.3 应用层面 2 聚类分析 2.1 相似性度量 2.2 聚类算法 2.2.1 K-均值聚类 2.2.2 密度聚类&#xff1a;DBSCAN 2.2.3 谱聚类 3 降维技术 3.1 线性 3.2 非线性 3.3 降维技术面临关键问题 4 概率密度估计 4.1 参…...

(MTK平台mt8168)通过i2c调试外接MCU管理外接电源项目

这个项目是我几年前在mtk方案公司调试的一个比较具有综合性的项目,涉及到知识点有很多,我个人认为算是一个很经典的一个项目,当然这个是对技术人员而讲。我大概总结一下,涉及到i2c,kernel中的timer_list,示波器和逻辑分析仪的使用,还有i2c硬件上的原理,如果host断采用3…...

计算机网络——网络层—路由算法和路由协议

一、因特网的路由选择协议 • 不存在一种绝对的最佳路由算法。 • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 • 实际的路由选择算法&#xff0c;应尽可能接近于理想的算法。 • 路由选择是个非常复杂的问题 • 它是网络中的所有结点共同协调工…...

WPS计算机二级•数据查找分析

听说这里是目录哦 通配符&#x1f30c;问号&#xff08;?&#xff09;星号&#xff08;*&#xff09;波形符&#xff08;~&#xff09; 排序&#x1f320;数字按大小排序以当前选定区域排序以扩展选定区域排序 文字按首字母排序 快速筛选分类数据☄️文字筛选数字筛选颜色筛选…...

『SQLite』表的创建、修改和删除

本节摘要&#xff1a;主要讲述SQLite中创建、删除、修改表等操作。 创建表 CREATE TABLE 语句来创建表。 修改表 ALTER TABLE 语句来修改表名称、已有表字段&#xff0c;或者新增字段。 删除表 DROP TABLE 语句用来删除表. 注意&#xff1a; 上述内容详细讲解见文章&#…...

leecode1035.不相交的线

这道题看起来可能没有思路&#xff0c;但是实际上仔细观察会发现将相等的数字连接起来&#xff0c;并且不相交&#xff0c;就相当于是元素的原有相对顺序不变求其最大子序和&#xff0c;那么这道题目就是最长公共子序列&#xff0c;代码一模一样 class Solution { public:int m…...

事务,事务的特点,事务并发带来的问题,实现事务管理

1.什么是事务 1、事务管理是企业级应用程序开发中必不可少的技术&#xff0c;用来确保数据的完整性和一致性 2、事务是一系列动作&#xff0c;它们被当作一个独立的工作单元&#xff0c;这些动作要么全部完成&#xff0c;要么全不起作用。 2.事务的特点 ACID 1.原子性&#xf…...

并行计算-申请、创建图像界面虚拟服务器【VNC Viewer 连接灰屏问题 (能够连接上,但全是灰点,没有任何菜单、按钮,鼠标变为x)】

参考&#xff1a;并行智算云产品文档中心_Ubuntu系统开启和使用2D、3D远程可视化方式 不要用校园网。 登录这个网站 并行智算云 创建云服务 有同学出现下面情况&#xff0c;没有直接显示desk的开发环境 安装vnc sudo apt install tightvncserver 然后遇到 [解决方案] VNC V…...

[创业之路-238]:《从偶然到必然-华为研发投资与管理实践》-1-产品研发过程的质量控制绝对了结果的质量,产品研发的过程控制的质量等级决定了结果质量的等级

一、产品研发过程的质量控制&#xff1a;决定结果质量的关键 在当今竞争激烈的商业环境中&#xff0c;产品研发不仅是企业创新的源泉&#xff0c;更是决定其市场竞争力的重要因素。而产品研发过程的质量控制&#xff0c;则如同这一过程的生命线&#xff0c;直接决定了最终产品…...

Python应用——将Matplotlib图形嵌入Tkinter窗口

Python应用——将Matplotlib图形嵌入Tkinter窗口 目录 Python应用——将Matplotlib图形嵌入Tkinter窗口1 模块简介2 示例代码2.1 Matplotlib嵌入Tkinter2.2 Matplotlib嵌入Tkinter并显示工具栏 1 模块简介 Tkinter是Python的标准GUI&#xff08;图形用户界面&#xff09;库&…...

Cyber Security 101-Web Hacking-Burp Suite: The Basics(Burp Suite:基础知识)

使用 Burp Suite 进行 Web 应用程序渗透测试的简介。 任务1&#xff1a;介绍 欢迎来到 Burp Suite Basics&#xff01; 这个特定的房间旨在了解 Burp Suite Web 应用程序安全测试框架的基础知识。我们的重点将围绕 以下关键方面&#xff1a; Burp Suite 的全面介绍。全面概述…...

清除数字栈

给你一个字符串 s 。 你的任务是重复以下操作删除 所有 数字字符&#xff1a; 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 输入&#xff1a;s "cb34" 输出&#xff1a;"" 解释&#xff1a;…...

.net core 为什么使用 null!

为什么使用 null!&#xff1f; 通常在以下几种情况中&#xff0c;你可能会使用 null!&#xff1a; 属性值可能会在对象构造或某个方法中被初始化&#xff0c;但在构造函数或者对象完全初始化之前&#xff0c;属性的值可能会是 null。你知道这个属性最终会被赋一个非 null 的值…...

在Spring Boot项目中使用MySQL数据库

一、引言 MySQL 是一个广泛使用的开源关系型数据库&#xff0c;而 Spring Boot 则是一个流行的 Java 框架&#xff0c;提供了快速构建生产级别的独立 Spring 应用的能力。将 MySQL 与 Spring Boot 集成&#xff0c;可以轻松地管理应用的数据存储。本文将介绍如何在 Spring Boo…...

redis各种数据类型介绍

Redis 是一种高性能的键值存储数据库&#xff0c;它支持多种数据类型&#xff0c;使得开发者可以灵活地存储和操作数据。以下是 Redis 支持的主要数据类型及其介绍&#xff1a; 1. 字符串&#xff08;String&#xff09; 字符串是 Redis 中最基本的数据类型&#xff0c;它可以存…...

聊聊前端框架中的process.env,env的来源及优先级(next.js、vue-cli、vite)

在平时开发中&#xff0c;常常使用vue、react相关脚手架创建项目&#xff0c;在项目根目录可以创建.env、.env.[mode]&#xff08;mode为development、production、test)、.env.local等文件&#xff0c;然后在项目中就可以通过process.env来访问相关的环境变量了。 下面针对如下…...

链地址法(哈希桶)

链地址法&#xff08;哈希桶&#xff09; 解决冲突的思路 开放定址法中所有的元素都放到哈希表⾥&#xff0c;链地址法中所有的数据不再直接存储在哈希表中&#xff0c;哈希表 中存储⼀个指针&#xff0c;没有数据映射这个位置时&#xff0c;这个指针为空&#xff0c;有多个数…...

OpenCV相机标定与3D重建(44)初始化广角(鱼眼)相机的投影映射函数initWideAngleProjMap()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::initWideAngleProjMap 是 OpenCV 库中的一个函数&#xff0c;用于初始化广角&#xff08;鱼眼&#xff09;相机的投影映射。这个函数生成两个…...

『SQLite』安装与基本命令语法

SQLite安装 Windows&#xff1a; 访问 SQLite 的安装网页&#xff1a;https://www.sqlite.org/download.html.向下滚动页面到“Precompiled Binaries for Windows”部分。下载适用于你的系统架构&#xff08;32-bit 或 64-bit&#xff09;的预编译二进制文件。将下载的 ZIP 文…...

Meta 发布 Llama 3.3:一个性能和效率均有所提升的多语言模型

Meta 发布 Llama 3.3:一个性能和效率均有所提升的多语言模型 Meta 发布了 Llama 3.3,这是一款多语言大语言模型,旨在支持研究和行业中的一系列人工智能应用。该模型具有 128k 个 token 上下文窗口,并对架构进行了改进以提高效率,在推理、编码和多语言任务的基准测试中表现…...

场馆预定平台高并发时间段预定实现V1

&#x1f3af; 本文介绍了一个高效处理高并发场馆预订请求的系统设计方案。通过使用Redis缓存和位图技术&#xff0c;系统能够快速管理场地的可用性和预订状态。采用Lua脚本确保操作的原子性&#xff0c;结合责任链模式进行参数校验&#xff0c;并通过事务保证数据一致性。系统…...

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误&#xff0c;其实很简单&#xff0c;要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…...

BOOST 库在深度学习中的应用及具体代码分析(三)

一、引言 深度学习的迅猛发展重塑了众多领域的技术格局&#xff0c;从智能安防中的人脸识别精准监测&#xff0c;到医疗影像辅助诊断助力疾病早期发现&#xff0c;再到自然语言处理驱动智能客服流畅交流&#xff0c;其影响力无处不在。在深度学习的实现工具集中&#xff0c;Pyt…...

VSCode 在Windows下开发时使用Cmake Tools时输出Log乱码以及CPP文件乱码的终极解决方案

在Windows11上使用VSCode开发C程序的时候&#xff0c;由于使用到了Cmake Tools插件&#xff0c;在编译运行的时候&#xff0c;会出现输出日志乱码的情况&#xff0c;那么如何解决呢&#xff1f; 这里提供了解决方案&#xff1a; 当Settings里的Cmake: Output Log Encoding里设…...

机器学习经典算法——线性回归

目录 算法介绍 一元线性回归模型 多元线性回归模型 ​误差项分析 相关系数 算法案例 一元线性回归预测——广告销售额案例 二元线性回归预测——血压收缩案例 多元线性回归预测——糖尿病案例 算法介绍 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种…...

基于单片机的光控窗帘设计

摘 要 : 为了能根据室外环境亮度实现窗帘自动拉合的设计需求 , 提出了一种基于单片机 控制的 光控窗帘设计方案 , 并完成系统的软 、 硬件设计 。 该系统的硬件部分主要利用光敏传感器产生的信号作为单片机输入信号, 软件部分采用 C 语言进行编程 , 能够完成智能光控…...

STM32 拓展 电源控制

目录 电源控制 电源框图 VDDA供电区域 VDD供电区域 1.8V低电压区域 后备供电区域 电压调节器 上电复位和掉电复位 可编程电压检测器(PVD) 低功耗 睡眠模式(只有CUP(老板)睡眠) 进入睡眠模式 退出睡眠模式 停机(停止)模式(只留核心区域(上班)) 进入停…...

ASP.NET CORE 依赖注入的三种方式,分别是什么,使用场景

在 依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;中&#xff0c;通常有三种常见的服务生命周期模式&#xff0c;用于控制服务实例的创建和管理。这些模式分别是&#xff1a;Transient、Scoped 和 Singleton。这三种模式在 ASP.NET Core 中非常重要…...

在Linux中,如何禁用root用户直接SSH登录?

在Linux中禁用root用户的直接SSH登录是为了增强系统的安全性&#xff0c;因为允许root用户通过SSH远程登录会增加服务器被暴力破解的风险。以下是在Linux系统中禁止root用户直接SSH登录的步骤&#xff1a; 编辑SSH配置文件&#xff1a; 打开/etc/ssh/sshd_config文件&#xff…...

Unity3D仿星露谷物语开发17之空库存栏UI

1、目标 将库存栏放在游戏界面中&#xff0c;一般情况下角色居中展示时库存栏在底部&#xff0c;当角色位于界面下方时库存栏展示在顶部避免遮挡。 2、CanvasGroup组件 用于集中控制UI元素的透明度、交互性和射线投射行为。CanvasGroup的Alpha属性允许渐变效果&#xff0c;I…...