【拜小白的机器学习】5-机器学习的评估度量标准(评估)

2023-11-08

在上一节中我们主要讲到机器学习的评估方法,其中重点是讲解了三种对数据集的划分方式,包括留出法(hold-out)、交叉验证法(k-fold cross validation)、自助法(bootstrap)

本节来看看机器学习的评估度量标准,其中我们将从回归(Regression)与分类(Classification)两个大类来讨论其中的评估度量标准。


==================分割线=====================

1.性能度量(Performance Measure)

性能度量即评估指标(Evaluation Metrics)可以说明模型的性能,辨别模型的结果

我们建立一个模型后,计算指标,从指标获取反馈,再继续改进模型,直到达到理想的准确度。在预测之前检查模型的准确度至关重要,而不应该建立一个模型后,就直接将模型应用到看不见的数据上。

性能度量特点

  • 性能度量是衡量模型泛化能力的数值评价标准,反映了当前问题(任务需求);
  • 使用不同的性能度量可能会导致不同的评判结果;
  • 关于模型“好坏”的判断,不仅取决于算法和数据,还取决于当前任务需求;


========================分割线==================

2.回归(Regression)问题的评估指标

以下为一元变量和二元变量的线性回归示意图:


怎样来衡量回归模型的好坏呢?

我们第一眼自然而然会想到采用残差(实际值与预测值差值)的均值来衡量,即:


问题 1:用残差的均值合理吗?

当实际值分布在拟合曲线两侧时,对于不同样本而言有正有负,相互抵消,因此我们想到采用预测值和真实值之间的距离来衡量。


==================分割线======================

2.1 平均绝对误差 MAE(Mean Absolute Error)

平均绝对误差MAEMean Absolute Error )又被称为范数损失

问题 2MAE有哪些不足?
MAE虽能较好衡量回归模型的好坏,但是绝对值的存在导致函数不光滑,在某些点上不能求导,可以考虑将绝对值
改为残差的平方,这就是均方误差 。


===================分割线======================

2.2 均方误差 MSE(Mean Square Error)

均方误差MSEMean Squared Error)又被称为范数损失


问题 3: 还有没有比MSE更合理一些的指标?

由于MSE与我们的目标变量的量纲不一致,为了保证量纲一致性,我们需要对MSE进行开方。

问题 4什么是量纲不一致呢?

这就好比如说,测量体重,它的单位是KG,但是呢,由MSE计算后的单位却发生了变化,变成了,这就发生了量纲不一致。


===================分割线======================

2.3 均方根误差 RMSE (Root Mean Square Error)

问题 5RMSE有没有不足的地方?有没有规范化(无量纲化的指标)?

上面的几种衡量标准的取值大小与具体的应用场景有关系,很难定义统一的规则来衡量模型的好坏。比如说利用机器学习算法预测上海的房价RMSE2000元,我们是可以接受的,但是当四五线城市的房价RMSE2000元,我们还可以接受吗?下面介绍的决定系数就是一个无量纲化的指标。


===================分割线======================

2.4 决定系数

变量之所以有价值,就是因为变量是变化的。什么意思呢?比如说一组因变量为[0, 0, 0, 0, 0],显然该因变量的结果是一个常数0,我们也没有必要建模对该因变量进行预测。假如一组的因变量为[1, 3, 7, 10, 12],该因变量是变化的,也就是有变异,因此需要通过建立回归模型进行预测。这里的变异可以理解为一组数据的方差不为0。决定系数又称为反应因变量的全部变异能通过回归关系被自变量解释的比例。


如果结果是0,就说明模型预测不能预测因变量。 如果结果是1。就说明是函数关系。 如果结果是0-1之间的数,就是我们模型的好坏程度。

化简上面的公式 ,分子就变成了我们的均方误差MSE,下面分母就变成了方差:

问题 6: 以上评估指标有没有缺陷,如果有,该怎样改进?

以上的评估指标是基于误差的均值对进行评估的,均值对异常点(outliers)较敏感,如果样本中有一些异常值出现,会对以上指标的值有较大影响,即均值是非鲁棒的。


===================分割线======================

2.5 解决评估指标鲁棒性问题

我们通常用一下两种方法解决评估指标的鲁棒性问题:
  • 剔除异常值
设定一个相对误差,当该值超过一定的阈值时,则认为其是一个异常点,剔除这个异常点,将异常点剔除之后。再计算平均误差来对模型进行评价。
  • 使用误差的分位数来代替

