二元分类模型评估方法

文章目录

  • 前言
  • 一、混淆矩阵
  • 二、准确率
  • 三、精确率&召回率
  • 四、F1分数
  • 五、ROC 曲线
  • 六、AUC(曲线下面积)
  • 七、P-R曲线
    • 类别不平衡问题中如何选择PR与ROC
  • 八、 Python 实现代码
    • 混淆矩阵、命中率、覆盖率、F1值
    • ROC曲线、AUC面积


指标
公式
意义
真正例 (TP)被模型预测为正的正样本;即预测为正样本,且预测结果为真
假正例 (FP)被模型预测为正的负样本;即预测为正样本,且预测结果为假
真负例 (TN)被模型预测为负的正样本;即预测为负样本,且预测结果为假
假负例 (FN)被模型预测为负的负样本;即预测为负样本,且预测结果为真
准确率(Accuracy) A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy=\frac{TP+TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN模型正确分类的样本占总样本数的比例
精确率(Precision) P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP模型预测为正类别的样本中有多少是真正的正类别
召回率(Recall) /真正率(TPR) R e c a l l / T P R = T P T P + F N Recall/TPR=\frac{TP}{TP+FN} Recall/TPR=TP+FNTP召回率,也称为 True Positive Rate (TPR) 或灵敏度,是指在所有实际为正类别的样本中,模型能够正确预测为正类别的比例
特异度 (TNR) T N P = T N T N + F P TNP=\frac{TN}{TN+FP} TNP=TN+FPTN特异度(True Negative Rate),是指在所有实际为负类别的样本中,模型能够正确预测为负类别的比例
高特异度意味着模型能够有效地将实际为负类别的样本正确分类。
假正率(FPR) F P F P + T N \frac{FP}{FP+TN} FP+TNFPFalse Positive Rate (FPR) 是指在所有实际为负类别的样本中,模型错误预测为正类别的比例
FPR 与特异度有关,是衡量模型在负类别样本中的误判程度。
假负率(FNR) F N F N + T P \frac{FN}{FN+TP} FN+TPFNFalse Negative Rate (FNR) 是指在所有实际为正类别的样本中,模型错误预测为负类别的比例
FNR 表示模型在正类别样本中的遗漏程度,即未能正确识别的正类别样本比例
F1 分数(F1-score) F 1 = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l F1=\frac{2 \cdot Precision \cdot Recall }{Precision + Recall } F1=Precision+Recall2PrecisionRecallF1 分数是精确率和召回率的调和平均数,它综合了两者的性能

前言

  根据分类模型和回归模型的不同,相应的评价标准也不尽相同,例如在分类模型中,就有以下 8 种不同的评价标准。


一、混淆矩阵

  混淆矩阵是评价分类模型性能的基础,它展示了模型的预测结果核真实标签之间的对应关系。混淆矩阵由4个指标构成,分别是:
记忆小窍门:第一个字母 T / F 代表,是否分类正确。第二个字母 P / N 代表预测结果

  • 真正例 (True Positive,TP)
  • 假正例 (False Positive,FP)
  • 真负例 (True Negative,TN)
  • 假负例 (False Negative,FN)

通过计算这4个指标可以得到模型的准确率、精确率、召回率和F1得分。


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

  • 真正例 (True Positive,TP):被模型预测为正的正样本;即预测为正样本,且预测结果为真,所以样本实际是正样本
  • 假正例 (False Positive,FP):被模型预测为正的负样本;即预测为正样本,且预测结果为假,所以样本实际是负样本
  • 真负例 (True Negative,TN):被模型预测为负的正样本;即预测为负样本,且预测结果为假,所以样本实际是正样本
  • 假负例 (False Negative,FN):被模型预测为负的负样本;即预测为负样本,且预测结果为真,所以样本实际是负样本

混淆矩阵的指标:预测性分类模型,肯定是希望越准越好。那么,对应到混淆矩阵中,那肯定是希望TP与TN的数量大,而FP与FN的数量小。混淆矩阵里面统计的是个数,有时候面对大量的数据,光凭算个数,很难衡量模型的优劣

  混混淆矩阵是评估分类模型性能的基础,目的是帮助理解分类模型在不同类别上的表现。通过将模型的分类结果分成真正类别(True)和错误类别(False),帮助计算多种重要的性能指标,以量化模型在不同类别上的表现,例如准确率、精确率、召回率和F1分数。这些指标帮助我们量化模型的分类准确性、可靠性和全面性。


二、准确率

  准确率(ACC)是衡量分类模型性能最直观的指标之一,它表示模型正确分类的样本数与总样本数之间比。准确率越高,表示模型的分类结果月准确。然而,准确率不能完全反映模型的性能,因为在样本不均衡的情况下,准确率可能会出现较高的偏差。此时,需要借助其他指标来综合评价模型。
A C C = T P + T N T P + F P + T N + F N ACC=\frac{TP+TN}{TP+FP+TN+FN} ACC=TP+FP+TN+FNTP+TN


三、精确率&召回率

  • 精确率
      精确率 (Precision) 是指模型预测为正例的样本中真正为正例的比例。精确率越高,表示模型将负例预测为正例的能力越强,即假正例的数量越少。精确率可以帮助我们评估模型的分类准确性,特别是在关注假正例数量的应用场景中
    P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
  • 召回率
      召回率 (Recall) 是指真正为正例的样本中被预测为正例的比例。召回率越高,表示模型将真正为正例的样本正确检测出来的能力越强,即假负例的数量越少。召回率可以帮助我们评估模型的分类完整性,特别是在关注假正例数量的应用场景中。
    R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
  • 可以发现,当假正(即预测为正样本且预测结果为假:FP)的样本数越少,准确率就越高。相应的对应 FN 就越大,召回率就越小。
    如果我们只预测最可能为正的那一个样本为正,其余的都为负,那么这时候我们的查准率很可能为 100%
  • 同样的道理:预测为正的样本越多,即 FP 越大,相应的对应 FN 就越小,召回率就越大,准确率也就越小
    如果我们把所有的样本都预测为正,其余的都为负,那么此时的召回率必然为 100%


    上面这句话也就说明了:我们分别用准确率或召回率对模型的预测结果进行评价会有片面性。所以,基于上面的片面性,引出了一个新的标准:F1度量(F-Score)

  精确率和召回率两个概念,但在实际建模过程中,这两个指标往往是此消彼长的,召回率越高,准确率越低,反之亦然。所以想要找到二者之间的一个平衡点,就需要一个新的指标:F1分数。F1分数同时考虑了查准率和查全率,让二者同时达到最高,取一个平衡。


四、F1分数

  F1分数是精确率和召回率的调和平均值,它综合考虑了分类模型的准确性和完整性。
F 1 = 2 T P 2 T P + F N + F P = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l F1=\frac{2TP}{2TP+FN+FP}=\frac{2 \cdot Precision \cdot Recall }{Precision + Recall } F1=2TP+FN+FP2TP=Precision+Recall2PrecisionRecall

  F1 分数的取值范围是 [0, 1],越接近 1 表示模型的性能越好,同时考虑到了模型在查准率和查全率之间的平衡。F1 分数对于二元分类问题非常有用,特别是当我们希望在精确率和召回率之间取得平衡时。在样本不均衡的情况下,F1分数比准确率更能反映模型的性能。


五、ROC 曲线

  接受者操作特性曲线(receiver operating characteristic curve,简称ROC曲线)。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC曲线是基于混淆矩阵得出的。它反映了模型在不同阈值下的分类性能

  逻辑回归里面,对于正负例的界定,通常会设一个阈值,大于阈值的为正类,小于阈值为负类。
   如果我们减小这个阀值,更多的样本会被识别为正类,提高正类的识别率,但同时也会使得更多的负类被错误识别为正类。

   举个例子:逻辑回归对正负结果的判定默认是 0.5,模型预测的结果如果超过 0.5 则确定样本预测结果为正,否则样本预测为负,但是当我们将0.5 提高到 0.8,则 0.8 以下的就都预测为负了。
  为了直观表示这一现象,引入 ROC 曲线:根据分类结果计算得到空间中相应的点,连接这些点就形成 ROC curve


  ROC曲线中的主要两个指标就是真正率和假正率,其中横坐标为假正率(FPR),纵坐标为真正率(TPR),当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5。


ROC曲线绘制: ROC曲线的横坐标为FPR,纵坐标为TPR

    1. 将预测结果按照预测为正类概率值排序
    1. 将阈值由1开始逐渐降低,按此顺序逐个把样本作为正例进行预测,每次可以计算出当前的FPR,TPR值
    1. 以TPR为纵坐标,FPR为横坐标绘制图像

在这里插入图片描述
ROC 曲线中有四个点需要注意,分别是:

  • 点(0,1):即 FPR=0, TPR=1,意味着 FN=0 且 FP=0,将所有的样本都正确分类。
  • 点(1,0):即 FPR=1,TPR=0,最差分类器,避开了所有正确答案。
  • 点(0,0):即FPR=TPR=0,FP=TP=0,分类器把每个实例都预测为负类。
  • 点(1,1):分类器把每个实例都预测为正类。

  ROC 曲线越接近左上角,该分类器的性能越好,其泛化性能就越好。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。而且一般来说,如果ROC是光滑的,那么基本可以判断没有太大的过拟合。


总结:

🎈ROC曲线:ROC曲线(receiver operating characteristic curve),

  • 是反映灵敏性和特效性连续变量的综合指标;
  • 是用构图法揭示敏感性和特异性的相互关系;
  • 它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性;
  • ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真正例率(True Positive Rate,TPR 也就是灵敏度)为纵坐标,假正例率(False Positive Rate,FPR,1-特效性)为横坐标绘制的曲线。

ROC曲线优缺点:

优点 :

  • 1、兼顾正例和负例的权衡。因为TPR聚焦于正例,FPR聚焦于与负例,使其成为一个比较均衡的评估方法。适用于评估分类器的整体性能。
  • 2、ROC曲线的两个指标, TPR的分母是所有正例,FPR的分母是所有负例,故都不依赖于具体的类别分布。

缺点:

  • 在类别不平衡的背景下,当负例N的数量远超正例P时,FP的大幅增长只能换来FPR的增长不明显,导致ROC曲线呈现一个过分乐观的效果估计。如果主要关心正例的预测准确性的话,这就不太可接受了。

六、AUC(曲线下面积)

  如果两条ROC曲线没有相交,我们可以根据哪条曲线最靠近左上角哪条曲线代表的学习器性能就最好。但是,实际任务中,情况很复杂,如果两条ROC曲线发生了交叉,则很难一般性地断言谁优谁劣。在很多实际应用中,我们往往希望把学习器性能分出个高低来。在此引入AUC面积。

  AUC(Area Under Curve): 被定义为 ROC 曲线下的面积( ROC 的积分),通常大于0.5小于1

  随机挑选一个正样本以及一个负样本,分类器判定正样本的值高于负样本的概率就是 AUC 值。AUC值(面积)越大的分类器,性能越好,如图:

在这里插入图片描述
  上图中 AUC=1 当然是最好的, 这代表着将所有的样本都正确分类,但是实际 AUC 是达不到 1 的,这种极端情况下只能说明样本数据是存在问题,需要再次筛选模型入模特征。

AUC只能用来评价二分类。AUC非常适合评价样本不平衡中的分类器性能

AUC的一般判断标准: AUC的范围在[0, 1]之间,并且越接近1越好

  • 0.5-0.7 : 效果较低,但用于预测股票已经很不错了
  • 0.7-0.85 : 效果一般
  • 0.85-0.95 : 效果很好
  • 0.95-1 : 效果非常好,但一般不太可能

AUC的概率意义: 随机取一对正负样本,正样本得分大于负样本得分的概率
AUC的物理意义: 曲线下面积对所有可能的分类阈值的效果进行综合衡量。曲线下面积的一种解读方式是:看作模型将某个随机正类别样本排列在某个随机负类别样本之上的概率。以下面的样本为例,逻辑回归预测从左到右以升序排列:

在这里插入图片描述

AUC的优点和缺点

优点:

  • AUC衡量的是一种排序能力,因此特别适合排序类业务;
  • AUC对正负样本均衡并不敏感,在样本不均衡的情况下,也可以做出合理的评估。
  • 其他指标比如precision,recall,F1,根据区分正负样本阈值的变化会有不同的结果,而AUC不需要手动设定阈值,是一种整体上的衡量方法。

缺点:

  • 忽略了预测的概率值和模型的拟合程度;
  • AUC反映了太过笼统的信息,无法反映召回率、精确率等在实际业务中经常关心的指标;
  • 它没有给出模型误差的空间分布信息,AUC只关注正负样本之间的排序,并不关心正样本内部,或者负样本内部的排序,这样我们也无法衡量样本对于好坏客户的好坏程度的刻画能力;

AUC计算

  AUC如果按照原始定义ROC曲线下的面积来计算,非常之麻烦。

  可以转换一下思路,按照上述给出的常用的AUC定义,即随机选出一对正负样本,分类器对于正样本打分大于负样本打分的概率。咱们就来算算这个概率到底是多少,那么也就算出AUC是多少了。

  假设数据集一共有M个正样本,N个负样本,预测值也就是M+N个。我们将所有样本按照预测值进行从小到大排序,并排序编号由1到M+N。

  • 对于正样本概率最大的,假设排序编号为 r a n k 1 rank_1 rank1 ,比它概率小的负样本个数= r a n k 1 − M rank_1-M rank1M (仔细体会一下);
  • 对于正样本概率第二大的 r a n k 2 rank_2 rank2 ,假设排序编号为
    ,比它概率小的负样本个数= r a n k 2 − ( M − 1 ) rank_2-(M-1) rank2(M1) ;
  • 以此类推…
  • 对于正样本概率最小的,假设排序编号为 r a n k M rank_M rankM ,比它概率小的负样本个数= r a n k M − 1 rank_M-1 rankM1

那么在所有情况下,正样本打分大于负样本的个数= r a n k 1 + r a n k 2 + ⋯ + r a n k M − ( 1 + 2 + ⋯ + M ) rank_1+rank_2+\cdots+rank_M-(1+2+\cdots+M) rank1+rank2++rankM(1+2++M)

所以,AUC的正式计算公式也就有了,如下!(需要牢记
A U C = ∑ i ∈ 正样本 r a n k ( i ) − M × ( 1 + M ) 2 M × N AUC=\frac{\sum_{i \in 正样本}rank(i)-\frac{M \times(1+M)}{2}}{M \times N} AUC=M×Ni正样本rank(i)2M×(1+M)
r a n k ( i ) rank(i) rank(i)表示正样本 i i i 的排序编号, M × N M \times N M×N表示随机从正负样本各取一个的所有情况数。一般考代码题,比如用python写个AUC计算,也是用上述公式原理。


  但是,还没有完,有一个小问题,可能大家没注意到。那就是如果有预测值是一样的,那么怎么进行排序编号呢?

  其实很简单,对于预测值一样的样本,我们将这些样本原先的排号平均一下,作为新的排序编号就完事了。仔细理解可看下图:
在这里插入图片描述
上图中,正样本个数M=5(黄底样本),负样本个数N=3(白底样本),预测值相同有4个(ID为CDEF)。我们将预测值pred相等的情况(上图红色字体),对其进行新的排序编号,变成(3+4+5+6)/4 = 4.5。

那么根据公式就可以算出上图的 A U C = ( 2 + 4.5 + 5.5 + 7 + 8 ) − 5 × ( 5 + 1 ) 2 5 × 3 = 0.7333 AUC = \frac{(2+4.5+5.5+7+8)-\frac{5 \times (5+1)}{2}}{5 \times 3}=0.7333 AUC=5×3(2+4.5+5.5+7+8)25×(5+1)=0.7333

用sklearn的auc计算验证一下,一样。
在这里插入图片描述


七、P-R曲线

  精确率和召回率是互相影响的,有时会相互矛盾,理想情况下肯定是做到两者都高,但是一般情况下精确率高、召回率就低,召回率低、精确率高,当然如果两者都低,那就是有地方出问题了。

  对于分类器来说,本质上是给一个概率,此时,我们再选择一个 CutOff 阈值点,高于这个点的判正,低于的判负,其中,这个点的选择需要结合你的具体场景去选择。

用不同的阀值,统计出一组不同阀值下的精确率和召回率,如下图:
PR曲线绘制
PR曲线的横坐标为召回率R,纵坐标为查准率P,绘制步骤如下:

    1. 将预测结果按照预测为正类概率值排序;
    1. 将概率阈值由1开始逐渐降低,按此顺序逐个把样本作为正例进行预测,每次可以计算出当前的P,R值;
    1. 以P为纵坐标,R为横坐标绘制点,将所有点连成曲线后构成PR曲线。

在这里插入图片描述
如何利用PR曲线对比算法的优劣:

    1. 如果一条曲线完全“包住”另一条曲线,则前者性能优于另一条曲线(P和R越高,代表算法分类能力越强)。
    1. PR曲线发生了交叉时:以PR曲线下的面积作为衡量指标,但这个指标通常难以计算
    1. 使用 “平衡点”(Break-Even Point),他是查准率=查全率时的取值,值越大代表效果越优
    1. BEP过于简化,更常用的是F1度量

  曲线越靠近右上边性能越好,描述曲线下方面积叫 AP 分数(Average Precision Score),AP 分数越高,表示模型性能越好。

但是有时候模型没有单纯的谁比谁好,和文章开头的例子一样,需要结合具体的使用场景。下面是两个场景:

  • 地震的预测:我们希望的是 Recall 非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲 Precision。情愿发出 1000次 警报,把 10次 地震都预测正确了,也不要预测 100次 对了 8次 漏了 2次。
  • 嫌疑人定罪:基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。即时有时候放过了一些罪犯(Recall 低),但也是值得的。

  所以,针对场景,如果是做搜索,那就是保证召回的情况下提升精确率;如果做 疾病监测、反垃圾,则是保证精确率的条件下,提升召回;在两者都要求高的情况下,可以用 F1 来衡量

  反过来,场景会决定训练模型时的标准,比如第一个场景中,我们就只看Recall=99.9999%(地震全中)时的 Precision,其他指标就变得没有了意义。

  注意一下,PR 和 ROC 是两个不同的评价指标和计算方式,一般情况下,检索用 PR分类、识别等用 ROC


类别不平衡问题中如何选择PR与ROC

  这里特指负样本数量远大于正样本时,在这类问题中,我们往往更关注正样本是否被正确分类,即TP的值。PR曲线更适合度量类别不平衡问题

    1. 因为在PR曲线中TPR和FPR的计算都会关注TP,PR曲线对正样本更敏感
    1. ROC曲线正样本和负样本一视同仁,在类别不平衡时ROC曲线往往会给出一个乐观的结果。

八、 Python 实现代码

混淆矩阵、命中率、覆盖率、F1值

#随机森林模型
model= RandomForestClassifier(random_state=12,n_estimators = 300,class_weight={0:1,1:8},min_samples_split=8, min_samples_leaf=5,max_depth=6)
model.fit(x_train, y_train)'''输出混淆矩阵'''
#混淆矩阵中会给出命中率、覆盖率、F1值
import sklearn.metrics as metrics
pre_test = model.predict(x_test) #predict 默认阈值0.5, predict_proba 是没有默认阈值
print(metrics.confusion_matrix(y_test, pre_test, labels=[0, 1]))  # 混淆矩阵集的f1值
print(metrics.classification_report(y_test, pre_test))

在这里插入图片描述

ROC曲线、AUC面积

from sklearn import metrics
import matplotlib.pyplot as pltfpr, tpr, _ = metrics.roc_curve(labels, preds)
roc_auc = metrics.auc(fpr, tpr)plt.figure(figsize=(8, 7), dpi=80, facecolor='w')    # dpi:每英寸长度的像素点数;facecolor 背景颜色
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)  # 绘制AUC面积
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.05])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic')
plt.legend(loc="lower right") # 设置显示标签的位置
plt.grid(b=True, ls=':')  # 绘制网格作为底板;b是否显示网格线;ls表示line style
plt.show()from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt'''将多个模型的ROC曲线绘制在一张图'''
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt##计算ROC值
fpr1, tpr1, thresholds1 = roc_curve(y_test, y_prob1)
roc_auc1 = roc_auc_score(y_test, y_prob1)fpr2, tpr2, thresholds2 = roc_curve(y_test, y_prob2)
roc_auc2 = roc_auc_score(y_test, y_prob2)# 绘制ROC曲线
plt.plot(fpr1, tpr1, color='darkorange', label='LR ROC curve (area = %0.2f)' % roc_auc1)
plt.plot(fpr2, tpr2, color='blue', label='SVM ROC curve (area = %0.2f)' % roc_auc2)plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic (ROC) curve')
plt.legend(loc="lower right")
plt.show()

