@@ -636,9 +636,18 @@ class TrainDataImpl : public TrainData
636
636
vtypes[ninputvars] = VAR_CATEGORICAL;
637
637
}
638
638
639
- Mat (nsamples, noutputvars, CV_32F, &allresponses[0 ]).copyTo (tempResponses);
640
- setData (tempSamples, ROW_SAMPLE, tempResponses, noArray (), noArray (),
641
- noArray (), Mat (vtypes).clone (), tempMissing);
639
+ // If there are responses in the csv file, save them. If not, responses matrix will contain just zeros
640
+ if (noutputvars != 0 ){
641
+ Mat (nsamples, noutputvars, CV_32F, &allresponses[0 ]).copyTo (tempResponses);
642
+ setData (tempSamples, ROW_SAMPLE, tempResponses, noArray (), noArray (),
643
+ noArray (), Mat (vtypes).clone (), tempMissing);
644
+ }
645
+ else {
646
+ Mat zero_mat (nsamples, 1 , CV_32F, Scalar (0 ));
647
+ zero_mat.copyTo (tempResponses);
648
+ setData (tempSamples, ROW_SAMPLE, tempResponses, noArray (), noArray (),
649
+ noArray (), noArray (), tempMissing);
650
+ }
642
651
bool ok = !samples.empty ();
643
652
if (ok)
644
653
std::swap (tempNameMap, nameMap);
0 commit comments