错误分类错误率和准确性

时间:2012-04-01 18:34:39

标签: classification matlab pattern-recognition

scatter plot下面是贝叶斯分类器的Matlab代码,它将任意数字分类到它们的类中。

 training = [3;5;17;19;24;27;31;38;45;48;52;56;66;69;73;78;84;88]; 
     target_class = [0;0;10;10;20;20;30;30;40;40;50;50;60;60;70;70;80;80];  

      test = [1:2:90]'; 
     class  = classify(test,training, target_class, 'diaglinear');  % Naive Bayes classifier 
 [test class]

(a)如果有人可以提供代码片段来计算错误分类和准确性的贝叶斯错误。我查看了有关[class,err]=classify(...)的matlab文档。但是,我无法遵循它并且工作。

(b)另外,如何绘制散点图和直方图,表明属于不同类别的数据点的数量?我尝试了scatter(training(:),target_class(:)),但它提供了别的东西!

(c)如何使用crossvalidate()?一个例子真的会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

(a)要计算错误分类错误,您还需要了解test_class。然后,您可以将输出class变量与test_class进行比较。

misserr = sum(test_class~=class)./numel(test_class);

如果您没有测试类,则第二个输出参数err将为您提供在训练集上应用生成模型的错误分类错误的估计值。

(b)如果训练数据集中只有2个因素(列),您可以这样做

scatter(training(:,1),training(:,2),[],target_class)

相应地,您可以将SCATTER3用于3个因素。

对于更多因素,您可以使用PRINCOMP执行主成分分析,并绘制2或3个第一个成分。

更新:我错过了你实际上只有一个因素。您的分散语句可以很好地工作。你为什么不喜欢它?您还可以以不同方式为点添加颜色,并将target_class添加为第四个参数。您也可以交换第一个和第二个参数,以便更好地代表。

(c)您可以使用统计工具箱中的CROSSVALCVPARTITION函数执行简历。有关有用的示例,请参阅文档。

这是另一个SO问题 - How to use a cross validation test with MATLAB?,几乎没有其他选项。