贝叶斯分类器(公式推导+举例应用)

news2025/4/3 14:18:13

文章目录

      • 引言
      • 贝叶斯决策论
      • 先验概率和后验概率
      • 极大似然估计
      • 朴素贝叶斯分类器
      • 朴素贝叶斯分类器的优点与缺点
        • 优点
        • 缺点
      • 总结
      • 实验分析

引言

在机器学习的世界中,有一类强大而受欢迎的算法——贝叶斯分类器,它倚仗着贝叶斯定理和朴素的独立性假设,成为解决分类问题的得力工具。这种算法的独特之处在于其对概率的建模,使得它在面对不确定性和大规模特征空间时表现卓越。

本文将深入探讨贝叶斯分类器,首先通过详细的公式推导带你走进其内部机制,随后通过实际案例展示其在各个领域的广泛应用。

贝叶斯决策论

贝叶斯决策论是一种基于概率论和决策理论的决策框架,其核心思想是通过最大化期望效用来做出最优的决策。该理论的基础是贝叶斯定理,它将不确定性引入决策过程中,特别适用于需要考虑不确定性因素的问题。

假设有 N N N种可能的类别标记,即 y = { c 1 , c 2 , . . . , c N } y=\{c_1,c_2,...,c_N\} y={c1,c2,...,cN} λ i j \lambda_{ij} λij是将一个真实标记为 c j c_j cj的样本误分类为 c i c_i ci所产生的损失。基于后验概率 P ( c i ∣ x ) P(c_i|x) P(cix)可获得将样本 x x x分类为 c i c_i ci所产生的期望损失,即样本 x x x上的条件风险
R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) (1) R(c_i|x)=\sum_{j=1}^N\lambda_{ij}P(c_j|x) \tag{1} R(cix)=j=1NλijP(cjx)(1)

我们的任务是寻找一个判定准则 h : χ ↦ y h:\chi\mapsto y h:χy以最小化总体风险:
R ( h ) = E [ R ( h ( x ) ∣ x ) ] (2) R(h)=\mathbb{E}[R(h(x)|x)] \tag{2} R(h)=E[R(h(x)x)](2)
其中 E \mathbb{E} E表示期望值。显然,对于每个样本 x x x,若 h h h能最小化条件风险 R ( h ( x ) ∣ x ) R(h(x)|x) R(h(x)x),则总体的 R ( h ) R(h) R(h)也将会被最小化。

贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险 R ( c ∣ x ) R(c|x) R(cx)最小的类别标记,即:
h ⋆ ( x ) = a r g c ∈ y m i n   R ( c ∣ x ) (3) h^\star(x)=arg_{c\in y} \quad min\ R(c|x) \tag{3} h(x)=argcymin R(cx)(3)

此时, h ⋆ h^\star h称为贝叶斯最优分类器,与之对应的总体风险 R ( h ⋆ ) R(h^\star) R(h)称为贝叶斯风险。 1 − R ( h ⋆ ) 1-R(h^\star) 1R(h)反映了分类器所能达到的最好性能。

