朴素贝叶斯法

文章目录

    • 贝叶斯定理
    • 朴素贝叶斯法的学习与分类
      • 条件独立假设
      • 朴素贝叶斯的后验概率最大化准则
        • 朴素贝叶斯的基本公式
    • 朴素贝叶斯法的参数估计
      • 极大似然估计

贝叶斯定理

前置知识:条件概率、全概率、贝叶斯公式

推荐视频,看完视频后搜索博客了解先验概率后验概率

这里简单记录一下

贝叶斯定理:已知结果找原因/过程

已知事件B发生,求事件 A i A_i Ai是原因的概率 P ( A i ∣ B ) = P ( A i ) P ( B ∣ A i ) P ( B ) = P ( A i B ) B 的全概率公式 = P ( 类别 ∣ 特征 ) = P ( 特征 ∣ 类别 ) P ( 类别 ) P ( 特征 ) P(Ai|B) = \frac{P(Ai)P(B|Ai)}{P(B)} = \frac{P(A_iB)}{B的全概率公式}=P(类别|特征) = \frac{P(特征|类别)P{(类别)}}{P(特征)} P(AiB)=P(B)P(Ai)P(BAi)=B的全概率公式P(AiB)=P(类别特征)=P(特征)P(特征类别)P(类别)

通常,事件A在事件B(发生)的条件下的概率,与事件B在事件A(发生)的条件下的概率是不一样的。

这两者是有确定的关系的,贝叶斯定理就是这种关系的陈述。

每个概率都有特定的名称

1. P ( A i ) P(A_i) P(Ai)是A的先验概率:基于统计的概率,是基于以往历史经验和分析得到的结果。先验不考虑B方面的因素下,人们对 A i Ai Ai发生概率的理解

2. P ( A i ∣ B ) P(Ai|B) P(AiB)是A的后验概率:已知事情B发生了,我们对 A i A_i Ai发生的概率有了新的认识,其概率由 P ( A i ) P(A_i) P(Ai)变成了 P ( A i ∣ B ) P(A_i|B) P(AiB)。 => 后验概率的计算要以先验概率为基础

朴素贝叶斯法的学习与分类

条件独立假设

朴素贝叶斯:朴素贝叶斯方法是基于贝叶斯定理和特征条件独立假设的分类方法。

条件独立假设:条件独立性假设就是各个特征之间互不影响,每个特征都是条件独立的。这一假设使得朴素贝叶斯法变得简单,但是有时候会牺牲一定的分类准确率。

条件独立假设的公式

X表示实例集合,Y表示类标记集合。

x是一个有n个特征的实例。

X ( j ) X^{(j)} X(j)表示某个实例的第j个特征。

假设特征独立公式

P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 , . . . , X n = x n ∣ Y = c k ) = p ( X 1 = x 1 ∣ Y = c k ) ∗ . . . ∗ p ( , X n ∣ Y = c k ) = ∏ j = 1 n P ( X j = x j ∣ Y = c k ) P(X=x|Y=c_k)=P(X^1=x^1,...,X^n=x^n|Y=c_k)=p(X^1=x^1|Y=c_k)*...*p(,X^n|Y=c_k)=\prod_{j=1}^n P(X^{j}=x^{j}|Y=c_k) P(X=xY=ck)=P(X1=x1,...,Xn=xnY=ck)=p(X1=x1Y=ck)...p(,XnY=ck)=j=1nP(Xj=xjY=ck)

朴素贝叶斯的后验概率最大化准则

朴素贝叶斯的基本公式

1.后验概率根据贝叶斯定理计算

P ( Y = c k ∣ X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) P ( X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) ∑ k P ( X = x ∣ Y = c k ) P ( Y = c k ) ) P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)}=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_k P(X=x|Y=c_k)P(Y=c_k))} P(Y=ckX=x)=P(X=x)P(X=xY=ck)P(Y=ck)=kP(X=xY=ck)P(Y=ck))P(X=xY=ck)P(Y=ck)

2.将条件独立假设公式代入

朴素贝叶斯分类的核心思想:对于给出的待分类样本,求解在此样本出现的条件下各个类别出现的概率,哪个最大 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x),就认为此待分类样本属于哪个类别。 => 分类准则:后验概率最大化

