求助关于libsvm的predict方法的具体意义
题主的问题一是如何使用LIBSVM工具,二是对模式识别、机器学习中的一些概念不清楚。下面以matlab版libsvm为例:训练命令:model = svmtrain(train_label, train_data, );测试命令: = svmpredict(test_label, test_data, model); 0. “使用svm-train训练完成后,将一行数据作为测试样本,运行svm-predict。测试数据的首位label值我是随意写的,结果predict出来一个accuracy=0% (0/1),如果我修改首位label值为训练样本中的某类别编号,则accuracy=100% (1/1)。”首先, 如果测试样本的label在训练样本里没出现过,那accuracy肯定是0. 想想这个类别之前都没训练学习过,机器怎么可能把它预测出来。其次,用训练样本当作测试样本,这个意义不大。即使在训练样本上测试的结果是100%,这也并不说明问题,更可能的是过拟合。1. “我想要知道单个测试样本最有可能属于哪一个类别(训练时用的是多类别分类),该如何做?”单个样本预测的类别,就是上述测试命令中的返回值predict_label,它是一个列向量,第i个元素代表第i个测试样本的预测类别。2. “我看见不少人在训练完成后,用另一个样本集做predict,返回一个介于0%和100%之间的accuracy值。我想这个值只能解释为测试样本中正确的类别编号所占的百分比,但这又有何意义?这个accuracy到底是什么意义?”这个accuracy非常有意义。想想你训练了一个模型,如何评价这个模型的好坏?当然是找一组新的测试数据来进行预测,如果预测的准确率非常高,100%,那说明之前训练的模型是比较好的。当然前提是测试样本也要足够多。
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 智叔|很多家长还在整箱买:谈谈关于牛奶的17个真相警惕这些列入黑名单的“假牛奶”
- 关于微信小程序的思考:运营者该何去何从
- 关于人工智能虚拟人的一些问题
- 知乎上关于人生经验的介绍是否可能对青少年造成潜在危害
- 写下我关于做数据分析专员的困惑和各位的建议是
- 非物质文化遗产|市北文体中心一场关于“非遗”的盛会…