matlab朴素贝叶斯工具箱,Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

本文详细介绍了如何使用ROC曲线评估分类器的性能。通过Logistic回归、SVM和朴素贝叶斯分类器在不同数据集上的实例,展示了ROC曲线如何帮助比较分类器的优劣。此外,还探讨了自定义内核函数参数的选择以及在多类问题中计算ROC曲线的方法。文章强调了AUC值在衡量分类器性能中的重要性,更高的AUC值意味着更好的分类性能。
摘要由CSDN通过智能技术生成

71bddf8f35d0eaf635d48c32dad43567.png

绘制ROC曲线通过Logistic回归进行分类

加载样本数据。

load fisheriris

通过使用与versicolor和virginica物种相对应的度量来定义二元分类问题。

pred = meas(51:end,1:2);

定义二进制响应变量。

resp = (1:100)‘>50; % Versicolor = 0, virginica = 1

拟合逻辑回归模型。

mdl = fitglm(pred,resp,‘Distribution‘,‘binomial‘,‘Link‘,‘logit‘);

计算ROC曲线。使用逻辑回归模型中的概率估计值作为得分。

perfcurve 将阈值存储在数组中。

显示曲线下的面积。

AUC

AUC = 0.7918

曲线下的面积为0.7918。最大AUC为1,对应于理想分类器。较大的AUC值表示更好的分类器性能。

绘制ROC曲线

plot(X,Y)

xlabel(‘False positive rate‘)

ylabel(‘True positive rate‘)

title(‘ROC for Classification by Logistic Regression‘)

30237748ec13d52805ae4b6f5c06d574.png

使用ROC曲线比较分类方法

加载样本数据

load ionosphere

X 是351x34预测变量的矩阵。 Y 是类别标签的字符数组:  ‘b‘ 不良雷达回波和  ‘g‘ 良好雷达回波。

重新格式化因变量以适合逻辑回归。

拟合一个逻辑回归模型来估计雷达返回的后验概率是一个不好的概率。

mdl = fitglm(pred,resp,‘Distribution‘,‘binomial‘,‘Link‘,‘logit‘);

score_log = mdl.Fitted.Probability; % Probability estimates

使用得分的概率计算标准ROC曲线。

在相同的样本数据上训练SVM分类器标准化数据。

mdlSVM = fitcsvm(pred,resp,‘Standardize‘,true);

计算后验概率。

第二列  score_svm 包含不良雷达收益的后验概率。

使用SVM模型的分数计算标准ROC曲线。

在同一样本数据上拟合朴素贝叶斯分类器。

计算后验概率(分数)

[~,score_nb] = resubPredict(mdlNB);

使用朴素贝叶斯分类的分数计算标准ROC曲线。

将ROC曲线绘制在同一张图上。

1e3b0f3b2e442858faec16950a3c8d61.png

尽管对于较高的阈值,SVM可以产生更好的ROC值,但逻辑回归通常更擅长区分不良雷达收益与良好雷达。朴素贝叶斯的ROC曲线通常低于其他两个ROC曲线,这表明样本内性能比其他两个分类器方法差。

比较所有三个分类器的曲线下面积。

AUClog

AUClog = 0.9659

AUCsvm

AUCsvm = 0.9489

AUCnb

AUCnb = 0.9393

Logistic回归的AUC度量最高,而朴素的贝叶斯则最低。该结果表明,逻辑回归对此样本数据具有更好的样本内平均性能。

确定自定义内核功能的参数值

本示例说明如何使用ROC曲线为分类器中的自定义内核函数确定更好的参数值。

在单位圆内生成随机的一组点。

定义预测变量。将第一象限和第三象限中的点标记为属于正类别,而将第二象限和第二象限中的点标记为负类。

pred = [X1; X2];

resp = ones(4*n,1);

resp(2*n + 1:end) = -1; % Labels

创建函数mysigmoid.m ,该函数 接受要素空间中的两个矩阵作为输入,并使用S形内核将其转换为Gram矩阵。

使用Sigmoid内核函数训练SVM分类器。使用标准化数据。

设置  gamma = 0.5 ,使用调整后的S形核训练SVM分类器。

