中易网

求助关于libsvm的predict方法的具体意义

答案:2  悬赏:50  
解决时间 2021-04-28 15:13
  • 提问者网友:剪短发丝
  • 2021-04-27 19:20
求助关于libsvm的predict方法的具体意义
最佳答案
  • 二级知识专家网友:白日梦制造商
  • 2021-04-27 19:46
题主的问题一是如何使用LIBSVM工具,二是对模式识别、机器学习中的一些概念不清楚。下面以matlab版libsvm为例: 训练命令: model = svmtrain(train_label, train_data, ['libsvm_options']); 测试命令: [predict_label, accuracy, dec_values]...
全部回答
  • 1楼网友:萝莉姐姐鹿小北
  • 2021-04-27 20:31
题主的问题一是如何使用libsvm工具,二是对模式识别、机器学习中的一些概念不清楚。下面以matlab版libsvm为例: 训练命令: model = svmtrain(train_label, train_data, ['libsvm_options']); 测试命令: [predict_label, accuracy, dec_values] = 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%,那说明之前训练的模型是比较好的。当然前提是测试样本也要足够多。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息