1.朴素贝叶斯分类器就是取后验概率最大时的分类,所以我们需要比较不同分类(k=1,2,…,k)时 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x)的概率大小

2.不同贝叶斯分类的分母 P ( X = x ) P(X=x) P(X=x)都是一样,所以可以简化只比较分子的大小

y = f ( x ) = a r g max ⁡ c k P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) y=f(x)=arg \max_{c_k}P(Y=c_k)\prod_{j} P(X^{j}=x^{j}|Y=c_k) y=f(x)=argmaxckP(Y=ck)jP(Xj=xjY=ck)

argmax、argmin的说明

argmax 表示 后面的表达式取最大值的时候,返回自变量 C k C_k Ck的取值 。

朴素贝叶斯法将样本分到后验概率最大的类 ,等价于此时期望风险最小化。

证明 后验概率最大化 <=> 期望风险最小化

假设选择0-1损失函数,其中f(X)为分类决策函数 。与真实类别Y比较,相等即没有损失,不相等则损失为1。

L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X))= \begin{cases} 1, Y\neq{f(X)} \\ 0 ,Y=f(X) \end{cases} L(Y,f(X))={1,Y=f(X)0,Y=f(X)

期望风险:对损失函数 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X))求期望 R ( f ) = E [ L ( Y , f ( X ) ) ] R(f)=E[L(Y,f(X))] R(f)=E[L(Y,f(X))]

期望的定义为:值出现的概率*具体的值 累计值,在这里就是损失函数值*联合概率 累计值

套入二维随机变量函数的期望公式

期望风险最小化可以转换为以下式子:

m i n ∑ Y L ( Y , f ( X ) ) P ( y ∣ x ) = m i n ∑ k = 1 k L ( C k , f ( X ) ) P ( C k ∣ X ) min \sum_Y L(Y,f(X))P(y|x) = min \sum_{k=1}^kL(C_k,f(X))P(C_k|X) minYL(Y,f(X))P(yx)=mink=1kL(Ck,f(X))P(CkX)

对于一个确定输入的X=x,判断输出类y为哪一个时,损失期望最小。f(x)对应的类y需要满足的条件是使得期望风险最小化。

f ( x ) = a r g min ⁡ y ∈ Y ∑ k = 1 k L ( C k , f ( x ) ) P ( C k ∣ X = x ) f(x) = arg \min_{y \in Y} \sum_{k=1}^kL(C_k,f(x))P(C_k|X=x) f(x)=argminyYk=1kL(Ck,f(x))P(CkX=x)

C k C_k Ck为输出空间中的某一个类。如果 C k = y C_k = y Ck=y,则说明此时损失函数的值为0,因此在累加的过程中不用计算(0乘任何数结果为0),换句话说,只累加损失值为1的情况。

f ( x ) = a r g min ⁡ y ∈ Y ∑ k = 1 k P ( y ≠ C k ∣ X = x ) = a r g m i n y ∈ Y ∑ k = 1 k ( 1 − P ( y = C k ∣ X = x ) ) = a r g max ⁡ y ∈ Y P ( y = C k ∣ X = x ) f(x) = arg \min_{y \in Y} \sum_{k=1}^kP(y\neq{C_k}|X=x) = arg min_{y \in Y} \sum_{k=1}^k(1-P(y={C_k}|X=x)) = arg \max_{y\in Y}P(y=C_k|X=x) f(x)=argminyYk=1kP(y=CkX=x)=argminyYk=1k(1P(y=CkX=x))=argmaxyYP(y=CkX=x)

根据期望风险最小化 => 得到后验概率最大化

朴素贝叶斯法的参数估计

极大似然估计

在朴素贝叶斯中,学习意味着根据训练集估计先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)和条件概率 P ( X = x ∣ Y = c k ) P(X=x|Y=c_k) P(X=xY=ck)

根据条件独立假设公式,条件概率 P ( X = x ∣ Y = c k ) = ∏ j = 1 n P ( X j = x j ∣ Y = c k ) P(X=x|Y=c_k) = \prod_{j=1}^n P(X^{j}=x^{j}|Y=c_k) P(X=xY=ck)=j=1nP(Xj=xjY=ck)

