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);

272ca34edd2c5f568f8f3eff15a51061.png

假设您测量了一朵鸢尾花的萼片和花瓣,并且需要根据这些测量值确定它所属的品种。解决此问题的一种方法称为判别分析。

线性判别分析和二次判别分析

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);

c285ccabf3f8da29be3d3a7029b6b859.png

在 150 个训练观测值中,有 20% 的(即 30 个)观测值被线性判别函数错误分类。您可以将错误分类的点画上 X 来查看是哪些观测值。

figure(f)

bad = ~strcmp(ldaClass,species);

hold on;

plot(meas(bad,1), meas(bad,2), 'kx');

hold off;

d203ef5e303633651f7532abb8924571.png

该函数将平面分成几个由直线分隔的区域,并为不同的品种分配了不同的区域。要可视化这些区域,一种方法是创建 (x,y) 值网格,并将分类函数应用于该网格。

[x,y] = meshgrid(4:.1:8,2:.1:4.5);

<
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值