classification - 误分类错误率和准确率

标签 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) 如果有人可以提供用于计算错误分类和准确性的贝叶斯误差的代码片段。我浏览了matlab关于[class,err]=classify(...)的文档。但是,我无法遵循它并工作。

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

(c) 如何使用 crossvalidate()?一个例子确实会有帮助。谢谢。

最佳答案

(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 个第一成分。

更新:我错过了你实际上只有一个因素。你的 scatter 语句可以很好地工作。你为什么不喜欢它?您还可以添加 target_class 作为第四个参数,对点进行不同的着色。您还可以交换第一个和第二个参数以获得更好的表示。

(c) 您可以使用 CROSSVAL 执行 CV和 CVPARTITION统计工具箱中的函数。请参阅文档以获取有用的示例。

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

关于classification - 误分类错误率和准确率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9967089/

相关文章:

python - 值错误 : operands could not be broadcast together with shapes in Naive bayes classifier

machine-learning - 垃圾邮件分类 - 机器学习

linux - 如何更改 MATLAB 中特定字符串前面的数字

c++ - 检查是否使用 MATLAB mex 编译

opencv - 使用 openCV 检测由红外光突出显示的图案

pattern-recognition - 如何有效地比较两个句子并说两者相等

r - 如何重现H2o GBM类概率计算

machine-learning - 准确率或召回率更重要?

matlab - 如何减少for循环消耗的时间?

image-processing - ROC曲线交叉验证