机器学习sklearn----支持向量机SVC模型评估指标

文章目录

    • 前言
    • 混淆矩阵
      • 指标1准确率
      • 指标2精确度
      • 指标3召回率
      • 指标4F1-measure
      • 指标5假负率
      • 指标6特异度
      • 指标7假正率
    • sklearn中的混淆矩阵

前言

前面一篇博文介绍了SVC处理二分类问题是怎么样来解决样本不均衡。这里我们要来将用什么指标来衡量模型的好坏
SVC提供的接口score是计算模型的准确率的这个指标在样本均衡的情况下是完全适用的, 但是在遇到样本不均衡问题的时候就失去了意义,而我们日常面对的数据会有较多的不均衡, 面对这样的问题,我们需要采用新的模型评估指标,而我们的评估指标需要能够反映模型捕获少数类的能力, 在现实中我们需要寻找捕获少数类的能力和将多数类判错后需要付出的代价的平衡。 如果一个模型能尽量的捕获少数类,还能将多数类尽量判断正确,那么这个模型就非常优秀了。 为了评估模型这样的能力,我们将引用混淆矩阵和ROC曲线来评估模型

本次使用的数据还是上篇博文中一模一样,数据生成及模型训练代码如下:

import numpy as np
from sklearn.datasets import make_blobs
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import warnings

warnings.filterwarnings("ignore")
%matplotlib inline

# 创建一个样本不均衡的数据集
X, y = make_blobs(n_samples=[500, 50],
                 n_features=2,
                 cluster_std=3,
                 random_state=3)

plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

# 不采用样本均衡SVC模型效果
svc_none_class_weight = SVC(kernel='linear').fit(X, y)

# 采用样本均衡参数class_weight
svc_with_class_weight = SVC(kernel='linear', class_weight={
   1: 10}).fit(X, y)

机器学习sklearn----支持向量机SVC模型评估指标_第1张图片

混淆矩阵

混淆矩阵是二分类问题的一个很重要的评估指标,在样本不均衡问题非常的有用。 在混淆矩阵中我们将少数类认为是正例,多数类认为是负例。这里方便理解将少数类认为是1, 多数类认为是0. 标准二分类的混淆矩阵如下所示

预测值
1 0
真实值 1 11 10
0 01 00

在混淆矩阵中真实值是写在预测值前面的,比如11,前面的1表示真实值,后面的1表示预测值, 那么其他的几个数字也有了自己的意义。 混淆矩阵中主对角线上的11,00表示预测完全正确的情况,10,01表述预测出错的情况,基于混淆矩阵可以产生7个模型评估指标,这些指标的结果都是在0-1之间的,下面来一一介绍这几个指标

指标1准确率

准确率(样本均衡时比较有意义):所有预测正确的样本于总样本的比例,也就是常用的scores,通常来说越接近1越好 计算方式:
准 确 率 = 预 测 正 确 的 样 本 数 量 所 有 样 本 总 数 准确率 = \frac {预测正确的样本数量} {所有样本总数} =

你可能感兴趣的:(机器学习,#,sklearn,机器学习,sklearn,支持向量机,模型评估指标,召回率)