具体来说,若目标是最小化分类错误率,则误判损失 λ i j \lambda_{ij} λij可写为:
λ i j = { 0 , i f   i = j 1 , o t h e r w i s e (4) \lambda_{ij}= \begin{cases} 0,\quad if \ i=j\\ 1, \quad otherwise \end{cases} \tag{4} λij={0,if i=j1,otherwise(4)
此时条件风险:
R ( c ∣ x ) = 1 − P ( c ∣ x ) (5) R(c|x)=1-P(c|x) \tag{5} R(cx)=1P(cx)(5)

于是最小化分类错误率的贝叶斯分类器为:
h ⋆ ( x ) = a r g c ∈ y m a x   P ( c ∣ x ) (6) h^\star(x)=arg_{c\in y} \quad max\ P(c|x) \tag{6} h(x)=argcymax P(cx)(6)

即对每个样本 x x x,选择能使后验概率 P ( c ∣ x ) P(c|x) P(cx)最大的类别标记。

然而在现实任务中,我们很难得到后验概率 P ( c ∣ x ) P(c|x) P(cx)

自此我们有两种策略:

  • 判别式模型:给定 x x x,可通过直接建模 P ( c ∣ x ) P(c|x) P(cx)来预测 c c c
  • 生成式模型:对联合概率分布 P ( x , c ) P(x,c) P(x,c)建模,然后再由此获得 P ( c ∣ x ) P(c|x) P(cx)

显然对于生成式模型来说,需考虑:
P ( c ∣ x ) = P ( x , c ) P ( x ) (7) P(c|x)=\frac{P(x,c)}{P(x)} \tag{7} P(cx)=P(x)P(x,c)(7)

基于贝叶斯定理, P ( c ∣ x ) P(c|x) P(cx)可写为:
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) (8) P(c|x)=\frac{P(c)P(x|c)}{P(x)} \tag{8} P(cx)=P(x)P(c)P(xc)(8)

因此估计 P ( c ∣ x ) P(c|x) P(cx)的问题就转化为如何基于训练数据 D D D来估计先验概率 P ( c ) P(c) P(c)和似然 P ( x ∣ c ) P(x|c) P(xc)

先验概率和后验概率

先验概率(Prior Probability)

先验概率是在考虑任何观测数据之前,对事件的概率进行估计。它是基于以往经验、领域知识或其他信息得出的概率。符号通常表示为 P ( A ) P(A) P(A),其中 A A A是事件。先验概率反映了在考虑新观测数据之前我们对事件的信念。

后验概率(Posterior Probability)

后验概率是在考虑了新的观测数据之后,对事件的概率进行修正的概率。它是基于先验概率和新观测数据的联合影响得出的概率,使用贝叶斯定理计算。符号通常表示为 P ( A ∣ B ) P(A|B) P(AB),其中 A A A是事件, B B B是观测数据。后验概率反映了在获得新信息后我们对事件的修正信念。

让我们通过一个简单的例子来生动形象地描述先验概率和后验概率的概念。
场景:病人的健康检查

  • 先验概率的理解: 假设有一个医生,他的病人群体中,有 10% 的人患有某种疾病(事件 A A A)。这个 10% 的患病率是基于医生以往的经验和病历统计得到的。在这里,患病率 10% 就是先验概率 P ( A ) P(A) P(A)
  • **后验概率的理解:**现在,该医生对一位新的病人进行了检查,得到了一些特定的症状(事件 B B B)。在这个特定的病人身上,这些症状出现的概率是多少呢?这就是后验概率 P ( A ∣ B ) P(A|B) P(AB)

使用贝叶斯定理,医生可以更新他的信念。假设在已知患病率为 10% 的情况下,症状出现的概率为 80%(这是似然度 P ( B ∣ A ) P(B|A) P(BA)),而病人患有该疾病的概率就可以通过贝叶斯定理计算。
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)
这里, P ( B ) P(B) P(B)表示症状出现的概率,可以通过考虑所有可能情况来计算。例如,患病且出现症状的情况和不患病但出现症状的情况。
医生通过这个计算,得到了在考虑了新的症状后,病人患有该疾病的后验概率。这个后验概率可以帮助医生更准确地评估病人的健康状况,这就是后验概率的概念。

极大似然估计

极大似然估计(Maximum Likelihood Estimation,简称MLE)是一种常用的参数估计方法,用于估计统计模型中的参数。该方法基于观测到的数据,寻找使得观测到这些数据的概率最大的模型参数。

具体的,记关于类别 c c c的类条件概率为 P ( x ∣ c ) P(x|c) P(xc),假设 P ( x ∣ c ) P(x|c) P(xc)具有确定的形式且被参数向量 θ c \theta_c θc唯一确定,则我们的任务就是利用训练集 D D D估计参数 θ c \theta_c θc。为明确起见,我们将 P ( x ∣ c ) P(x|c) P(xc)记为 P ( x ∣ θ c ) P(x|\theta_c) P(xθc)