先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck)的极大似然估计: 属于 c k c_k ck的实例占数据集总数N的比例

P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N} P(Y=ck)=Ni=1NI(yi=ck) k = 1 , 2 , . . , K k=1,2,..,K k=1,2,..,K

I是指示函数,括号里成立取值1,不成立取值0

条件概率 P ( X = x ∣ Y = c k ) P(X=x|Y=c_k) P(X=xY=ck)的极大似然估计:

假设第j个特征 x ( j ) x^{(j)} x(j)可能取值的集合为 { a j 1 , a j 2 , . . . , a j S j } \{a_{j1},a_{j2},...,a_{jS_{j}}\} {aj1,aj2,...,ajSj},第1个特征有 S 1 S_1 S1个选择,第n个特征有 S n S_n Sn个选择。

第j个特征取 a j l a_{jl} ajl的条件概率 P ( X j = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{j}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)} P(Xj=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck) j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j ; k = 1 , 2 , . . . , K j=1,2,...,n; l=1,2,...,S_j;k=1,2,...,K j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K

这里每一个特征的条件概率都需要计算,一共会计算 K ∗ S 1 ∗ . . . . ∗ S n K*S_1*....*S_n KS1....Sn次。

概率的核心 = n条件/n总,总个数指类别是 c k c_k ck的实例个数,符合条件的个数指类别是 c k c_k ck和第j个特征是 a j l a_{jl} ajl同时成立的实例个数。

朴素贝叶斯的学习与分类算法

通过学习训练数据集得到模型(得到先验概率与条件概率),计算后验概率分布 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x),将后验概率最大的类作为x实例的类输出。

输入:训练集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},实例 x = ( x ( 1 ) , x ( 2 ) , . . . , x ( n ) ) x=(x^{(1)},x^{(2)},...,x^{(n)}) x=(x(1),x(2),...,x(n))

输出:实例x所属类别y

第一步:通过学习训练数据集通过极大似然法得到模型

第二步:计算输入实例x的先验概率与条件概率,计算其属于每一个类别的后验概率,选出后验概率最大的类。

例题

由下标的训练数据学习一个朴素贝叶斯分类器,并确定 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T的类标记 y y y。表中 X ( 1 ) , X ( 2 ) X^{(1)},X^{(2)} X(1),X(2)为特征,取值的集合分别为 A 1 = { 1 , 2 , 3 } , A 2 = { S , M , l } A_1=\{1,2,3\},A_2=\{S,M,l\} A1={1,2,3},A2={S,M,l},Y为类标记, Y ∈ C = { 1 , − 1 } Y \in C=\{1,-1\} YC={1,1}

解:本题需要比较后验概率 P ( Y = 1 ∣ X = x ) P(Y=1|X=x) P(Y=1∣X=x) P ( Y = − 1 ∣ X = x ) P(Y=-1|X=x) P(Y=1∣X=x)的概率,这两个概率的分母相同,我们只需要比较分子 P ( Y = 1 ) P ( X ( 1 ) = 2 ∣ Y = 1 ) P ( X ( 2 ) = S ∣ Y = 1 ) P(Y=1)P(X^{(1)}=2|Y=1)P(X^{(2)}=S|Y=1) P(Y=1)P(X(1)=2∣Y=1)P(X(2)=SY=1) P ( Y = − 1 ) P ( X ( 1 ) = 2 ∣ Y = − 1 ) P ( X ( 2 ) = S ∣ Y = − 1 ) P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1) P(Y=1)P(X(1)=2∣Y=1)P(X(2)=SY=1)的概率

①先计算先验概率与条件概率

②计算后验概率的分子

P ( Y = 1 ) P ( X ( 1 ) = 2 ∣ Y = 1 ) P ( X ( 2 ) = S ∣ Y = 1 ) = 1 45 P(Y=1)P(X^{(1)}=2|Y=1)P(X^{(2)}=S|Y=1)=\frac{1}{45} P(Y=1)P(X(1)=2∣Y=1)P(X(2)=SY=1)=451

