从0开始机器学习--7.模型的评估(混淆矩阵、Acc、F1、AUC、MSE、R方,含公式、代码)

写在前面

到此为止,我们几乎已经大致了解了所有常用的模型。但是有一个拖欠了很久的问题,对于这些模型,我们到底怎么评估他的好坏?这篇博文就将对分类、回归模型的评价指标作介绍。

1.python基础;
2.ai模型概念+基础;
3.数据预处理;
4.机器学习模型--1.聚类;2.降维;3.回归(预测);4.分类;
5.正则化技术;
6.神经网络模型--1.概念+基础;2.几种常见的神经网络模型;
7.对回归、分类模型的评价方式
8.简单强化学习概念;
9.几种常见的启发式算法及应用场景;
10.机器学习延申应用-数据分析相关内容--1.A/B Test;2.辛普森悖论;3.蒙特卡洛模拟;
以及其他的与人工智能相关的学习经历,如数据挖掘、计算机视觉-OCR光学字符识别等。


本文目录

写在前面

分类模型的评价

混淆矩阵

代码

指标

1. 准确率(Accuracy)

2. 精确率(Precision)

3. 召回率(Recall)

4. F1 Score

5. AUC(Area Under Curve)

ROC曲线

代码

回归模型的评价

1. 均方误差(MSE)

2. 均方根误差(RMSE)

3. 平均绝对误差(MAE)

4. 决定系数(R²)

总结

 


分类模型的评价

混淆矩阵

混淆矩阵用于分类任务,展示模型预测的四种可能结果:

  • TP (True Positive): 预测为正,实际为正。
  • TN (True Negative): 预测为负,实际为负。
  • FP (False Positive): 预测为正,实际为负(误报)。
  • FN (False Negative): 预测为负,实际为正(漏报)。

通过混淆矩阵可以直观地分析模型的误差类型和分类性能。

代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

# 生成一个简单的分类数据集
X, y = make_classification(n_samples=100, n_features=4, n_classes=2, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建并训练一个简单的逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测测试集
y_pred = model.predict(X_test)

# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)

# 可视化混淆矩阵
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()

# 显示图像
plt.show()

输出:

指标

1. 准确率(Accuracy)

正确预测的样本占总样本的比例。它反映了模型的整体预测性能,但在类别不平衡时可能不太可靠。

2. 精确率(Precision)

正确预测的正类样本占所有预测为正类样本的比例。高精确率意味着模型在预测正类时有很少的误报。

3. 召回率(Recall)

正确预测的正类样本占所有真实正类样本的比例。高召回率表示模型能够识别大部分正类样本。

4. F1 Score

精确率和召回率的调和平均,用于综合考虑这两个指标。适用于类别不平衡的数据。

5. AUC(Area Under Curve)

ROC曲线下的面积,衡量分类器的整体性能。值越接近1表示模型性能越好

ROC曲线

受试者工作特征曲线,描绘真阳性率(召回率)与假阳性率(1 - 特异性)之间的关系,展示模型在不同阈值下的表现。

代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc

# 生成一个简单的分类数据集
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建并训练一个逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 获取模型预测的概率值
y_scores = model.predict_proba(X_test)[:, 1]

# 计算ROC曲线
fpr, tpr, thresholds = roc_curve(y_test, y_scores)

# 计算AUC值
roc_auc = auc(fpr, tpr)

# 绘制ROC曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, 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()

输出:

回归模型的评价

1. 均方误差(MSE)

预测值与真实值差的平方的平均数。

2. 均方根误差(RMSE)

MSE的平方根,表示模型误差的标准差。更直观地反映误差的大小。

3. 平均绝对误差(MAE)

预测值与真实值差的绝对值的平均数。

4. 决定系数(R²)

衡量模型解释方差的能力,范围在0到1之间,越接近1表示模型越好。


总结

机器学习模型的评估主要包括分类和回归指标。分类模型的常用评价指标有准确率、精确率、召回率、F1分数和AUC,衡量模型在不同维度上的性能。回归模型常用均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)和决定系数(R²)来衡量预测值与真实值的偏差。

混淆矩阵和ROC曲线是两个常用的可视化工具,用于分析分类模型的表现。混淆矩阵展示了分类结果的分布,而ROC曲线展示了不同阈值下的真阳性率和假阳性率,帮助更直观地评估模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值