参考:
分类模型评估方法
分类问题的 8 种评估方法(全)
精确率、召回率、F1值、ROC、AUC各自的优缺点

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

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

相关文章

DNS1(Bind软件)

名词解释 1、DNS(Domain Name System) DNS即域名系统,它是一个分层的分布式数据库,存储着IP地址与主机名的映射 2、域和域名 域为一个标签,而有多个标签域构成的称为域名。例如hostname.example.com,其…

gRPC 的原理 介绍带你从头了解gRPC

gRPC 的原理 什么是gRPC gRPC的官方介绍是:gRPC是一个现代的、高性能、开源的和语言无关的通用 RPC 框架,基于 HTTP2 协议设计,序列化使用PB(Protocol Buffer),PB 是一种语言无关的高性能序列化框架,基于 HTTP2PB 保…

Sentinel 流控规则

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 SpringbootDubboNacos 集成 Sentinel&…

实用技巧:在C和cURL中设置代理服务器爬取www.ifeng.com视频

概述: 网络爬虫技术作为一种自动获取互联网数据的方法,在搜索引擎、数据分析、网站监测等领域发挥着重要作用。然而,面对反爬虫机制、网络阻塞、IP封禁等挑战,设置代理服务器成为解决方案之一。代理服务器能够隐藏爬虫的真实IP地…