如利用中位数来代替平均数。例如 MAPE:


MAPE是一个相对误差的中位数,当然也可以使用别的分位数。


=======================分割线========================

3.分类(Regression)算法评估指标

3.1 精度 (Acc)

预测正确的样本的占总样本的比例,取值范围为[0,1],取值越大,模型预测能力越好。


注:精度是我们最常见的评价指标,而且很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好。精度评价指标对平等对待每个类别,即每一个样本判对 (0) 和判错 (1) 的代价都是一样的。

问题 7 : 精度有什么缺陷?什么时候精度指标会失效?
  • 对于有倾向性的问题,往往不能用精度指标来衡量。比如,判断空中的飞行物是导弹还是其他飞行物,很显然为了减少损失,我们更倾向于相信是导弹而采用相应的防护措施。此时判断为导弹实际上是其他飞行物与判断为其他飞行物实际上是导弹这两种情况的重要性是不一样的;
  • 对于样本类别数量严重不均衡的情况,也不能用精度指标来衡量。比如银行客户样本中好客户990个,坏客户10个。如果一个模型直接把所有客户都判断为好客户,得到精度为99%,但这显然是没有意义的。
  • 又比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0-不发生地震、1-发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的精度,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为什么99%的精度的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的精度却忽视了我们关注的东西。

对于以上几种情况,单纯根据Accuracy来衡量算法的优劣已经失效。这个时候就需要对目标变量的真实值和预测值做更深入的分析


===================分割线======================

3.2 混淆矩阵(Confusion Matrix)

混淆矩阵,在无监督学习中被称为匹配矩阵(matching matrix),之所以叫混淆矩阵,是因为我们能够很 easy 从图表中看到分类器有没有将样本的类别给混淆了。矩阵每一列表示分类器预测值,每一行表示样本真实值。混淆矩阵如下图所示:

这里牵扯到三个方面:真实值,预测值,预测值和真实值之间的关系,其中任意两个方面都可以确定第三个。
通常取预测值和真实值之间的关系、预测值对矩阵进行划分。
混淆矩阵:

  • True Positive(真正, TP):将正类预测为正类数;
  • True Negative(真负 , TN):将负类预测为负类数;
  • False Positive(假正, FP):将负类预测为正类数,误报 (Type I error);
  • False Negative(假负 , FN):将正类预测为负类数,漏报 (Type II error);


===================分割线======================

3.3 查准率(准确率) Precision

Precision 是分类器预测的正样本中预测正确的比例,取值范围为[0,1],取值越大,模型预测能力越好。

需要注意的是准确率(Precision)和精度(Accuracy)是不一样的。在正负样本不平衡的情况下,精度这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc 也有 99% 以上,没有意义。


===================分割线======================

3.4查全率召回率Recall

Recall 是分类器所预测正确的正样本占所有正样本的比例,取值范围为[0,1],取值越大,模型预测能力越好。
应用场景:
  • 地震的预测
对于地震的预测,我们希望的是 Recall 非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲 Precision 。情愿发出 1000 次警报,把 10 次地震都预测正确了;也不要预测 100 次对了 8 次漏了两次。
  • 嫌疑人定罪

基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。即使有时候放过了一些罪犯,但也是值得的。因此我们希望有较高的Precision值,可以合理地牺牲Recall


刚开始接触这两个概念的时候总搞混,时间一长就记不清了。
实际上非常简单,准确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是对的。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)。
而召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。


在信息检索领域,准确率和召回率又被称为查准率查全率。

问题 8: 某一家互联网金融公司风控部门的主要工作是利用机器模型抓取坏客户。互联网金融公司要扩大业务量,尽量多的吸引好客户,此时风控部门该怎样调整RecallPrecision?如果公司坏账扩大,公司缩紧业务,尽可能抓住更多的坏客户,此时风控部门该怎样调整RecallPrecision
如果互联网公司要扩大业务量,为了减少好客户的误抓率,保证吸引更多的好客户,风控部门就会提高阈值,从而提高模型的查准率Precision,同时,也会放进一部分坏客户,导致查全率Recall下降。如果公司要缩紧业务,尽可能抓住更多的坏客户,风控部门就会降低阈值,从而提高模型的查全率Recall,但是这样会导致一部分好客户误抓,从而降低模型的查准率 Precision

