关于机器学习算法中的准确率(Accuracy)、精准率(Precision)、召回率(Recall)的理解

在机器学习、深度学习等完成建模后,需要对模型的效果进行评价。
目前在业内最常用的评价指标有准确率(Accuracy)、精准率(Precision)、召回率(Recall)及F1-Score等。本文将简单介绍这几个概念,也是记录下来便于自己理解。


混淆矩阵

在介绍这些概念之前,我们需要先了解“混淆矩阵”及其相关指标。

PositiveNegative
TrueTrue Positive(TP)True Negative(TN)
FalseFalse Positive(FP)False Negative(FN)

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


评价指标

准确率(Accuracy)

准确率(Accuracy)的计算公式为:
A C C = T P + T N T P + T N + F P + F N A C C=\frac{T P+T N}{T P+T N+F P+F N} ACC=TP+TN+FP+FNTP+TN
准确率是指我们模型预测正确的结果所占的比例

错误率(Error rate)

错误率与准确率相反,是指模型预测错误的结果所占的比例。想要求得错误率,可以使用Error rate = 1 - accuracy

精准率(Precision)

精准率(Precision)定义如下 :
 Precision  = T P T P + F P \text { Precision }=\frac{T P}{T P+F P}  Precision =TP+FPTP
精准率是指预测为正例的样本中,有多少是真正的正样本的数量。(即预测为对的样本中,有多少是真正预测正确的)

召回率(Recall)

召回率(Recall)定义如下:
 Recall  = T P T P + F N \text { Recall }=\frac{T P}{T P+F N}  Recall =TP+FNTP
召回率是指在全部正例样本中,有多少正例样本被预测正确了。

F1-score

要综合准确率和召回率,所以提出了一个指标F1 score,其公式为:
 F1  = 2 ∗ P ∗ R P + R \text { F1 }=\frac{2 * P * R }{ P+R}  F1 =P+R2PR
F1 score综合了P和R的结果,当F1较高时能说明试验方法比较有效。

其他评价指标

计算速度:分类器训练和预测需要的时间;
鲁棒性:处理缺失值和异常值的能力;
可扩展性:处理大数据集的能力;
可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。


在一年之间看了很多东西,后续在回顾过程中发现忘记了很多,所以慢慢回忆一些东西并记录下来,给自己加深记忆,供自己以后参考。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是机器学习算法糖尿病预测的步骤和代码: 步骤: 1. 收集和准备数据集 2. 分割数据集为训练集和测试集 3. 选择一个或多个机器学习算法进行训练 4. 使用测试数据集进行模型评估和调整 5. 使用最终的模型进行糖尿病预测 代码: ``` import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score, recall_score, confusion_matrix import matplotlib.pyplot as plt #读取并准备数据集 data = pd.read_csv('diabetes.csv') X = data.drop(['Outcome'], axis=1) y = data['Outcome'] #分割数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) #训练决策树分类器 clf = DecisionTreeClassifier(random_state=42) clf.fit(X_train, y_train) #使用测试数据集进行模型评估 y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) recall = recall_score(y_test, y_pred) conf_matrix = confusion_matrix(y_test, y_pred) #输出准确率召回率、混淆矩阵 print('Accuracy:', accuracy) print('Recall:', recall) print('Confusion Matrix:\n', conf_matrix) #绘制混淆矩阵热力图 plt.matshow(conf_matrix, cmap='Blues') plt.colorbar() plt.xlabel('Predicted') plt.ylabel('Actual') plt.show() ``` 准确率召回率、表格、图像: 假设上述代码的输出结果如下: ``` Accuracy: 0.7142857142857143 Recall: 0.5 Confusion Matrix: [[83 16] [27 28]] ``` 则准确率为 0.71,召回率为 0.5。混淆矩阵如下: ``` Predicted 0 1 Actual 0 83 16 1 27 28 ``` 混淆矩阵的热力图如下图所示: 注意:以上代码和结果仅供参考,具体结果可能因数据集和算法不同而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值