P ( Y = − 1 ) P ( X ( 1 ) = 2 ∣ Y = − 1 ) P ( X ( 2 ) = S ∣ Y = − 1 ) = 1 15 P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1)=\frac{1}{15} P(Y=1)P(X(1)=2∣Y=1)P(X(2)=SY=1)=151

③比较选更大的值

实例点x的类标记为 y = − 1 y=-1 y=1

贝叶斯估计

问题: 极大似然估计可能会出现索要估计的概率值为0(0乘任何值都等于0),这会影响后验概率的计算,使分类产生误差。

案例: 假设数据集中全是女性,那么数据集中女性的概率为1。并不是代表就没有男性,只是恰好数据集中没有。

解决方法:采用贝叶斯估计

分子加 λ \lambda λ的原因是避免值为0,分母加 K λ K\lambda Kλ c k c_k ck的取值有K种)的原因是保证先验概率和 ∑ k = 1 k P λ ( Y = c k ) = 1 \sum_{k=1}^kP_\lambda (Y=c_k)=1 k=1kPλ(Y=ck)=1(随机变量Y的概率分布)。

条件概率同上。

习题

按照拉普拉斯平滑估计( λ = 1 \lambda=1 λ=1),确定 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T的类标记 y y y。表中 X ( 1 ) , X ( 2 ) X^{(1)},X^{(2)} X(1),X(2)为特征,取值的集合分别为 A 1 = { 1 , 2 , 3 } , A 2 = { S , M , l } A_1=\{1,2,3\},A_2=\{S,M,l\} A1={1,2,3},A2={S,M,l},Y为类标记, Y ∈ C = { 1 , − 1 } Y \in C=\{1,-1\} YC={1,1}

①先计算先验概率与条件概率

②计算后验概率的分子

P ( Y = 1 ) P ( X ( 1 ) = 2 ∣ Y = 1 ) P ( X ( 2 ) = S ∣ Y = 1 ) = 5 153 P(Y=1)P(X^{(1)}=2|Y=1)P(X^{(2)}=S|Y=1)=\frac{5}{153} P(Y=1)P(X(1)=2∣Y=1)P(X(2)=SY=1)=1535

P ( Y = − 1 ) P ( X ( 1 ) = 2 ∣ Y = − 1 ) P ( X ( 2 ) = S ∣ Y = − 1 ) = 28 459 P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1)=\frac{28}{459} P(Y=1)P(X(1)=2∣Y=1)P(X(2)=SY=1)=45928

③比较选更大的值

实例点x的类标记为 y = − 1 y=-1 y=1

总结

  • 朴素贝叶斯法是典型的生成学习方法。

生成方法由训练数据学习联合概率分布 P ( X , Y ) = P ( Y ) P ( X ∣ Y ) P(X,Y)=P(Y)P(X|Y) P(X,Y)=P(Y)P(XY),具体来说,利用训练数据学习先验概率 P ( Y ) P(Y) P(Y)与条件概率 P ( X ∣ Y ) P(X|Y) P(XY),然后学习后验概率分布 P ( Y ∣ X ) P(Y|X) P(YX)

概率估计方法可以是极大似然估计或贝叶斯估计

  • 朴素贝叶斯利用贝叶斯定理与学习到的联合概率模型进行分类预测。

P ( Y ∣ X ) = P ( X , Y ) P ( X ) = P ( Y ) P ( X ∣ Y ) ∑ Y P ( Y ) P ( X ∣ Y ) P(Y|X)=\frac{P(X,Y)}{P(X)}=\frac{P(Y)P(X|Y)}{\sum_YP(Y)P(X|Y)} P(YX)=P(X)P(X,Y)=YP(Y)P(XY)P(Y)P(XY)

将输入的x分到后验概率最大的类y

y = a r g max ⁡ c k P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) y=arg \max_{c_k}P(Y=c_k)\prod_{j} P(X^{j}=x^{j}|Y=c_k) y=argmaxckP(Y=ck)jP(Xj=xjY=ck)

  • 后验概率最大等价于0-1损失函数时的期望风险最小化
  • 朴素贝叶斯法的基本假设时条件独立性