根据以上几个案,我们知道随着阈值的变化RecallPrecision往往会向着反方向变化,这种规律很难满足我们的期望,即RecallPrecision同时增大。

问题 9: 有没有什么方法权衡RecallPrecision 的矛盾?
我们可以用一个指标来统一RecallPrecision的矛盾,即利用RecallPrecision的加权调和平均值作为衡量标准。


===================分割线======================

3.5

PrecisionRecall 是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下Precision高、Recall 就低,Recall 高、Precision就低。为了均衡两个指标,我们可以采用PrecisionRecall的加权调和平均(weighted harmonic mean)来衡量,即公式如下:



>1时查全率有更大影响;<1时差准率有更大影响。由于无法直观反映数据的情况,同时业务含义相对较弱,实际工作用到的不多。


问题 10: 有没有办法观察模型好坏随阈值的变化趋势呢(提示:利用TPR, FPR两个指标)?

有,ROCReceiver Operating Characteristic)曲线。

问题 11lr模型输出的是概率,需要设置阈值才能得到好坏客户,从而得到混淆矩阵,有没有一种指标不依赖于
阈值?

有,AUC


===================分割线======================

3.6 ROC AUC

AUC是一种模型分类指标,且仅仅是二分类模型的评价指标AUCArea Under Curve的简称,那么Curve就是ROCReceiver Operating Characteristic),翻译为"接受者操作特性曲线"。也就是说ROC是一条曲线,AUC是一个面积值

3.6.1 ROC

ROC曲线为 FPR TPR 之间的关系曲线,这个组合以 FPR TPR,即是以代价 (costs) 对收益 (benefits),显然收益越高,代价越低,模型的性能就越好。

  • x 轴为假阳性率(FPR):在所有的负样本中,分类器预测错误的比例;
  • y 轴为真阳性率(TPR):在所有的正样本中,分类器预测正确的比例(等于Recall);

为了更好地理解ROC曲线,我们使用具体的实例来说明
如在医学诊断的主要任务是尽量把生病的人群都找出来,也就是
TPR越高越好。而尽量降低没病误诊为有病的人数,也就是FPR越低越好。
不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的
TPR应该会很高,但是FPR也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么TPR达到1FPR也为1

我们以FPR为横轴,TPR为纵轴,得到如下ROC空间。


我们可以看出,左上角的点(TPR=1FPR=0),为完美分类,也就是这个医生医术高明,诊断全对。点A(TPR>FPR),医生A的判断大体是正确的。中线上的点B(TPR=FPR),也就是医生B全都是蒙的,蒙对一半,蒙错一半;下半平面的点C(TPR<FPR),这个医生说你有病,那么你很可能没有病,医生C的话我们要反着听,为真庸医。上图中一个阈值,得到一个点。现在我们需要一个独立于阈值的评价指标来衡量这个医生的医术如何,也就是遍历所有的阈值,得到 ROC 曲线。
假设下图是某医生的诊断统计图,为未得病人群(上图)和得病人群(下图)的模型输出概率分布图(横坐标表示模型输出概率,纵坐标表示概率对应的人群的数量),显然未得病人群的概率值普遍低于得病人群的输出概率值(即正常人诊断出疾病的概率小于得病人群诊断出疾病的概率)。

竖线代表阈值。显然,图中给出了某个阈值对应的混淆矩阵,通过改变不同的阈值1.0-->0,得到一系列的混淆矩阵,进而得到一系列的TPR和FPR,绘制出ROC曲线。

阈值为1时,不管你什么症状,医生均未诊断出疾病(预测值都为N),此时FPR=TPR=0,位于左下。阈值为 0 时,不管你什么症状,医生都诊断结果都是得病(预测值都为P),此时FPR=TPR=1,位于右上。


问题 12:如下,是三个模型对于 ROC 曲线,请按照模型性能好坏对齐进行排序。

显然是classifier4最好,classifier1最差。classifier2和classifier3暂时看不出来,需要用AUC来计算。


===================分割线======================

3.6.2 AUC

AUC 定义:
AUC 值为 ROC 曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。
  • AUC = 1,是完美分类器。
  • 0.5 < AUC < 1,优于随机猜测。有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

注:对于AUC小于 0.5 的模型,我们可以考虑取反(模型预测为positive,那我们就取negtive),这样就可以保证模型的性能不可能比随机猜测差。