Word中NoteExpress不显示的问题

首先确认我们以及安装了word插件 我们打开word却没有。此时我们打开:文件->选项->加载项 我们发现被禁用了 选择【禁用项目】(如果没有,试一试【缓慢且禁用的加载项】),点击转到 选择启用 如果没有禁用且没有出…

C++加持让python程序插上翅膀——利用pybind11进行c++和python联合编程示例

目录 0、前言1、安装 pybind11库c侧python侧 2、C引入bybind11vs增加相关依赖及设置cpp中添加头文件及导出模块cpp中添加numpy相关数据结构的接收和返回编译生成dll后改成导出模块同名文件的.pyd 3、python调用c4、C引入bybind11 0、前言 在当今的计算机视觉和机器学习领域&am…

CSDN每日一题学习训练——Python版(简化路径,不同的二叉搜索树)

版本说明 当前版本号[20231116]。 版本修改说明20231116初版 目录 文章目录 版本说明目录简化路径题目解题思路代码思路参考代码 不同的二叉搜索树题目解题思路代码思路参考代码 简化路径 题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路…

Mysql数据库 16.SQL语言 数据库事务

一、数据库事务 数据库事务介绍——要么全部成功要么全部失败 我们把完成特定的业务的多个数据库DML操作步骤称之为一个事务 事务——就是完成同一个业务的多个DML操作 例: 数据库事务四大特性 原子性(A):一个事务中的多个D…

