c++ opencv decision-tree random-forest

c++ - OpenCV-Ejemplo de bosque aleatorio



decision-tree random-forest (1)

Ya tienes los datos en el formato correcto; todo lo que queda es crear una instancia de un objeto CvRTrees y realizar su predicción.

La documentación para Random Trees v2.3 se puede encontrar here . También querrá consultar la documentación de CvStatModel::train() , que en realidad tiene la descripción de la mayoría de los parámetros para CvRTree::train . Tom hizo referencia a un buen ejemplo completo en los comentarios que debes usar.

Junto con sus datos, necesitará un Mat para especificar el tipo de cada uno de sus atributos. Este tapete tiene una fila para cada atributo de entrada y una fila adicional para el tipo de salida (por lo tanto, 16x16x3 + 1 filas, en su caso).

Opcionalmente, puede usar un objeto CvRTParams para especificar parámetros como el número de árboles, la profundidad máxima, etc. Yo uso los valores predeterminados en el siguiente ejemplo.

Si lo desea, puede pasar las alfombras valIdx y sampleIdx que especifican qué atributos y qué filas de datos, respectivamente, deben utilizar para la capacitación. Esto podría ser útil para seleccionar los datos de entrenamiento / validación sin hacer un montón de gimnasia para obtenerlos en colchonetas separadas.

Aquí hay un ejemplo rápido:

#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);

¿Alguien tiene algún ejemplo que use Random Forests con la API API 2.3.1 y no el cvMat?

Básicamente tengo datos de Matrix Mat que constan de 1000 filas con elementos de 16x16x3 y Matrix Mat responde a una matriz de 1000x1 que contiene a qué clase pertenece cada fila. Me gustaría ejecutar el algoritmo de bosque aleatorio en esto.