【问题标题】:How to obtain SVM accuracy?如何获得 SVM 精度?
【发布时间】:2015-02-12 06:21:42
【问题描述】:

我有一个 SVM 正在运行以对大量特征向量进行分类。它已经用大约 100 万个特征向量进行了训练。为此,我使用 OpenCV SVM 类。如何衡量经过训练的 SVM 的准确度?

this page 我读到:

>>> pred_lbl, pred_acc, pred_val = svm_predict(c_test,d_test,m) Accuracy = 76.6667% (46/60) (classification)

即使已经使用了 libsvm,我认为 OpenCV 只是包装了 libsvm 类。我对吗?我的意思是,OpenCV 中可能也有这样的返回值。

正如您在网页上看到的那样,他运行网格搜索以获得最佳 svm 参数。当准确率最大化时获得最佳参数集(p_acc[0])。

或者我是否必须手动标记所有特征向量以获得某种可以估计准确度的基本事实?这将是大量的工作,并希望避免它。

我在这里也看到了一些类似的问题,但我的问题没有明确的答案。提前致谢!

【问题讨论】:

  • “我认为 OpenCV 只是包装了 libsvm 类”——更多的是基于原始 libSVM 代码的重写
  • “我必须手动标记所有特征向量吗” - 它肯定需要适当的标签进行训练。你现在使用什么样的标签?
  • 基本上我从图像中获取特征向量并用kmeans对它们进行聚类。我的算法与集群一起被标记为 1 或 2 类。我想获得某种在线学习,并且 svm 的准确性也将衡量我的自我标记性能。
  • 只是说:从 kmeans / er 或任何无监督方法获得的标签与“基本事实”相去甚远
  • ok ;) 我至少愿意通过 85% 的考试。标记。到目前为止,结果看起来相当不错,但我必须测量 acc。首先。

标签: python opencv svm


【解决方案1】:

您通过保留一些数据(不将其用于训练)并衡量模型在该数据上的性能来衡量准确性。

【讨论】:

  • 啊,好吧,“测量模型在该数据上的性能”将被手工标记为基本事实数据?
  • 如果您不想再次训练,您也可以创建新的性能测量数据。但是在训练期间保留数据可以让您自动衡量性能并重新训练
  • 您希望将“train”和“test”集分开以避免偏差。
  • 您希望非常非常确定测试数据不包括在训练集中,即使是重复的。
  • 这只是一种自动保留机制。
猜你喜欢
  • 2015-11-02
  • 2019-02-12
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多