首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找测试数据的分类率

查找测试数据的分类率
EN

Stack Overflow用户
提问于 2012-12-07 11:39:43
回答 1查看 1.9K关注 0票数 1

我需要使用KNN search对测试数据进行分类,并找到分类率。

以下是matlab代码:例如:

代码语言:javascript
复制
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    load fisheriris
    x = meas(:,3:4); % x =all training data

    y = [5 1.45;6 2;2.75 .75]; % y =3 testing data 

    [n,d] = knnsearch(x,y,'k',10);   % find the 10 nearest neighbors to three testing data

    for b=1:3
    tabulate(species(n(b,:)))
    end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

结果显示在命令窗口中:

代码语言:javascript
复制
tabulate(species(n(1,:)))
       Value    Count   Percent
   virginica        2     20.00%
  versicolor        8     80.00%

tabulate(species(n(2,:)))
      Value    Count   Percent
  virginica       10    100.00%

tabulate(species(n(3,:)))
       Value    Count   Percent
  versicolor        7     70.00%
      setosa        3     30.00%

若测点为杂色,则第一、三个测点的分类结果正确,第二个测点的分类错误,分类率为2/3 x100%=66.7%。

有没有想法修改matlab代码以自动查找分类率并将结果保存到Workspace中?

EN

回答 1

Stack Overflow用户

发布于 2012-12-07 21:37:43

通常,您可以使用以下命令来查找正确预测的数量

代码语言:javascript
复制
sum(predicted_class == true_class)        % For numerical data
sum(strcmp(predicted_class, true_class))  % For cellstrings

或按百分比表示

代码语言:javascript
复制
100 * sum(predicted_class == true_class) / length(predicted_class)

fisheriris的情况下,真正的类应该是species。对于您构建的数据,它将是

代码语言:javascript
复制
true_classes = [cellstr('versicolor'); cellstr('versicolor'); cellstr('versicolor')]

在最近邻居的情况下,真正的类将是最近邻居的类。对于单个邻居:

代码语言:javascript
复制
 predicted_class = species(n)

其中,n[n, d] = knnsearch(x, y)找到的最近邻居的索引。

代码语言:javascript
复制
sum(strcmp(predicted_class, true_class))
% result: 1

当您只使用一个邻居时,这确实是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13756551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档