以下为ROC曲线和AUC值的实例:



AUC的物理意义
AUC的物理意义正样本的预测结果大于负样本的预测结果的概率。所以AUC反应的是分类器对样本的排序能力。另外值得注意的是,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。

  • 1. AUC更多的是关注对计算概率的排序,关注的是概率值的相对大小,与阈值和概率值的绝对大小没有关系。
  • 2. AUC只关注正负样本之间的排序,并不关心正样本内部,或者负样本内部的排序。这也体现了AUC的本质:任意个正样本的概率都大于负样本的概率的能力 。

AUC的计算:

  • 1AUCROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积(曲线)之和。计算的精度与阈值的精度有关。
  • 2:根据AUC的物理意义,我们计算正样本预测结果大于负样本预测结果的概率。取n1*n0(n1为正样本数,n0为负样本数)个二元组,比较score(预测结果),最后得到AUC。时间复杂度为O(N*M)
  • 3:我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n (n=n0+n1,其中n0为负样本个数,n1为正样本个数),其次为n-1。那么对于正样本中rank最大的样本,rank_max,有n1-1个其他正样本比他score,那么就有(rank_max-1)-(n1-1)个负样本比他score小。其次为(rank_second-1)-(n1-2)。最后我们得到正样本大于负样本的概率为:计算复杂度为O(N+M)

问题 13:为什么说 ROC AUC都能应用于非均衡的分类问题?
ROC曲线只与横坐标 (FPR) 和 纵坐标 (TPR) 有关系,我们知道:

以及混淆矩阵:

我们可以发现TPR只是正样本中(第一行)预测正确的概率,而FPR只是负样本中(第二行)预测错误的概率。和正负样本的比例没有关系。因此 ROC 的值与实际的正负样本比例无关,因此既可以用于均衡问题,也可以用于非均衡问题。而 AUC 的几何意义为ROC曲线下的面积,因此也和实际的正负样本比例无关。


===================分割线======================

3.7 KS Kolmogorov-Smirnov

KS值是在模型中用于区分预测正负样本分隔程度的评价指标,一般应用于金融风控领域。与ROC曲线相似,ROC是以FPR作为横坐标,TPR作为纵坐标,通过改变不同阈值,从而得到ROC曲线。而在KS曲线中,则是以阈值作为横坐标,以FPR和TPR作为纵坐标,ks曲线则为TPR-FPR,ks曲线的最大值通常为ks值。
为什么这样求KS值呢?我们知道,当阈值减小时,TPR和FPR会同时减小,当阈值增大时,TPR和FPR会同时增大。而在实际工程中,我们希望TPR更大一些,FPR更小一些,即TPR-FPR越大越好,即ks值越大越好。
KS值的取值范围是[0,1]。通常来说,值越大,模型区分正负样本的能力越强(一般0.3以上,说明模型的效果比较好)。
以下为ks曲线的实例 (这里的红色为ks曲线,是将score升序排列之后,进行了分组,所以 x 轴是分组号,而不是阈值):


===================分割线======================

4. 评估指标和代价函数是一家人吗?

代价函数:,又称Cost function,loss function objective function。一般用在训练过程中,用来定义预测值和真实值之间的距离(也就是衡量模型在训练集上的性能),作为模型调整参数的反馈。代价函数越小,模型性能越好。

评判指标:,一般用于训练和测试过程中,用于评估模型好坏。评判指标越大(或越小),模型越好。

本质上代价函数和评判指标都是一家人,只他们的应用场景不同,分工不同。代价函数是用来优化模型参数的,评价指标是用来评判模型好坏的。

作为评判指标所具备的条件:
1. 直观,可以理解
......
作为代价函数所具备的条件:
1. 函数光滑且可导:可用梯度下降求解极值
2. 函数为凸函数:可用梯度下降求解最优解......

例如我们经常使用的分类器评判指标 AUC 就不能直接被优化,因此我们常采用交叉熵来代替 AUC 进行优化。 一般情况下,交叉熵越小,AUC 就会越大。


===================分割线======================

5. 补充小知识点:micro还是macro

假如我们有n个二分类混淆矩阵,怎样综合评价我们的模型呢?我们通常有两种方式一种叫macro,一种叫micro

5.1 macro方法

1. 计算出各混淆矩阵的RecallPrecision,记为


2. 对各个混淆矩阵的RecallPrecision求平均,然后再根据求得的RecallPrecision计算F1


