public static Clasificador ArmarClasificador(ConjuntoDeDatos datos) { if (datos == null || datos.Filas.Count == 0) { Console.WriteLine("El archivo CSV seleccionado está corrupto o vacío."); PressKey(); return(null); } else { Clasificador clasificador = new Clasificador(datos); return(clasificador); } }
public static ConjuntoDeDatos ArmarConjuntoDeDatos(string[] args) { try { string ruta = args[0]; char delimitador = ','; ConjuntoDeDatos datos = new ConjuntoDeDatos(ruta, delimitador); return(datos); } catch (FileNotFoundException ex) { Console.WriteLine(ex.Message); PressKey(); return(null); } }
public static void SelectCaracteristicas(ConjuntoDeDatos conjuntoDeDatos, Clasificador clasificador, ArbolDecision <object> arbol) { if (arbol == null) { Console.WriteLine("Aún no se ha construido un árbol o el CSV seleccionado está vacio."); } else { //todo corregir nombres de variables List <Pregunta> caracteristicas = new List <Pregunta>(); Console.WriteLine("\nSeleccione caracteristicas:"); for (int i = 0; i < clasificador.Encabezados.Count - 1; i++) { Console.Write("{0}: ", clasificador.Encabezados[i]); string resp = Console.ReadLine(); caracteristicas.Add(new Pregunta(i, resp, clasificador.Encabezados[i])); } List <string> recorridoPreguntasRespuestas = new List <string>(); bool respuestaCarac = false; bool finArbol = false; while (!finArbol) { if (!arbol.EsHoja()) { Pregunta pregunta = (Pregunta)arbol.Dato; recorridoPreguntasRespuestas.Add(pregunta.ToString()); for (int j = 0; j < caracteristicas.Count; j++) { if (pregunta.ToString().Contains(" Mayor o igual a ") && caracteristicas[j].ToString().Contains(" Mayor o igual a ") && pregunta.Columna == caracteristicas[j].Columna) { if (Convert.ToDouble(caracteristicas[j].Valor) >= Convert.ToDouble(pregunta.Valor) && pregunta.Columna == caracteristicas[j].Columna) { respuestaCarac = true; recorridoPreguntasRespuestas.Add("Si"); break; } else { respuestaCarac = false; recorridoPreguntasRespuestas.Add("No"); break; } } else { if (pregunta.Valor == caracteristicas[j].Valor && pregunta.Columna == caracteristicas[j].Columna) { respuestaCarac = true; recorridoPreguntasRespuestas.Add("Si"); break; } else if (pregunta.Valor != caracteristicas[j].Valor && pregunta.Columna == caracteristicas[j].Columna) { respuestaCarac = false; recorridoPreguntasRespuestas.Add("No"); break; } } } switch (respuestaCarac) { case true: arbol = JugarRespuesta("si", arbol); break; case false: arbol = JugarRespuesta("no", arbol); break; } } else { finArbol = true; Dictionary <string, int> etiquetas = (Dictionary <string, int>)arbol.Dato; Console.WriteLine("\nPreguntas y respuestas hechas en base a las caracteristicas brindadas:"); foreach (string item in recorridoPreguntasRespuestas) { Console.WriteLine(item); } Console.WriteLine("\nDatos Encontrados:"); foreach (var hoja in etiquetas) { Console.WriteLine(hoja.Key); } } } } }
static void Main(string[] args) { Titulo(); ArbolDecision <object> arbol = null; Clasificador clasificador = null; ConjuntoDeDatos conjuntoDeDatos = null; int opcion = 0; do { Console.WriteLine(opciones); Console.Write("Seleccione opción: "); opcion = SafeParseOpcion(Console.ReadLine()); while (opcion > 4) { Console.WriteLine("\nOpción no valida."); PressKey(); Console.WriteLine(opciones); Console.Write("Seleccione opción: "); opcion = SafeParseOpcion(Console.ReadLine()); } switch (opcion) { //MÓDULO: ADMINISTRACIÓN case 1: int opcionMenu; do { Console.Clear(); Titulo(); Console.WriteLine(menuAdmin); Console.Write("Seleccione opción: "); opcionMenu = SafeParseOpcion(Console.ReadLine()); while (opcionMenu > 3) { Console.WriteLine("\nOpción no valida."); PressKey(); Console.WriteLine(menuAdmin); Console.Write("Seleccione opción: "); opcionMenu = SafeParseOpcion(Console.ReadLine()); } switch (opcionMenu) { case 1: conjuntoDeDatos = ArmarConjuntoDeDatos(args); clasificador = ArmarClasificador(conjuntoDeDatos); if (clasificador != null) { arbol = ArmarArbol(clasificador); } if (arbol != null) { Console.WriteLine("\n¡Él Árbol se ha generado correctamente!"); PressKey(); } break; case 2: Probar(arbol); PressKey(); break; case 3: Console.Clear(); Titulo(); break; } }while (opcionMenu != 3); break; //MÓDULO: CONSULTA case 2: int opcionMenuConsulta; do { Console.Clear(); Titulo(); Console.WriteLine(menuConsulta); Console.Write("Seleccione opción: "); opcionMenuConsulta = SafeParseOpcion(Console.ReadLine()); while (opcionMenuConsulta > 4) { Console.WriteLine("\nOpción no valida."); PressKey(); Console.WriteLine(menuConsulta); Console.Write("Seleccione opción: "); opcionMenuConsulta = SafeParseOpcion(Console.ReadLine()); } switch (opcionMenuConsulta) { case 1: ImprimirArbol(arbol); PressKey(); break; case 2: SelectCaracteristicas(conjuntoDeDatos, clasificador, arbol); PressKey(); break; case 3: ImprimirProfundidadArbol(arbol); PressKey(); break; case 4: Console.Clear(); Titulo(); break; } } while (opcionMenuConsulta != 4); break; case 3: Jugar(arbol); PressKey(); break; } } while (opcion < 4); Timer(3000); }