D c D_c Dc表示训练集 D D D中的第三 c c c类样本组成的集合,假设他们都是独立同分布的,则参数 θ c \theta_c θc对于数据集 D c D_c Dc的似然是:
P ( D c ∣ θ c ) = ∏ x ∈ D c P ( x ∣ θ c ) (9) P(D_c|\theta_c)=\prod_{x\in D_c}P(x|\theta_c) \tag{9} P(Dcθc)=xDcP(xθc)(9)

θ c \theta_c θc进行极大似然估计,就是去寻找能最大化似然 P ( D c ∣ θ c ) P(D_c|\theta_c) P(Dcθc)的参数值 θ ^ c \hat \theta_c θ^c。从直观上讲,极大似然估计就是寻找在所有取值中,最大的一个 θ ^ c \hat \theta_c θ^c

式(9)中连乘会导致下溢,通常使用对数似然:
L L ( θ c ) = l o g P ( D c ∣ θ c ) = ∑ x ∈ D c l o g P ( x ∣ θ c ) (10) \begin{aligned} LL(\theta_c) &= logP(D_c|\theta_c) \\ &= \sum_{x\in D_c} logP(x|\theta_c) \end{aligned} \tag{10} LL(θc)=logP(Dcθc)=xDclogP(xθc)(10)

此时的参数 θ c \theta_c θc的极大似然估计 θ ^ c \hat \theta_c θ^c为:
θ ^ c = arg θ c   m a x   L L ( θ c ) (11) \begin{aligned} \hat \theta_c =&\underset{\theta_c}{\text{arg}} \ max\ LL(\theta_c) \end{aligned} \tag{11} θ^c=θcarg max LL(θc)(11)

朴素贝叶斯分类器

朴素贝叶斯分类器是一种基于贝叶斯定理的分类算法,它假设特征之间是相互独立的(朴素贝叶斯的"朴素"就体现在这里),并且使用了一些概率统计的方法进行分类。它广泛应用于文本分类、垃圾邮件过滤、情感分析等领域。

基于属性条件独立性假设,式(8)可重写为:
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) P ( x ) ∏ i = 1 d P ( x i ∣ c ) (12) P(c|x)=\frac{P(c)P(x|c)}{P(x)}=\frac{P(c)}{P(x)}\prod_{i=1}^dP(x_i|c) \tag{12} P(cx)=P(x)P(c)P(xc)=P(x)P(c)i=1dP(xic)(12)

其中 d d d为属性数目, x i x_i xi x x x在第 i i i个属性上的取值。

由于对于所有类别来说 P ( x ) P(x) P(x)相同,因此基于式(6)的贝叶斯判定准则有:
h n b ( x ) = arg c ∈ y   m a x   P ( c ) ∏ i = 1 d P ( x i ∣ c ) (13) \begin{aligned} h_{nb}(x) =&\underset{c \in y}{\text{arg}} \ max\ P(c)\prod_{i=1}^dP(x_i|c) \end{aligned} \tag{13} hnb(x)=cyarg max P(c)i=1dP(xic)(13)

这就是朴素贝叶斯分类器的表达式。

D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率:
P ( c ) = ∣ D c ∣ ∣ D ∣ (14) P(c)=\frac{|D_c|}{|D|} \tag{14} P(c)=DDc(14)

现在我们估计似然 P ( x i ∣ c ) P(x_i|c) P(xic)

  • 对于离散数据而言:令 D c , x i D_{c,x_i} Dc,xi表示 D c D_c Dc中的第 i i i个属性上取值为 x I x_I xI的样本组成的集合,则条件概率 P ( x i ∣ c ) P(x_i|c) P(xic)可估计为:
    P ( x i ∣ c ) = ∣ D c , x i ∣ ∣ D c ∣ (15) P(x_i|c)=\frac{|D_{c,x_i}|}{|D_c|} \tag{15} P(xic)=DcDc,xi(15)
  • 对于连续数据而言:可以考虑概率密度,假定 p ( x i , c ) ∼ N ( μ c , i , σ c , i 2 ) p(x_i,c)\sim N(\mu_{c,i},\sigma_{c,i}^2) p(xi,c)N(μc,i,σc,i2),即 p ( x i , c ) p(x_i,c) p(xi,c)服从均值为 μ c , i \mu_{c,i} μc,i,方差为 σ c , i 2 \sigma_{c,i}^2 σc,i2的正态分布,则有:
    p ( x i , c ) = 1 2 π σ c , i e − ( x i − μ c , i ) 2 2 σ c , i 2 (16) p(x_i,c)=\frac{1}{\sqrt{2\pi}\sigma_{c,i}}e^{-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2}}\tag{16} p(xi,c)=2π σc,i1e2σc,i2(xiμc,i)2(16)

