本文主要是介绍matlab fitcnb,分类- MATLAB Simulink Example- MathWorks 中国,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Fisher 鸢尾花数据
Fisher 鸢尾花数据包括 150 个鸢尾花标本的萼片长度、萼片宽度、花瓣长度和花瓣宽度的测量值。三个品种各有 50 个标本。加载数据,查看萼片测量值在不同品种间有何差异。您可以使用包含萼片测量值的两列。
load fisheriris
f = figure;
gscatter(meas(:,1), meas(:,2), species,'rgb','osd');
xlabel('Sepal length');
ylabel('Sepal width');
N = size(meas,1);
假设您测量了一朵鸢尾花的萼片和花瓣,并且需要根据这些测量值确定它所属的品种。解决此问题的一种方法称为判别分析。
线性判别分析和二次判别分析
fitcdiscr 函数可以使用不同类型的判别分析进行分类。首先使用默认的线性判别分析 (LDA) 对数据进行分类。
lda = fitcdiscr(meas(:,1:2),species);
ldaClass = resubPredict(lda);
带有已知类标签的观测值通常称为训练数据。现在计算再代入误差,即针对训练集的误分类误差(误分类的观测值所占的比例)。
ldaResubErr = resubLoss(lda)
ldaResubErr =
0.2000
您还可以计算基于训练集的混淆矩阵。混淆矩阵包含有关已知类标签和预测类标签的信息。通常来说,混淆矩阵中的元素 (i,j) 是已知类标签为 i、预测类标签为 j 的样本的数量。对角元素表示正确分类的观测值。
figure
ldaResubCM = confusionchart(species,ldaClass);
在 150 个训练观测值中,有 20% 的(即 30 个)观测值被线性判别函数错误分类。您可以将错误分类的点画上 X 来查看是哪些观测值。
figure(f)
bad = ~strcmp(ldaClass,species);
hold on;
plot(meas(bad,1), meas(bad,2), 'kx');
hold off;
该函数将平面分成几个由直线分隔的区域,并为不同的品种分配了不同的区域。要可视化这些区域,一种方法是创建 (x,y) 值网格,并将分类函数应用于该网格。
[x,y] = meshgrid(4:.1:8,2:.1:4.5);
<这篇关于matlab fitcnb,分类- MATLAB Simulink Example- MathWorks 中国的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!