机器学习函数的响应?

在研究这里解释的任何机器学习函数时,它们都遵循cvStatModel的格式。

例如,NormalBayes的训练函数通过以下方式实现:

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

文档建议查看cvStatModel以了解参数的详细信息。

我不理解的是responses应该接受什么?我知道trainData是我们用来训练系统的词袋数据,但responses应该放什么呢?

在词袋的一个示例中,responses元素的处理如下:

float label=atof(entryPath.filename().c_str());labels.push_back(label);NormalBayesClassifier classifier;classifier.train(trainingData, labels);

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

我不理解这一点,并且对此感到困惑。能有人解释一下responses元素应该接受什么吗?为什么在上面的例子中使用atof


回答:

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

在你的例子中,atof用于将目录名转换为一个独特的数字,代表类别,因为训练示例可能按文件夹排序(例如,猫、狗、自行车等文件夹)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注