SVMModel2 = fitPosterior(SVMModel2);

[~,scores2] = resubPredict(SVMModel2);

计算两个模型的ROC曲线和曲线下面积(AUC)。

绘制ROC曲线。

plot(x1,y1)

hold on

plot(x2,y2)

hold off

title(‘ROC for classification by SVM‘);

dcb04e7a9835b90c162292ae3f202b41.png

将gamma参数设置为0.5的内核函数可提供更好的样本内结果。

比较AUC度量。

auc1

auc2

auc1 =

0.9518

auc2 =

0.9985

伽玛设置为0.5时曲线下的面积大于伽玛设置为1时曲线下的面积。这也证实了伽玛参数值为0.5会产生更好的结果。为了直观比较这两个伽玛参数值的分类性能。

绘制分类树的ROC曲线

加载样本数据。

load fisheriris

列向量  species由三种不同物种的鸢尾花组成。双矩阵  meas 包含对花朵的四种测量类型:萼片长度,萼片宽度,花瓣长度和花瓣宽度。所有度量单位均为厘米。

使用萼片的长度和宽度作为预测变量训练分类树。

根据树预测物种的分类标签和分数 。

[~,score] = resubPredict(Model);

分数是观察值(数据矩阵中的一行)所属类别的后验概率。列  score 对应于所指定的类  ‘ClassNames‘。

由于这是一个多类问题,因此不能仅将其  score(:,2) 作为输入。这样做将无法提供  perfcurve 有关两个阴性类别(setosa和virginica)分数的足够信息。此问题与二元分类问题不同,在二元分类问题中,知道一个类别的分数就足以确定另一个类别的分数。因此,必须提供  perfcurve 将两个否定类的得分纳入考虑范围的函数。一种函数是score(:,2)-max(score(:,1),score(:,3))。

X,默认为假阳性率,  Y,默认为真阳性率(召回率或敏感性)。正类标签为  versicolor。由于未定义否定类别,因此  perfcurve 假设不属于肯定类别的观测值属于一个类别。该函数将其接受为否定类。

suby = 12×2

0 0

0.1800 0.1800

0.4800 0.4800

0.5800 0.5800

0.6200 0.6200

0.8000 0.8000

0.8800 0.8800

0.9200 0.9200

0.9600 0.9600

0.9800 0.9800

?

subnames = 1x2 cell

{‘setosa‘} {‘virginica‘}

在ROC曲线上绘制ROC曲线和最佳工作点。

07574ace80bd251b0331b5a72b4ee9cf.png

找到与最佳工作点相对应的阈值。

T((X==OPTROCPT(1))&(Y==OPTROCPT(2)))

ans = 0.2857

指定  virginica 为否定类,并计算和绘制ROC曲线  versicolor。

同样,必须提供  perfcurve 将否定类分数纳入考量的函数。要使用的函数的一个示例是score(:,2)-score(:,3)。

b25eec696fa8fd6e0a051826bcbdfb92.png

计算ROC曲线的逐点置信区间

加载样本数据。

load fisheriris

仅将前两个变量用作预测变量,来定义二元问题。

pred = meas(51:end,1:2);

定义二进制因变量。

resp = (1:100)‘>50; % Versicolor = 0, virginica = 1

拟合逻辑回归模型。

通过垂直平均(VA)和使用bootstrap进行采样,计算真实正率(TPR)上的逐点置信区间。

‘NBoot‘,1000 将引导样本的数量设置为1000。  ‘XVals‘,‘All‘ 提示  perfcurve 返回  X,  Y和  T 所有分数的Y 值,并X 使用垂直平均将所有值的值(真阳性率)  平均  (假阳性率)。 默认情况下将使用阈值平均来计算置信范围。

绘制逐点置信区间。

errorbar(X,Y(:,1),Y(:,1)-Y(:,2),Y(:,3)-Y(:,1));

74ea0aafc5c22ee115bfb97753ca938a.png

不一定总是可以控制误报率(FPR,X 此示例中的  值)。因此,可能希望通过阈值平均来计算真实正利率(TPR)的逐点置信区间。

绘制置信区间。

figure()

errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));

bb6417553d39630dc8599b2d39611e31.png

