【问题标题】:Responses of machine learning functions?机器学习函数的响应?
【发布时间】:2012-11-20 11:56:19
【问题描述】:

通过here 解释的任何机器学习功能时。它们都遵循 cvStatModel 的格式。

例如NormalBayes的train函数是这样实现的:

CvNormalBayesClassifier::train(const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), bool update=false )

文档告诉您查看 cvStatModel 以获取有关参数的详细信息。

我不明白responses 应该带什么?我知道trainData 是我们使用词袋训练系统所使用的数据,但是在响应中放置什么?

在关于词袋的示例中,响应元素的处理方式如下:

float label=atof(entryPath.filename().c_str());
labels.push_back(label);

NormalBayesClassifier classifier;
classifier.train(trainingData, labels);

所以这里图像的文件名被转换为双精度并用作responses 元素。

我不明白这一点,对此感到困惑。有人可以解释一下responses 元素应该采用什么吗?为什么在上面的例子中使用atof

【问题讨论】:

    标签: opencv machine-learning svm


    【解决方案1】:

    这些模型是有监督的机器学习技术,这意味着训练模型不仅需要训练数据(即测量向量),还需要与每个样本相关联的标签(或连续值)。例如,如果您尝试检测包含猫的图像,您有一个训练集,例如,500 个不包含猫的图像和 500 个包含猫的图像。您计算所有 1000 张图像的描述符,并为每个类别分配一个数字(按照惯例,“非猫”为 -1,“猫”为 1)。然后,响应将是 1000x1 整数的矩阵,前 500值为 -1,而其余的值为 1。

    在您的示例中,atof 用于将目录名称转换为唯一编号,表示类别,因为训练示例可能按文件夹排序(文件夹猫、狗、自行车等)。

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 2018-08-29
      • 2020-06-18
      • 2018-10-19
      • 2023-02-25
      • 1970-01-01
      相关资源
      最近更新 更多