matlab 分类学习工具箱 Classification Learner的使用及导出其生成的图,混淆矩阵confusion matrix的画法

声明:转自https://blog.csdn.net/qq_27914913/article/details/71436838

https://blog.csdn.net/evil_xue/article/details/89765890

在matlab中,既有各种分类器的训练函数,比如“fitcsvm”,也有图形界面的分类学习工具箱,里面包含SVM、决策树、Knn等各类分类器,使用非常方便。接下来讲讲如何使用。

一、使用

1、启动:

点击“应用程序”,在面板中找到“Classification Learner”图标点击即启动,也可以在命令行输入“classificationLearner”,回车,也可启动。如下图:
在这里插入图片描述

2、导入数据:

点击“New Session”,可以从工作空间或文件中导入数据。
(默认数组中最后一列为标签)
选择数据后,导入分为三步:
在这里插入图片描述
第一步,确定你的数据格式,这里导入的数据是一个矩阵,既有样本输入也有对应的输出。比如,我导入的数据data是33000的矩阵,3000个样本,每个样本两个特征值,第三行是每个样本对应的输出。这时我应该选择“Use row as variables”,如果数据格式为30003,则选择“Use column as variables”。
第二步,指定哪一行为“response”即输出响应,在本数据中,第三行为输出,其余为“predictor”。
第三步,是否需要验证,一般都选择交叉验证“Cross Validation”,folds表示几次,自己选择即可。
在这里插入图片描述
确定后,点击“start session”。

3、选择分类器:

如下图,原始数据的散点图会显示出来,由于这数据只有两维,因此可以全部显示在二维坐标中。如果你的数据多于两维,二维坐标系不能完全显示每一维,你可以在右边红圈的X、Y下拉条中选择显示哪两维。
在这里插入图片描述
训练前可以选择训练的模型,点击红圈中的下拉箭头,可以看到各类训练模型,选择一个即可,也可以选择某一类的“ALL”,该类所有模型都会训练一遍。
选好模型后,点击“train”,开始训练。

4、训练结果:

训练结果显示在左边,每个模型训练后的准确率都会显示出来,最高准确率会被标注,下面即为模型的信息。
在这里插入图片描述
点击“Advance”可以设置模型的具体参数。点击“Confusion Matrix”可以查看混淆矩阵等。

点击“Export Model”可以将模型导出到工作空间,这样就可以利用模型来测试新的数据。也可以导出为代码,方便研究。

当后续需要处理的数据量比较大或者需要重复使用时,建议导出代码。

5、样本预测

模型导出到workespace中,命令窗口会显示一下提示信息

这里的T应该值得是一个类,需要自己定义,如果不需要立即保存,可以用另外一种方式进行样本分类预测。

[LABEL,SCORE]=predict(SVM,X)

X是大小为N*P的数字矩阵,其中P是用于训练此模型的预测变量的数量。SCORE代表各个样本的各个特征对此分类的权值,LABEL为预测分类。
——————
样本预测转自:
https://blog.csdn.net/weixin_38645024/article/details/80010714

 

二、导出 Classification Learner生成的图

画出的图有时需要导出放到论文里,但是里面并没有相关按钮。

这时可以使用

hFigs = findall(groot,'type','figure');

 导出图像句柄,再生成图,可以使用saveas来导出pdf或者eps等格式的图片,

saveas(hFigs,'Confusion Matrix.pdf');
  • 注意:如果在工作区出现了一个2X1或者3X1的figure hfigs,是因为界面中同时打开了2张或者3张图,需要将其余不需要的图关闭,仅保留需要处理的一张图即可。对于生成的roc曲线图、Confusion Matrix图处理方式相同。
  • 另外,saveas后出现这种情况:图形对于页面而言太大,将被剪切,是因为:
  • saveas默认是以a4的大小输出的,可以调整图为a3,或者a2,a1,a0,即在saveas之前,输入
  • set(hFigs,'PaperType','a3');

感谢https://blog.csdn.net/yq_forever/article/details/85264920#comments的分享。

但现在仍有一个问题,对于39×39的大型矩阵,只有颜色显示,无法显示具体的结果,是否可以将混淆矩阵中计算得到的具体结果导出?如果直接使用工具箱生成的code来计算结果,得到是所有结果的平均值,也无法获取中间过程结果。

1、以下是matlab中给出的混淆矩阵计算方式

%Compute the confusion matrix using stratified 10-fold cross validation:

clear;
load('fisheriris');
y = species;
X = meas;
order = unique(y); % Order of the group labels
cp = cvpartition(y,'k',10); % Stratified cross-validation

f = @(xtr,ytr,xte,yte)confusionmat(yte,...
classify(xte,xtr,ytr),'order',order);

cfMat = crossval(f,X,y,'partition',cp);
cfMat = reshape(sum(cfMat),3,3)

2、常规混淆矩阵的画法,可以,- 保存混淆矩阵文本文件 - matlab中使用imagesc命令

