Ejemplo n.º 1
0
        public static ArbolDecision <object> ArmarArbol(Clasificador clasificador)
        {
            if (clasificador != null)
            {
                ArbolDecision <object> arbolBinario = new ArbolDecision <object>();
                arbolBinario.MapArbol(clasificador);

                return(arbolBinario);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 2
0
        public ArbolDecision <T> MapArbol(Clasificador clasificador)
        {
            bool datosEnd = false;

            while (!datosEnd)
            {
                if (Dato == null)
                {
                    Dato = clasificador.obtenerPregunta();
                }

                //invierto los datos del clasificador para que en el árbol las respuestas positivas vayan a la derecha.
                Clasificador hijoDer = new Clasificador(clasificador.obtenerDatosIzquierdo());
                //Si es hoja, almaceno las etiquetas
                if (hijoDer.crearHoja() && HijoDerecho == null)
                {
                    HijoDerecho = new ArbolDecision <T>();
                    Dictionary <string, int> itemHoja = hijoDer.obtenerDatoHoja();
                    HijoDerecho.Dato = itemHoja;
                    datosEnd         = true;
                }
                //Si no es una hoja almaceno pregunta y vuelvo a llamar al método y pregunto de vuelta.
                else
                {
                    if (HijoDerecho == null)
                    {
                        HijoDerecho      = new ArbolDecision <T>();
                        HijoDerecho.Dato = hijoDer.obtenerPregunta();
                        HijoDerecho.MapArbol(hijoDer);
                    }
                    else
                    {
                        datosEnd = true;
                    }
                }

                Clasificador hijoIzq = new Clasificador(clasificador.obtenerDatosDerecho());
                if (hijoIzq.crearHoja() && HijoIzquierdo == null)
                {
                    HijoIzquierdo = new ArbolDecision <T>();
                    Dictionary <string, int> itemHoja = hijoIzq.obtenerDatoHoja();
                    HijoIzquierdo.Dato = itemHoja;
                    datosEnd           = true;
                }
                else
                {
                    //Si no es una hoja vuelvo a llamar al método y pregunto de vuelta.
                    if (HijoIzquierdo == null)
                    {
                        HijoIzquierdo      = new ArbolDecision <T>();
                        HijoIzquierdo.Dato = hijoIzq.obtenerPregunta();
                        HijoIzquierdo.MapArbol(hijoIzq);
                    }
                    else
                    {
                        datosEnd = true;
                    }
                }
            }

            return(this);
        }