机器学习第10天:模型评价方法及代码实现


这里先引入模型评价相关的概念以及相应的公式,让大家一个大概的理解,知道有这么一回事,在后续文章中我将结合具体实例进行详细的讲解。

一、分类评价指标

混淆矩阵

真实\预测正例反例
正例TP(真正例)FN(假反例)
反例FP(假正例)TN(真反例)
  • TP: 将正例预测为正例(预测正确)

  • FN: 将正例预测为负例(预测错误)

  • FP: 将负例预测为正例(预测错误)

  • TN: 将负例预测为负例(预测正确)

1.精确率(Precision)

定义: 精确率(Precision),是被判定为正例(反例)的样本中,真正的正例样本(反例样本)的比例。举个例子,一个盒子里有20个小球,10个白的10个黑的,现在要找到盒子中的黑球,拿出了8个球其中2个黑6个白的,那么查找精确率为2/6=0.3333。

公式(分类任务):
在这里插入图片描述
代码:

from sklearn.metrics import precision_score

y_true = [3, 1, 2, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1]

precision_score(y_true, y_pred)

2.召回率(Recall)

定义:召回率(Recall),是被正确分类的正例(反例)样本,占所有正例(反例)样本的比例。举个例子,一个盒子里有20个小球,10个白的10个黑的,现在要找到盒子中的黑球,拿出了8个球其中2个黑6个白的,那么查找召回率为2/10=0.2。

公式(分类任务)
在这里插入图片描述
代码

from sklearn.metrics import recall_score

y_true = [3, 1, 2, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1]

recall_score(y_true, y_pred)

3.准确率(Accuracy)

定义: 指的是分类正确的样本数量占样本总数的比例

公式:
在这里插入图片描述
代码:

import numpy as np
from sklearn.metrics import accuracy_score

y_true = [3, 1, 2, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1]

accuracy_score(y_true, y_pred)

注:逻辑回归LogisticRegression.score()与K-邻近算法KNeighborsClassifier.score()中使用的就是该评价方法。

4.F1_score

定义: 精确率和召回率的调和平均值。

公式:
在这里插入图片描述
代码:

from sklearn.metrics import f1_score

y_true = [3, 1, 2, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1]

f1_score(y_true, y_pred)

二、回归评价指标

1.平方根误差(RMSE)

平方根误差(RMSE),其又被称为RMSD(root mean square deviation),是回归模型中最常用的评价指标。

公式:

R M S E = M S E = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 RM S E=\sqrt{M S E}= \sqrt{\frac{1}{m}\sum_{i=1}^{m}\left(y_i-\hat{y}_i\right)^{2}} RMSE=MSE =m1i=1m(yiy^i)2

  • y i y_i yi是第i个样本的真实值
  • y ^ \hat y y^是第i个样本的预测值
  • m是样本的个数

代码:

from sklearn.metrics import mean_squared_error
 
y_true = [1,2,4]
y_pred = [1,3,5]

RMSE = mean_squared_error(y_true,y_pred)**0.5

2.均方误差(MSE)

公式:

M S E = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 M S E=\frac{1}{m}\sum_{i=1}^{m}\left(y_i-\hat{y}_i\right)^{2} MSE=m1i=1m(yiy^i)2

  • y i y_i yi是第i个样本的真实值
  • y ^ \hat y y^是第i个样本的预测值
  • m是样本的个数

代码:

from sklearn.metrics import mean_squared_error
 
y_true = [1,2,4]
y_pred = [1,3,5]

MSE = mean_squared_error(y_true,y_pred)

3.平均绝对误差(MAE)

公式:

M A E = 1 m ∑ i = 1 m ∣ y i − y ^ i ∣ MAE=\frac{1}{m}\sum_{i=1}^{m}\vert{y_i-\hat{y}_i}\vert MAE=m1i=1myiy^i

  • y i y_i yi是第i个样本的真实值
  • y ^ \hat y y^是第i个样本的预测值
  • m是样本的个数

代码:

from sklearn.metrics import mean_absolute_error
 
y_true = [1,2,4]
y_pred = [1,3,5]

MAE = mean_absolute_error(y_true,y_pred)

4.R方值(R2_score)

公式:

