Opencv 机器学习功能的响应?

Opencv 机器学习功能的响应?,opencv,machine-learning,svm,Opencv,Machine Learning,Svm,在执行任何已解释的机器学习功能时。它们都遵循cvStatModel的格式 例如,NormalBayes的列车功能通过以下方式实现: CvNormalBayesClassifier::train(const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), bool update=false ) 文档告诉您查看cvStatModel以

在执行任何已解释的机器学习功能时。它们都遵循cvStatModel的格式

例如,NormalBayes的列车功能通过以下方式实现:

CvNormalBayesClassifier::train(const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), bool update=false )
文档告诉您查看cvStatModel以了解有关参数的详细信息

我不明白的是,
的回答应该是什么?我知道
trainData
是我们用一大堆单词来训练系统的数据,但是在回答中应该放些什么呢

在单词袋的示例中,响应元素的处理如下:

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

NormalBayesClassifier classifier;
classifier.train(trainingData, labels);
因此,在这里,图像的文件名被转换为双精度文件名,并用作
responses
元素


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

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

在您的示例中,atof用于将目录名转换为表示类别的唯一编号,因为培训示例可能按文件夹(文件夹cats、dogs、bicycles等)排序