背景
我回答这个问题是因为我需要处理这个内容,而这样的问题是一个很好的借口。感谢您提供这个机会。
我使用了内置的Fisher Iris数据:
http://archive.ics.uci.edu/ml/datasets/Iris
我还使用了Mathworks教程中的代码片段进行分类和plotroc绘图:
问题描述
在对“setosa”进行分类时,领域内有更清晰的边界,但“versicoloir”与“virginica”之间存在重叠。这是一个二维图,一些其他信息已被丢弃以产生它。在分类边界中的不确定性在这种情况下是有用的。
load fisheriris
figure(1); clf
gscatter(meas(:,1), meas(:,2), species,'rgb','osd');
xlabel('Sepal length');
ylabel('Sepal width');
axis equal
axis tight
title('Raw Data')
![数据显示](https://istack.dev59.com/Hv4EE.webp)
分析
假设我们想确定定义“维吉尼亚”与“非维吉尼亚”的线性分类器的界限。我们可以考虑其他类别的“自我 vs. 非自我”,但它们会有自己的。
现在,我们制作一些线性判别式并为它们绘制 ROC 曲线:
load fisheriris
load iris_dataset
irisInputs=meas(:,1:2)';
irisTargets=irisTargets(3,:);
ldaClass1 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'linear')';
ldaClass2 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'diaglinear')';
ldaClass3 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'quadratic')';
ldaClass4 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'diagquadratic')';
ldaClass5 = classify(meas(:,1:2),meas(:,1:2),irisTargets,'mahalanobis')';
myinput=repmat(irisTargets,5,1);
myoutput=[ldaClass1;ldaClass2;ldaClass3;ldaClass4;ldaClass5];
whos
plotroc(myinput,myoutput)
以下是结果,尽管需要删除对角线上的重复副本:
![enter image description here](https://istack.dev59.com/ViBoP.webp)
您可以注意到代码中我将“myinput”和“myoutput”堆叠在一起并将它们作为输入馈送到“plotroc”函数中。您应该将分类器的结果作为目标值和实际值,并且可以获得类似的结果。这比较了您的分类器的实际输出与目标值的理想输出。那些是plotroc的输入。
因此,这将为您提供“内置”的ROC,这对于快速工作很有用,但不会使您学习每个步骤的详细信息。
此时您可以问的问题包括:
- 哪个分类器最好? 在这种情况下如何确定最佳?
- 分类器的凸包是什么? 是否有一些混合分类器比任何纯方法更具信息性? 也许是Bagging?