P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 , . . . , X n = x n ∣ Y = c k ) = p ( X 1 = x 1 ∣ Y = c k ) ∗ . . . ∗ p ( , X n ∣ Y = c k ) = ∏ j = 1 n P ( X j = x j ∣ Y = c k ) P(X=x|Y=c_k)=P(X^1=x^1,...,X^n=x^n|Y=c_k)=p(X^1=x^1|Y=c_k)*...*p(,X^n|Y=c_k)=\prod_{j=1}^n P(X^{j}=x^{j}|Y=c_k) P(X=xY=ck)=P(X1=x1,...,Xn=xnY=ck)=p(X1=x1Y=ck)...p(,XnY=ck)=j=1nP(Xj=xjY=ck)

这是一个较强的假设。由于这一假设,模型包含的条件概率的数量大为减少,朴素贝叶斯法的学习与预测大为简化。因此朴素贝叶斯法高效,且易于实现。缺点是分类的性能不一定高。

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

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

相关文章

《A++ 敏捷开发》- 20 从 AI 到最佳设计

“我们现在推行AIGC&#xff0c;服务端不需要UI交互设计的用AI自动产出代码&#xff0c;你建议的结对编程、TDD等是否还适用&#xff1f;” 这两年AI确实很火&#xff0c;是报纸、杂志的热门话题。例如&#xff0c;HBR杂志从2024年9月至2025年二月份3期&#xff0c;里面有接近一…

GO系列-IO 文件操作