===================分割线======================

5.2 micro方法

1. 将各混淆矩阵对应的元素进行平均,得到平均混淆矩阵:

2. 再基于平均混淆矩阵计算RecallPrecision,然后再根据求得的RecallPrecision计算F1


====================分割线==================

参考文献:

ROC和AUC介绍以及如何计算AUC

ROC曲线与AUC

=====================END======================

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【拜小白的机器学习】5-机器学习的评估度量标准(评估) 的相关文章

  • RocektMQ社区"每周直播分享第7期"如约而至

    各位同学 RocektMQ社区 每周直播分享第7期 如约而至 分享题目 RocketMQ消息消费概述 直播方式 钉钉群直播方式 群号 21791227 分享时间 2019 01 17 20 00 21 30 本周四 分享讲师 费红健 内容简
  • POJ 1062 昂贵的聘礼

    题面 年轻的探险家来到了一个印第安部落里 在那里他和酋长的女儿相爱了 于是便向酋长去求亲 酋长要他用10000个金币作为聘礼才答应把女儿嫁给他 探险家拿不出这么多金币 便请求酋长降低要求 酋长说 嗯 如果你能够替我弄到大祭司的皮袄 我可以只
  • linux安装rocketmq(有效)

    1 基于java maven环境搭建 linux java 搭建 linux安装java1 8 拒绝 emo的博客 CSDN博客 linux maven搭建 linux安装maven3 2 2 拒绝 emo的博客 CSDN博客 2 下载 A
  • 七大排序算法的基本原理及实现

    目录 1 排序的概念及引用 1 1 排序的概念 1 2 常见的排序算法 2 常见排序算法的实现 2 1 基于选择的思想 2 1 1 直接选择排序 2 1 2 堆排序 2 2 基于插入的思想 2 2 1 直接插入排序 2 2 2 希尔排序 缩
  • pycharm连接MYSQL数据库

    pycharm连接MYSQL 1 gt 使用pip工具 进入cmd 输入 pip install pymysql 回车进行安装 有网络的情况下进行 安装最新版的pymysql可以使用 python m pip install upgrade