(三)什么是Vite——Vite 主体流程(运行npm run dev后发生了什么?)

vite分享ppt,感兴趣的可以下载: ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录: (一)什么是Vite——vite介绍与使用-CSDN博客 (二)什么是Vite——Vite 和 Webpack 区别&#xff0…

vscode 配置 lua

https://luabinaries.sourceforge.net/ 官网链接 主要分为4个步骤 下载压缩包,然后解压配置系统环境变量配置vscode的插件测试 这里你可以选择用户变量或者系统环境变量都行。 不推荐空格的原因是 再配置插件的时候含空格的路径 会出错,原因是空格会断…

linux 网络 cat /proc/net/dev 查看测试网络丢包情况

可以通过 cat /proc/net/dev 查看测试网络丢包情况,drop关键字,查看所有网卡的丢包情况 还可以看其他数据, /proc/net/下面有如下文件

性能测试 —— Jmeter接口处理不低于200次/秒-场景

需求:期望某个接口系统的处理能力不低于200次/秒,如何设计? ①这个场景是看服务器对某个接口的TPS值是否能大于等于200,就可以了; ②系统处理能力:说的就是我们性能测试中的TPS; ③只要设计一…

Visual Studio Code---介绍

0 Preface/Foreword 1、安装VScode 官网:Download Visual Studio Code - Mac, Linux, Windows 文档:Documentation for Visual Studio Code 1.1 优点 Intelligent code completion: code smarter with intellisense - completions for variables, me…