朴素贝叶斯分类器的优点与缺点

优点
  • 朴素贝叶斯算法简单,易于实现。
  • 在处理大规模数据集时表现良好。
  • 在特征之间相对独立的情况下,效果良好。
缺点
  • 对于特征之间相关性较强的数据,朴素贝叶斯可能表现不佳。
  • 对于缺失数据的处理相对较为复杂。

总体而言,朴素贝叶斯分类器在许多实际应用中表现良好,特别是在文本分类等领域。

总结

在本文中,我们深入探讨了贝叶斯分类器及其相关概念。首先,我们通过详细的公式推导介绍了贝叶斯决策论,阐述了其基于概率和决策理论的决策框架。接着,我们讨论了贝叶斯定理的先验概率和后验概率,通过生动的例子说明了这两个概念的重要性和应用场景。

随后,我们转向了极大似然估计,解释了在统计模型中使用观测数据来估计参数的方法。通过推导极大似然估计的基本原理,我们理解了其在模型参数估计中的重要性。

最后,我们详细介绍了朴素贝叶斯分类器,阐述了其基于贝叶斯定理和属性条件独立性假设的工作原理。我们还探讨了朴素贝叶斯分类器的优点和缺点,以及其在实际应用中的广泛使用,特别是在文本分类等领域。

总体而言,贝叶斯分类器作为一种强大而灵活的机器学习算法,在不同领域展现出了卓越的性能。通过深入了解其原理和应用,我们能够更好地理解和利用这一算法来解决实际问题。希望本文能够为读者提供清晰的认识,并激发对贝叶斯分类器更深层次研究的兴趣。

实验分析

判断一封邮件是否为垃圾邮件。

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, classification_report

# 读入数据集
df = pd.read_csv('data/spam_or_not_spam.csv')

在这里插入图片描述
训练朴素贝叶斯分类器

# 先去除包含 NaN 值的行
df = df.dropna(subset=['email', 'label'])

X = df['email']
y = df['label']

# 文本转词袋模型
vectorizer = CountVectorizer(stop_words='english')
X = vectorizer.fit_transform(X)

# 数据拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练朴素贝叶斯分类器
nb_classifier = MultinomialNB()
nb_classifier.fit(X_train, y_train)

# 预测
y_pred = nb_classifier.predict(X_test)
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 模型评估
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)

print(f"Accuracy: {accuracy}")
print("Classification Report:\n", report)

# 设置中文字体
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=12)
plt.rcParams['font.sans-serif'] = ['SimSun']  # 设置字体为宋体

# 生成混淆矩阵
cm = confusion_matrix(y_test, y_pred)

# 绘制混淆矩阵图
plt.figure(figsize=(8, 6))
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['非垃圾邮件', '垃圾邮件'])
disp.plot(cmap=plt.cm.Blues)
plt.title('混淆矩阵', fontproperties=font)
plt.show()

# 生成 ROC 曲线
y_probs = nb_classifier.predict_proba(X_test)[:, 1]
fpr, tpr, _ = roc_curve(y_test, y_probs)
roc_auc = auc(fpr, tpr)

# 绘制 ROC 曲线图
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC 曲线(面积 = {:.2f})'.format(roc_auc))
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlabel('假正率', fontproperties=font)
plt.ylabel('真正率', fontproperties=font)
plt.title('接收者操作特征曲线 (ROC) 曲线', fontproperties=font)
plt.legend(loc='lower right')
plt.show()
Accuracy: 0.9916666666666667
Classification Report:
               precision    recall  f1-score   support

           0       0.99      1.00      1.00       500
           1       1.00      0.95      0.97       100

    accuracy                           0.99       600
   macro avg       1.00      0.97      0.98       600
