最强总结,机器学习必会的评估指标!!
大家好,我是小寒
今天给大家分享机器学习中常用的评估指标。
评估指标因任务的不同而有所区别,常见的任务包括分类、回归等。
分类问题评估指标
1.混淆矩阵
顾名思义,混淆矩阵给出一个 N*N 矩阵作为输出,其中 N 是目标类的数量。
混淆矩阵是分类器做出的正确和错误预测数量的表格总结。
该矩阵将实际值与机器学习模型的预测值进行比较。
真正例(True Positive, TP):模型正确预测为正例的数量。
假正例(False Positive, FP):模型错误预测为正例的数量。
真负例(True Negative, TN):模型正确预测为负例的数量。
假负例(False Negative, FN):模型错误预测为负例的数量。
2.准确率 (Accuracy)
公式
适用场景
from sklearn.metrics import accuracy_score
y_true = [0, 1, 0, 1]
y_pred = [0, 0, 0, 1]
accuracy = accuracy_score(y_true, y_pred)
print("Accuracy:", accuracy)
3.精确率 (Precision)
公式
适用场景
from sklearn.metrics import precision_score
y_true = [0, 1, 0, 1]
y_pred = [0, 0, 0, 1]
precision = precision_score(y_true, y_pred)
print("Precision:", precision)
4.召回率 (Recall)
公式
适用场景
from sklearn.metrics import recall_score
y_true = [0, 1, 0, 1]
y_pred = [0, 0, 0, 1]
recall = recall_score(y_true, y_pred)
print("Recall:", recall)
5.特异性
公式
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 0, 1]
y_pred = [0, 0, 0, 1]
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
specificity = tn / (tn + fp)
print("Specificity:", specificity)
6.F1-Score
F1-Score 是精确率和召回率的调和平均,用于平衡两者之间的影响。
适用场景
当需要在精确率和召回率之间找到平衡点时,使用 F1-Score。
from sklearn.metrics import f1_score
y_true = [0, 1, 0, 1]
y_pred = [0, 0, 0, 1]
f1 = f1_score(y_true, y_pred)
print("F1 Score:", f1)
7.AUC-ROC
回归问题评估指标
1.均方误差 (MSE)
MSE 是预测值与真实值之间差异的平方的平均值,常用于衡量模型的预测误差。
适用场景
from sklearn.metrics import mean_squared_error
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mse = mean_squared_error(y_true, y_pred)
print("Mean Squared Error (MSE):", mse)
2. 均方根误差 (RMSE)
RMSE是 MSE 的平方根,用于衡量预测误差的平均幅度。
RMSE 的单位与原始预测变量相同,因此便于理解。
from sklearn.metrics import mean_squared_error
import numpy as np
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)
print("Root Mean Squared Error (RMSE):", rmse)
3. 平均绝对误差 (MAE)
适用场景
from sklearn.metrics import mean_absolute_error
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mae = mean_absolute_error(y_true, y_pred)
print("Mean Absolute Error (MAE):", mae)
4. R方值
适用场景
from sklearn.metrics import r2_score
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
r2 = r2_score(y_true, y_pred)
print("R-squared (R^2):", r2)
5.调整后的 R²
其公式为
n 是样本数量。 p 是模型中的自变量(特征)数量。
from sklearn.metrics import r2_score
def adjusted_r2(r2, n, k):
return 1 - (1 - r2) * (n - 1) / (n - k - 1)
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
r2 = r2_score(y_true, y_pred)
n = len(y_true) # Number of observations
k = 1 # Number of predictors
adj_r2 = adjusted_r2(r2, n, k)
print("Adjusted R-squared:", adj_r2)
最后
—
「进群方式:加我微信,备注 “python”」
往期回顾
Fashion-MNIST 服装图片分类-Pytorch实现