आपको पहले से ही सही प्रारूप में डेटा मिल गया है; जो कुछ भी बचा है वह एक सीवीआरटीआर ऑब्जेक्ट को चालू करना और अपनी भविष्यवाणी करना है।
रैंडम पेड़ v2.3 के लिए प्रलेखन here पाया जा सकता है। आप CvStatModel::train()
दस्तावेज़ीकरण को भी देखना चाहेंगे, जिसमें वास्तव में CvRTree::train
के लिए अधिकांश पैरामीटर का विवरण है। टॉम ने टिप्पणियों में एक अच्छा पूर्ण उदाहरण का संदर्भ दिया जिसका आपको उपयोग करना चाहिए।
आपके डेटा के साथ, आपको अपने प्रत्येक विशेषता के प्रकार को निर्दिष्ट करने के लिए एक मैट की आवश्यकता होगी। इस मैट में प्रत्येक इनपुट विशेषता के लिए एक पंक्ति है, और आउटपुट प्रकार के लिए एक अतिरिक्त पंक्ति (इसलिए आपके मामले में 16x16x3 + 1 पंक्तियां)।
वैकल्पिक रूप से, आप पेड़ की संख्या, अधिकतम गहराई इत्यादि जैसे पैरामीटर निर्दिष्ट करने के लिए एक सीवीआरटीपीएम्स ऑब्जेक्ट का उपयोग कर सकते हैं। मैं नीचे दिए गए उदाहरण में डिफ़ॉल्ट का उपयोग करता हूं।
यदि आप चाहें, तो आप valIdx और sampleIdx मैट्स में पास कर सकते हैं जो प्रशिक्षण के लिए उपयोग करने के लिए क्रमशः कौन सी विशेषताओं और डेटा पंक्तियों को निर्दिष्ट करते हैं। यह अलग-अलग मैट में लाने के लिए जिमनास्टिक के समूह के बिना चयन प्रशिक्षण/सत्यापन डेटा के लिए उपयोगी हो सकता है।
यहां एक त्वरित उदाहरण है:
#define ATTRIBUTES_PER_SAMPLE (16*16*3)
// Assumes training data (1000, 16x16x3) are in training_data
// Assumes training classifications (1000, 1) are in training_classifications
// All inputs are numerical. You can change this to reflect your data
Mat var_type = Mat(ATTRIBUTES_PER_SAMPLE + 1, 1, CV_8U);
var_type.setTo(Scalar(CV_VAR_NUMERICAL)); // all inputs are numerical
// Output is a category; this is classification, not regression
var_type.at<uchar>(ATTRIBUTES_PER_SAMPLE, 0) = CV_VAR_CATEGORICAL;
// Train the classifier
CvRTrees* rtree = new CvRTrees;
rtree->train(training_data, CV_ROW_SAMPLE, training_classifications,
Mat(), Mat(), var_type);
स्रोत
2017-07-23 00:50:20
http://breckon.eu/toby/teaching/ml/examples/c++/opticaldigits_ex/randomforest.cpp –