weighted avg       0.99      0.99      0.99       600

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

  1. 准确度(Accuracy): 0.9917,表示模型在整体上正确预测的比例。这是一个很高的准确度,说明模型在测试数据上的表现非常好。

  2. 分类报告(Classification Report):

  • 对于类别 0(非垃圾邮件):
    • 精确度(Precision):0.99,表示在所有模型预测为非垃圾邮件的样本中,实际上有 99% 是正确的。
    • 召回率(Recall):1.00,表示在所有实际非垃圾邮件的样本中,模型成功预测的比例为 100%。
    • F1 分数(F1-score):1.00,是精确度和召回率的调和平均值,综合考虑了两者。
    • 支持度(Support):500,表示测试集中实际为非垃圾邮件的样本数量。
  • 对于类别 1(垃圾邮件):
    • 精确度:1.00,表示在所有模型预测为垃圾邮件的样本中,实际上有 100% 是正确的。
    • 召回率:0.95,表示在所有实际垃圾邮件的样本中,模型成功预测的比例为 95%。
    • F1 分数:0.97,是精确度和召回率的调和平均值,综合考虑了两者。
    • 支持度:100,表示测试集中实际为垃圾邮件的样本数量。
  1. 加权平均(weighted avg): 这是对各类别指标进行加权平均,考虑到每个类别的支持度。在这里,加权平均的准确度、精确度、召回率和 F1 分数都达到了 0.99。

  2. 宏平均(macro avg): 这是对各类别指标取平均,不考虑各类别的支持度。在这里,宏平均的准确度、精确度、召回率和 F1 分数分别为 1.00、0.97、1.00 和 0.98。

总体来说,模型在非垃圾邮件的预测上表现非常好,而在垃圾邮件的预测上稍微有些降低,主要体现在垃圾邮件的召回率上。综合考虑各指标,模型在整体上仍然表现出色。

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

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

相关文章

程序员副业之AI文库项目(超详细完整全流程)

引言 大家好,我是小黑,今天给大家介绍一个特别简单的项目,用AI辅助咱们来编写各种word,PPT等资料上传到百度文库、原创力、道客巴巴、csdn等平台赚取被动的睡后收益。 但要注意,只是辅助,即便是用AI辅助&…

SpringBoot项目里用MultipartFile作为入参获取到的file为什么null

前言: 最近在项目中用到了Excel模板导入功能,但是在测试阶段用Postman测试时,通过Post请求,传到后端的File一直为null。其中前端传参和请求都没问题,后端的接参也没问题,问题出在过滤器的复用上。 问题场…

Matlab字符识别实验

Matlab 字符识别OCR实验 图像来源于屏幕截图,要求黑底白字。数据来源是任意二进制文件,内容以16进制打印输出,0-9a-f’字符被16个可打印字符替代,这些替代字符经过挑选,使其相对容易被识别。 第一步进行线分割和字符…

【QT】标准对话框

目录 1 概述 2 QFileDialog对话框 1.选择打开一个文件 2.选择打开多个文件 3.选择已有目录 4.选择保存文件名 3 QColorDialog对话框 4 QFontDialog对话框 5 QInputDialog标准输入对话框 1.输入文字 2.输入整数 3.输入…

Himawari-8 数据下载【利用FTP】

1 波段介绍 2 注册 数据下载之前,必须进行注册 JAXA Himawari Monitor | Registration 注册后,在邮箱里点击同意 邮箱会给出FTP的账号信息 3 下载FTP软件 点击进行新站点的新建 设置刚才邮箱里的主机、用户和密码 选择远程站点,选择自己…

【JaveWeb教程】(25) JDBC、数据库连接池、Lombok 详细代码示例讲解(最全面)

目录 2. JDBC介绍(了解)2.1 介绍2.2 代码2.3 问题分析2.4 技术对比 3. 数据库连接池3.1 介绍3.2 产品 4. lombok4.1 介绍4.2 使用 2. JDBC介绍(了解) 2.1 介绍 通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大…