例如:[mat,order] = confusionmat(actual,predicted);%生成混淆矩阵,或者rand(10,10) %以一个随机生成的矩阵为例

  imagesc(mat);%生成图查看矩阵的结果,可以添加colorbar给出图例
colormap(flipud(gray)); %或者将彩色的图转化为黑白灰的图,higher values are black and lower values are white

but无法获得predicted

注:还可以直接使用plotconfusion函数绘制混淆矩阵,函数的3种用法

plotconfusion(targets,outputs)
plotconfusion(targets,outputs,name)
plotconfusion(targets1,outputs1,name1,targets2,outputs2,name2,...,targetsn,outputsn,namen)

详细参考官方解释https://ww2.mathworks.cn/help/deeplearning/ref/plotconfusion.html?tdsourcetag=s_pcqq_aiomsg

关于混淆矩阵画法的有很多,具体参考:

https://blog.csdn.net/dujiahei/article/details/80789945

https://blog.csdn.net/dujiahei/article/details/80789945

https://blog.csdn.net/xuyingjie125/article/details/78417760

(7.26补充:上述问题在耐心看完全部程序之后解决了,可以在工具箱generate code后输出参数添加response,validationPredictions,或者直接修改导出的模型code)

% Perform cross-validation
partitionedModel = crossval(trainedClassifier.ClassificationKNN, 'KFold', 10);

% Compute validation accuracy
validationAccuracy = 1 - kfoldLoss(partitionedModel, 'LossFun', 'ClassifError');

% Compute validation predictions and scores
[validationPredictions, validationScores] = kfoldPredict(partitionedModel);

%plot confusion matrix
[cfmat,order] = confusionmat(response,validationPredictions);
imagesc(cfmat);
colormap(flipud(gray)); 

另外,在https://www.mathworks.com/matlabcentral/answers/280897-exporting-roc-curve-and-confusion-matrix-computation-code-from-the-classification-learner-app?s_tid=answers_rc1-1_p1_Topic也验证了想法

  • CONFUSION MATRIX

C = confusionmat(response,validationPredictions);
CP = classperf(response,validationPredictions);

  • ROC CURVE:

[X,Y,T,AUC,OPTROCPT,SUBY,SUBYNAMES] = perfcurve(response,validationScores(:,1),'PositiveClass');
figure, plot(X,Y,OPTROCPT(1),OPTROCPT(2),'r*');

 

  • 15
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matlab Classification LearnerMatlab 中的一个机器学习工具箱,可以帮助用户快速建立分类模型。它可以自动选择合适的分类算法,并提供了可视化界面来调整参数和评估模型性能。 ### 回答2: Matlab classification learner是一个强大的机器学习工具,它可以让用户轻松的进行分类问题的解决。它可以作为Matlab的一个插件来使用,也可以独立运行。 classification learner中提供了多种分类算法,包括线性分类、支持向量机、决策树、神经网络等,用户可以根据问题特点选择最适合的算法。同时,classification learner也提供了一系列的评估指标,如准确率、混淆矩阵等,用户可以通过这些指标来评估模型的好坏。 在实际使用中,用户只需按照指导操作即可完成建模过程。首先,用户需要导入数据集,然后选择特征、选择算法、设置参数、训练模型,最后评估模型。用户在整个过程中还可以获得丰富的可视化展示与结果报告,方便用户进行分析和决策。 除了提供一个友好的可视化界面外,classification learner还可以导出代码、模型和向导,支持批量处理数据,也支持三种不同的交叉验证方法。 总之,Matlab classification learner是一个非常强大、易于上手的数据分类和机器学习工具,具有广泛的应用前景,在科研、工业和商业等领域都有很高的实用价值。 ### 回答3: MATLAB分类学习器(Classification Learner)是一个交互式工具,可以用于训练和评估不同类型的分类模型。该工具使用户能够探索采用不同算法的机器学习模型,包括支持向量机、随机森林、朴素贝叶斯和神经网络等多种选择。 其使用过程主要包括以下几个步骤: 1. 加载数据集:将我们需要通过分类学习器进行分类的数据集通过csv、excel、mat等多种形式加载到MATLAB中。 2. 预处理数据:通过对数据集进行预处理,包括数据缺失值填补、数据标准化、特征提取、样本选择等一系列步骤,让数据适合用于机器学习算法进行训练和评估。 3. 训练模型:通过选择合适的算法、调整算法参数、交叉验证等方法训练模型。 4. 评估模型:通过混淆矩阵、ROC曲线、精确度、召回率等指标来评估和比较不同分类模型的性能,找到最优模型。 5. 应用模型:将训练好的模型预测新数据的分类。 与传统编程方式不同,Classification Learner模块是一种可视化编程和交互式分析的方式,能够帮助用户以更快的速度完成分类模型建立与优化。它的使用简单高效,适合初学者或者快速验证实验,不需要深入掌握机器学习算法的原理和代码实现。但是,在实际应用场景中,需要更多的专业知识和经验才能构建更好的分类模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值