随机推荐

  • 希尔排序(Shell Sort)

    如今是大数据时代 大量数据需要处理 便越来越需要跟优秀的算法 算法 Algorithm 是指解题方案的准确而完整的描述 是一系列解决问题的清晰指令 算法代表着用系统的方法描述解决问题的策略机制 也就是说 能够对一定规范的输入 在有限时间内获
  • strcpy和memcpy的区别

    1 strcpy函数 1 1 函数原型 char strcpy char dest const char src 1 2 函数功能 strcpy是一种C语言的标准库函数 strcpy把含有 0 结束符的字符串复制到另一个地址空间 返回值的类
  • linux:docker compose使用已经存在的网络

    问题 如题 参考 Networking in Compose Docker Documentation services networks network1 name my pre existing network external tru
  • vue2+ElementUI时间选择器限制可选范围为今天往前7天内的任意一天

    题目有2个重点 1 可选范围为今天往前7天 含今天 2 只能选择7天内的任意一天 由此可知 用户选择的最大日期和最小日期为同一天 即只能选择一天 也就是说 使用了时间范围插件 但是model中的两个日期是同一天 HTML
  • c# 位运算符

    说来惭愧 今天看别人提供的源码 看了这些运算符竟然有些记不起来 在这里就记录一下 首先认识这些运算符 按位与 其实与 逻辑运算符有一致的地方 下面会讲到 按位或 同样与 有类似的地方 按位取反 按位异或 lt lt 左移运算符 gt gt
  • Python爬取天气数据并进行分析与预测

    随着全球气候的不断变化 对于天气数据的获取 分析和预测显得越来越重要 本文将介绍如何使用Python编写一个简单而强大的天气数据爬虫 并结合相关库实现对历史和当前天气数据进行分析以及未来趋势预测 1 数据源选择 选择可靠丰富的公开API或网
  • 百度又开源一款压测工具,可模拟几十亿的并发场景,太强悍了

    dperf 是百度开源的一款基于 DPDK 的 100Gbps 网络性能和负载测试软件 能够每秒建立千万级的 HTTP 连接 亿级别的并发请求和数百 Gbps 的吞吐量 优点 性能强大 基于 DPDK 使用一台普通 x86 服务器就可以产生
  • burpsuite扩展集成sqlmap插件

    通常我们在使用sqlmap测试SQL注入问题的时候会先使用burpsuite来抓包 然后交给sqlmap进行扫描 此操作略显繁琐 为了避免这种繁琐的重复操作可以将sqlmap以插件的方式集成到burpsuite里面 实现request右击s
  • ConnectTimeout和ReadTimeout所代表的意义

    ConnectTimeout 指的是建立连接所用的时间 适用于网络状况正常的情况下 两端连接所用的时间 在java中 网络状况正常的情况下 例如使用HttpClient或者HttpURLConnetion连接时设置参数connectTime
  • GO语言学习-Sublime+Go语言环境搭建

    sublime text3 Golang 搭建开发环境 1 引言 sublime text3搭建Golang的开发环境顺序为 1 安装Golang 2 sublime 安装 Gosublime 3 修改Gosublime中的配置 使之支持G
  • 基于蓝牙技术使用stm32制造一个智能小车 (寻迹,避障,遥控)

    目录 1 制作智能小车的硬件名单 3 引脚图 2 先让小车动起来 1 小车运动 2 代码 3 寻迹 1 工作原理 2 代码 4 超声波避障 1 工作原理 2 代码 5 蓝牙遥控 1 蓝牙工作原理 2 代码 6 oled屏幕 1 工作内容 7
  • Bootstarp入门教程(3)栅格系统

    栅格系统简介 栅格系统用于通过一系列的行 row 与列 column 的组合创建页面布局 你的内容就可以放入创建好的布局中 下面就介绍以下Bootstrap栅格系统的工作原理 行 row 必须包含在 container中 以便为其赋予合适的
  • 【最新】Java基础学习笔记(20天学会java黑马)(一)

    文章目录 Java背景 初步了解 Java快速入门 HelloWorld案例 Java基础语法 注释 数据类型 变量 关键字与标志符 类型转换 强制类型转换 运算符 算术运算符 赋值运算符 自增自减运算符 关系运算符 逻辑运算符 短路逻辑运
  • 基于Linux系统下安装Tomcat

    Tomcat服务器是一个免费开放开源的轻量级Web应用服务器 可以实现项目的部署和管理 本博客将实现Tomcat在Linux操作系统中的安装 1 检查系统中是否有java JDK 1 1 Windows系统下查看 使用 Win R键打开运行
  • eclipse中编写spring配置文件时有design和source,namespace 如何设置出来的问题

    首先要安装Spring插件 在已经装了 spring插件的情况下 右键点击你要显示的 xml文件 会出来 open with gt spring config editor 如图
  • ubuntu18.04安装显卡驱动 + CUDA + cuDNN+Tensorflow+pytorch

    GeForce MX150 Python3 6 cuda 9 0 cudnn 7 tensorflow 1 12 0 按多个教程安装前后也出了很多问题 最终才安装成功 以防万一 现将过程记录如下 1 安装显卡驱动 注意 两种方法 方法一为我
  • vue 设置提示 @ 路径 和 ~@ 路径

    菜鸟最近用公司的电脑开发 结果发现之前有的路径提示全没了 感觉非常难受 然后去插件一看才发现 好像是菜鸟自己不小心把这个插件给删了 有点难受 但是安装了这插件还是有点不好用 就是感觉每次使用了 vue 的 或者 开头的路径时 总是没有提示
  • React:‘XXX’ is defined but nerver used的解决方法

    原因 想引入Login组件 但是一直显示 组件被定义但从未使用 的字样 但是我明明就有引用吖 解决方法 原来是组件的文件名首字母需要大写 因为要做项目 但是React的基础课程还没学完 只好以这种半桶水的知识与头脑去做项目 难免会遇到很多困
  • 关于车载以太网理解

    目录 1 车载以太网概述 2 物理层 PHY 2 1 总体说明 2 2 物理层架构 2 3 物理层控制器的架构 2 4 物理层编码原理 3 链路层 MAC 3 1 MAC控制器架构 3 2 MAC地址 3 3 数据传输 3 4 MAC帧格式
  • 【拜小白的机器学习】5-机器学习的评估度量标准(评估)

    在上一节中我们主要讲到机器学习的评估方法 其中重点是讲解了三种对数据集的划分方式 包括留出法 hold out 交叉验证法 k fold cross validation 自助法 bootstrap 本节来看看机器学习的评估度量标准 其中我