wpf使用Popup封装数据筛选框--粉丝专栏

类似于DevExpress控件的功能 这是DevExpress的winform筛选样式,如下: 这是DevExpress的wpf筛选样式,如下: 这是Excel的筛选样式,如下: 先看效果 本案例使用wpf原生控件封装,功能基本上都满足…

Python Web开发库之vcrpy 使用详解

概要 在现代Web开发中,HTTP请求是不可避免的一部分。然而,通过网络发送HTTP请求可能会导致一些问题,如慢速响应、网络不稳定和API限制。为了解决这些问题,Python社区开发了一些工具和库,其中之一就是vcrpy。vcrpy是一…

RabbitMQ 的基本概念

一 MQ 的基本概念 1 MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。消息队列就是所谓的存放消息的队列。 消息队列解决的不是存放消息的队列的⽬的,解决的是通信问…

C++I/O流——(2)预定义格式的输入/输出(第二节)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 含泪播种的人一定能含笑收获&#xff…

基于EEMD-SpEn(样本熵)联合小波阈值去噪

代码原理 以样本熵为阈值的EEMD联合小波阈值去噪方法是一种结合了经验模态分解(EEMD)、样本熵和小波阈值去噪的信号处理方法,用于去除信号中的噪声。 下面是具体的步骤: 1. 经验模态分解(EEMD)&#xff…

uniapp 开发小程序的时候使用自定义 tabbar 时出现切换页面闪烁的情况

问题:在使用自定义组件的时候可以看到页面切换明显的闪烁, 这种体验是很不好的, 当然最好的方式就是使用原生导航栏, 不要搞花里胡哨的东西。 来看下体验不好的效果 优化调整 先说思路,就是仍然设置原生 tabbar, 在应用启动的时候主动隐藏原生 tabba…

计算机网络 —— 数据链路层

数据链路层 3.1 数据链路层概述 数据链路层把网络层交下来的数据构成帧发送到链路上,以及把收到的帧数据取出并上交给网络层。链路层属于计算机网络的底层。数据链路层使用的信道主要由以下两种类型: 点对点通信。广播通信。 数据链路和帧 链路&…

国足2024亚洲杯首战!Python爬取每场比赛双方球队的近期交战战绩

一、爬取目标 二、完整源码 #""""""""""""""""""""""""""""""""""""""…

30 树的定义

树的定义 树的度?叶节点? 注意:k为叶节点 孩子/双亲/子孙/祖先 树的高度? 有序树 森林 树的一些操作: 粗略的框架代码: 省略。。。 小结: 树是线性表的扩展

vcruntime140.dll已加载,但找不到入口点的处理方法分享

当遇到错误提示“vcruntime140.dll已加载,但找不到入口点”时,很多人可能会感到困惑,不知道如何去处理这个问题。不过没有必要紧张,在这里我会为大家详细解释 vcruntime140.dll 文件是什么,并指导大家如何高效地解决 v…

2024年中职网络安全——Windows操作系统渗透测试(Server2105)

Windows操作系统渗透测试 任务环境说明: 服务器场景:Server2105服务器场景操作系统:Windows(版本不详)(封闭靶机)需要环境加Q 目录 1.通过本地PC中渗透测试平台Kali对服务器场景进行系统服务…

让网页自动化测试更简便,流程图设计工具为您解决痛点

在数字化时代,网页自动化测试已经成为提高工作效率、保证项目质量的重要手段。然而,传统的自动化测试往往需要复杂的编程技能,对非专业人员来说门槛较高。为了解决这个问题,我们向您推荐一款创新的设计工具,它可以通过…

好大夫问诊数据爬虫记录

好大夫问诊数据爬虫入库字段记录 获取医生的病程列表 uid Column(Integer, primary_keyTrue, autoincrementTrue) gender Column(String(10)) # 性别 age Column(Integer) # 年龄 # 总交流次数 total_communication_times Column(Integer) # 医生回复次数 doctor_reply_t…

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II 文章目录 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II1 Le…