指定阈值计算ROC曲线。然后绘制曲线。

figure()

errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));

1112a1d50a76314ae725bb4f5cee6fbb.png

参考文献

最受欢迎的见解

原文:https://www.cnblogs.com/tecdat/p/13648809.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 2/3维图像分割工具箱 2 PSORT粒子群优化工具箱 3 matlab计量工具箱Lesage 4 MatCont7p1 5 matlab模糊逻辑工具箱函数 6 医学图像处理工具箱 7 人工蜂群工具箱 8 MPT3安装包 9 drEEM toolbox 10 DOMFluor Toolbox v1.7 11 Matlab数学建模工具箱 12 马尔可夫决策过程(MDP)工具箱MDPtoolbox 13 国立SVM工具箱 14 模式识别与机器学习工具箱 15 ttsbox1.1语音合成工具箱 16 分数阶傅里叶变换的程序FRFT 17 魔方模拟器与规划求解 18 隐马尔可夫模型工具箱 HMM 19 图理论工具箱GrTheory 20 自由曲线拟合工具箱ezyfit 21 分形维数计算工具箱FracLab 2.2 22 For-Each 23 PlotPub 24 Sheffield大学最新遗传算法工具箱 25 Camera Calibration 像机标定工具箱 26 Qhull(二维三维三角分解、泰森图)凸包工具箱 2019版 27 jplv7 28 MatlabFns 29 张量工具箱Tensor Toolbox 30 海洋要素计算工具箱seawater 31 地图工具箱m_map 32 othercolor配色工具包 33 Matlab数学建模工具箱 34 元胞自动机 35 量子波函数演示工具箱 36 图像局域特征匹配工具箱 37 图像分割graphcut工具箱 38 NSGA-II工具箱 39 chinamap中国地图数据工具箱(大陆地区) 40 2D GaussFit高斯拟合工具箱 41 dijkstra最小成本路径算法 42 多维数据快速矩阵乘法 43 约束粒子群优化算法 44 脑MRI肿瘤的检测与分类 45 Matlab数值分析算法程序 46 matlab车牌识别完整程序 47 机器人工具箱robot-10.3.1 48 cvx凸优化处理工具箱 49 hctsa时间序列分析工具箱 50 神经科学工具箱Psychtoolbox-3-PTB 51 地震数据处理工具CREWES1990版 52 经济最优化工具箱CompEcon 53 基于约束的重构分析工具箱Cobratoolbox 54 Schwarz-Christoffel Toolbox 55 Gibbs-SeaWater (GSW)海洋学工具箱 56 光声仿真工具箱K-Wave-toolbox-1.2.1 57 语音处理工具箱Sap-Voicebox 58 贝叶斯网工具箱Bayes Net Toolbox(BNT) 59 计算机视觉工具箱VFfeat-0.9.21 60 全向相机校准工具箱OCamCalib_v3.0 61 心理物理学数据分析工具箱Palamedes1_10_3 62 生理学研究工具箱EEGLAB 63 磁共振成像处理工具箱CONN 18b 64 matlab 复杂网络工具箱 65 聚类分析工具箱FuzzyClusteringToolbox 66 遗传规划matlab工具箱 67 粒子群优化工具箱 68 数字图像处理工具箱DIPUM Toolbax V1.1.3 69 遗传算法工具箱 70 鱼群算法工具箱OptimizedAFSAr 71 蚁群算法工具箱 72 matlab优化工具箱 73 数据包络分析工具箱 74 图像分割质量评估工具包 75 相关向量机工具箱 76 音频处理工具箱 77 nurbs工具箱 78 Nurbs-surface工具箱 79 grabit数据提取工具箱 80 量子信息工具箱QLib 81 DYNAMO工具箱 82 NEDC循环的整车油耗量 83 PlotHub工具箱 84 MvCAT_Ver02.01 85 Regularization Tools Version 4.1 86 MatrixVB 4.5(含注册) 87 空间几何工具箱 matGeom-1.2.2 88 大数计算工具箱 VariablePrecisionIntegers 89 晶体织构分析工具包 mtex-5.7.0 90 Minimal Paths 2工具箱 91 Matlab数学建模工具箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值