哈希

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻unordered系列关联式容器un…

锐捷练习-ospf虚链路及rip路由相互引入

一、相关知识补充 1、ospf基本概述 OSPF(Open Shortest Path First)是一种链路状态路由协议,用于在计算机网络中进行路由选择。它是内部网关协议(IGP)之一,常用于大规模企业网络或互联网服务提供商的网络…

Pytorch torch.dot、torch.mv、torch.mm、torch.norm的用法详解

torch.dot的用法: 使用numpy求点积,对于二维的且一个二维的维数为1 torch.mv的用法: torch.mm的用法 torch.norm 名词解释:L2范数也就是向量的模,L1范数就是各个元素的绝对值之和例如:

flutter仿支付宝余额宝年化收益折线图

绘制: 1.在pubspec.yaml中引入:fl_chart: 0.55.2 2.绘制: import package:jade/utils/JadeColors.dart; import package:util/easy_loading_util.dart; import package:fl_chart/fl_chart.dart; import package:flutter/material.dart; impo…

微服务实战系列之Sentinel

前言 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。 近年来,微服务已赫然崛起于IT界,越来越多的程序员不得不向之靠拢。也正因为各行各业都愿为…

【入门篇】1.4 redis 客户端 之 Lettuce 详解

文章目录 1. 简介1. 什么是Lettuce2. Lettuce与其他Redis客户端的比较3. Lettuce的特性和优势 2. 安装和配置3. 连接池配置1. 什么是连接池2. Lettuce的连接池使用与配置3. 连接池配置项 4. 基本操作1. 如何创建Lettuce连接2. Lettuce的基本操作如增删改查3. Lettuce的事务操作…

【Python基础篇】运算符

博主:👍不许代码码上红 欢迎:🐋点赞、收藏、关注、评论。 格言: 大鹏一日同风起,扶摇直上九万里。 文章目录 一 Python中的运算符二 算术运算符1 Python所有算术运算符的说明2 Python算术运算符的所有操作…