R 2 = 1 − ∑ i = 1 m ( y i − y ^ i ) 2 ∑ i = 1 m ( y i − y ˉ i ) 2 R^2 = 1 - \frac{\sum_{i=1}^{m}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{m}(y_i-\bar{y}_i)^2} R2=1i=1m(yiyˉi)2i=1m(yiy^i)2

  • y i y_i yi是第i个样本的真实值
  • y ^ \hat y y^是第i个样本的预测值
  • m是样本的个数

代码:

from sklearn.metrics import r2_score
 
y_true = [1,2,4]
y_pred = [1,3,5]

R2 = r2_score(y_true,y_pred)

注:线性回归LinearRegression.score()中使用的就是该评价方法

  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
机器学习模型评价指标可以分为分类模型和回归模型两类。 ## 分类模型评价指标 ### 混淆矩阵 混淆矩阵是分类模型评价中最基本的指标,它用于描述分类模型预测结果和真实结果之间的关系。可以用以下代码实现混淆矩阵的可视化: ```python import matplotlib.pyplot as plt import seaborn as sns from sklearn.metrics import confusion_matrix def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, cmap=plt.cm.Blues): cm = confusion_matrix(y_true, y_pred) if normalize: cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] plt.imshow(cm, interpolation='nearest', cmap=cmap) plt.title('Confusion matrix') plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) fmt = '.2f' if normalize else 'd' thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])): plt.text(j, i, format(cm[i, j], fmt), horizontalalignment="center", color="white" if cm[i, j] > thresh else "black") plt.tight_layout() plt.ylabel('True label') plt.xlabel('Predicted label') ``` ### 准确率 准确率是分类模型评价中最常用的指标,用于衡量模型预测正确的样本占总样本数量的比例。可以用以下代码实现准确率的计算和可视化: ```python from sklearn.metrics import accuracy_score def plot_accuracy(y_true, y_pred): acc = accuracy_score(y_true, y_pred) plt.figure(figsize=(4, 4)) plt.title('Accuracy: {:.2%}'.format(acc)) sns.heatmap(confusion_matrix(y_true, y_pred), square=True, annot=True, fmt='d', cbar=False) ``` ### 精确率、召回率和 F1 值 精确率是指模型预测为正例的样本中,真正为正例的样本占比;召回率是指真正为正例的样本中,被模型预测为正例的样本占比;F1 值是精确率和召回率的调和平均数。可以用以下代码实现精确率、召回率和 F1 值的计算和可视化: ```python from sklearn.metrics import precision_score, recall_score, f1_score def plot_precision_recall_f1(y_true, y_pred): precision = precision_score(y_true, y_pred) recall = recall_score(y_true, y_pred) f1 = f1_score(y_true, y_pred) plt.figure(figsize=(4, 4)) plt.title('Precision: {:.2%}, Recall: {:.2%}, F1 Score: {:.2%}'.format(precision, recall, f1)) sns.heatmap(confusion_matrix(y_true, y_pred), square=True, annot=True, fmt='d', cbar=False) ``` ## 回归模型评价指标 ### 均方误差和均方根误差 均方误差是回归模型评价中最常用的指标之一,用于衡量模型预测值与真实值之间的差异。均方根误差是均方误差的平方根。可以用以下代码实现均方误差和均方根误差的计算和可视化: ```python from sklearn.metrics import mean_squared_error def plot_mse_rmse(y_true, y_pred): mse = mean_squared_error(y_true, y_pred) rmse = np.sqrt(mse) plt.figure(figsize=(4, 4)) plt.title('MSE: {:.2f}, RMSE: {:.2f}'.format(mse, rmse)) plt.scatter(y_true, y_pred, alpha=0.5) plt.plot([y_true.min(), y_true.max()], [y_true.min(), y_true.max()], 'k--') plt.xlabel('True Values') plt.ylabel('Predictions') ``` ### R2 值 R2 值是回归模型评价中最常用的指标之一,用于衡量模型解释数据方差的能力,取值范围为 0 到 1。可以用以下代码实现 R2 值的计算和可视化: ```python from sklearn.metrics import r2_score def plot_r2(y_true, y_pred): r2 = r2_score(y_true, y_pred) plt.figure(figsize=(4, 4)) plt.title('R2 Score: {:.2%}'.format(r2)) plt.scatter(y_true, y_pred, alpha=0.5) plt.plot([y_true.min(), y_true.max()], [y_true.min(), y_true.max()], 'k--') plt.xlabel('True Values') plt.ylabel('Predictions') ``` 以上是一些常用的机器学习模型评价指标及可视化代码,可以根据实际需求进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K同学啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值