os io 判断文件是否存在 func fileExist(filePath string) (bool, error) {_, err : os.Stat(filePath)if err nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, &CheckFileExistError{filePath} } 读取文件内容 func readFileContext(…

rs485协议、电路详解(保姆级)

起源 RS-485即Recommended Standard 485 协议的简写。1983年被电子工业协会(EIA)批准为一种通讯接口标准. 数据在通信双方之间传输&#xff0c;本质是传输物理的电平&#xff0c;比方说传输5V的电压 -1V的电压信号&#xff0c;这些物理信号在传输过程中会受到很多干扰&#x…

JavaWeb-Tomcat服务器

文章目录 Web服务器存在的意义关于Web服务器软件Tomcat服务器简介安装Tomcat服务器Tomcat服务器源文件解析配置Tomcat的环境变量启动Tomcat服务器一个最简单的webapp(不涉及Java) Web服务器存在的意义 我们之前介绍过Web服务器进行通信的原理, 但是我们当时忘记了一点, 服务器…

【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

视觉分析之边缘检测算法

9.1 Roberts算子 Roberts算子又称为交叉微分算法&#xff0c;是基于交叉差分的梯度算法&#xff0c;通过局部差分计算检测边缘线条。 常用来处理具有陡峭的低噪声图像&#xff0c;当图像边缘接近于正45度或负45度时&#xff0c;该算法处理效果更理想。 其缺点是对边缘的定位…

DuodooBMS源码解读之 sale_change模块

销售变更模块用户使用手册 一、模块概述 本扩展模块主要包含两个主要的 Python 文件&#xff1a;sale_change/report/sale_change_report.py 和 sale_change/wizard/sale_change_download.py&#xff0c;提供了销售变更报表查看和销售变更单下载的功能。以下是详细的使用说明…

OpenCV形态学操作

1.1. 形态学操作介绍 初识&#xff1a; 形态学操作是一种基于图像形状的处理方法&#xff0c;主要用于分析和处理图像中的几何结构。其核心是通过结构元素&#xff08;卷积核&#xff09;对图像进行扫描和操作&#xff0c;从而改变图像的形状和特征。例如&#xff1a; 腐蚀&…

力扣算法-1

力扣算法 1 两数之和 给定一个整数数组nums和一个整数目标值target&#xff0c;请你在数组中找出和为目标值target的那两个整数&#xff0c;返回他们的数组下标。 &#xff08;1&#xff09;暴力枚举 &#xff08;枚举数组每一个数x&#xff0c;再寻找数组中是否存在 targe…

pyside6学习专栏(三):自定义QLabel标签扩展类QLabelEx

标签是界面设计中最常用的控件&#xff0c;本文演示了如何基于PySide6的QLabex控件类扩展定义QLabelEX类&#xff0c;以实现更少的编码完成各种图像、彩色文本、动画的加载和显示&#xff0c;丰富界面显示 本示例演示了QLabel和其扩展类QLabelEx分别显示文本、图像、动画的使用…

从0到1:固件分析

固件分析 0x01 固件提取 1、从厂商官网下载 例如D-link的固件&#xff1a; https://support.dlink.com/resource/products/ 2、代理或镜像设备更新时的流量 发起中间人攻击MITM #启用IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables&#xff0c;将目…

使用 Spring Boot 和 Canal 实现 MySQL 数据库同步

文章目录 前言一、背景二、Canal 简介三、主库数据库配置1.主库配置2.创建 Canal 用户并授予权限 四.配置 Canal Server1.Canal Server 配置文件2.启动 Canal Server 五.开发 Spring Boot 客户端1. 引入依赖2. 配置 Canal 客户端3. 实现数据同步逻辑 六.启动并测试七.注意事项八…

Linux系统配置阿里云yum源,安装docker

配置阿里云yum源 需要保证能够访问阿里云网站 可以先ping一下看看&#xff08;阿里云可能禁ping&#xff0c;只要能够解析为正常的ip地址即可&#xff09; ping mirrors.aliyun.com脚本 #!/bin/bash mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos…

后端开发:开启技术世界的新大门

在互联网的广阔天地中&#xff0c;后端开发宛如一座大厦的基石&#xff0c;虽不直接与用户 “面对面” 交流&#xff0c;却默默地支撑着整个互联网产品的稳定运行。它是服务器端编程的核心领域&#xff0c;负责处理数据、执行业务逻辑以及与数据库和其他后端服务进行交互。在当…

银河麒麟系统安装mysql5.7【亲测可行】

一、安装环境 cpu&#xff1a;I5-10代&#xff1b; 主板&#xff1a;华硕&#xff1b; OS&#xff1a;银河麒麟V10&#xff08;SP1&#xff09;未激活 架构&#xff1a;Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本&#xff1a;mysql-5.7.34-linux-glibc2.12-x86_64.ta…

从零开始学习PX4源码9(部署px4源码到gitee)

目录 文章目录 目录摘要1.gitee上创建仓库1.1 gitee上创建仓库PX4代码仓库1.2 gitee上创建子仓库2.固件在gitee部署过程2.1下载固件到本地2.2切换本地分支2.3修改.gitmodules内容2.4同步子模块仓库地址2.5同步子模块仓库地址更新(下载)子模块3.一级子模块和二级子模块的映射关…

【回溯算法2】

力扣17.电话号码的字母组合 链接: link 思路 这道题容易想到用嵌套的for循环实现&#xff0c;但是如果输入的数字变多&#xff0c;嵌套的for循环也会变长&#xff0c;所以暴力破解的方法不合适。 可以定义一个map将数字和字母对应&#xff0c;这样就可以获得数字字母的映射了…

科普:“Docker Desktop”和“Docker”以及“WSL”

“Docker Desktop”和“Docker”这两个概念既有紧密联系&#xff0c;又存在一定区别&#xff1a; 一、联系 核心功能同源&#xff1a;Docker Desktop 本质上是基于 Docker 核心技术构建的。Docker 是一个用于开发、部署和运行应用程序的开源平台&#xff0c;它利用容器化技术…

Flutter 网络请求与数据处理:从基础到单例封装

Flutter 网络请求与数据处理&#xff1a;从基础到单例封装 在 Flutter 开发中&#xff0c;网络请求是一个非常常见的需求&#xff0c;比如获取 API 数据、上传文件、处理分页加载等。为了高效地处理网络请求和数据管理&#xff0c;我们需要选择合适的工具并进行合理的封装。 …

虚拟表格实现全解析

在数据展示越来越复杂的今天&#xff0c;大量数据的渲染就像是“满汉全席”——如果把所有菜肴一次性摆上桌&#xff0c;既浪费资源也让人眼花缭乱。幸运的是&#xff0c;我们有两种选择&#xff1a; 自己动手&#xff1a;通过二次封装 Element Plus 的表格组件&#xff0c;实…