private void funcBayesConc(int index, Int64 cantidadTotalBase, DatabaseFunc conn) { double probMayor = -1; string nombreProbMayor = " "; for (int x = 0; x < URLs[index].getCategorias().Count; x++) { double totalCategoria = URLs[index].getCategorias()[x].getCantCoincidencias(); // total de coincidencias de una categoria double cantCategoria = Convert.ToDouble(conn.ObtenerCantidadCategoria(URLs[index].getCategorias()[x].getNombre())); //total de palabras en una categoria double cantFinal = (cantCategoria / cantidadTotalBase) * (totalCategoria / cantCategoria); if (probMayor < cantFinal) { probMayor = cantFinal; nombreProbMayor = URLs[index].getCategorias()[x].getNombre(); } URLs[index].getCategorias()[x].setProbabilidad(Math.Round(cantFinal, 4)); } //Console.WriteLine("URL: {0} \n|| prob: {1} \n|| nom: {2}", URLs[index].getTexto(), Math.Round(probMayor, 4), nombreProbMayor); }
public void BayesConcurrente(ref ProgressBar barForm, ref Label labelForm) { //labelForm.Text = "Ejecutando bayes Con:"; Console.WriteLine("Ejecutando bayes Con:"); Int64 cantidadTotalBase = pgsql.ObtenerCantidadBase(); // obtiene la cantidad de palabras totales que hay en la base de datos //Variables para ayuda visual del usuario int total = URLs.Count; int cambio = -1; int bar = 0; var sw = Stopwatch.StartNew(); for (int i = 0; i < URLs.Count; i += 4) { Parallel.Invoke(() => { DatabaseFunc conn = new DatabaseFunc(); conn.abrirConexion(); funcBayesConc(i, cantidadTotalBase, conn); conn.cerrarConexion(); }, () => { if (i + 1 < URLs.Count) { DatabaseFunc conn = new DatabaseFunc(); conn.abrirConexion(); funcBayesConc(i + 1, cantidadTotalBase, conn); conn.cerrarConexion(); } }, () => { if (i + 2 < URLs.Count) { DatabaseFunc conn = new DatabaseFunc(); conn.abrirConexion(); funcBayesConc(i + 2, cantidadTotalBase, conn); conn.cerrarConexion(); } }, () => { if (i + 3 < URLs.Count) { DatabaseFunc conn = new DatabaseFunc(); conn.abrirConexion(); funcBayesConc(i + 3, cantidadTotalBase, conn); conn.cerrarConexion(); } }); bar = ((i + 1) * 100 / total); if (bar != cambio) { cambio = bar; //barForm.Increment(1); } } if (bar >= 100) { //barForm.Value = 0; Console.WriteLine("Bayesiano concurrente completada!!\nTiempo: " + Math.Round(sw.Elapsed.TotalSeconds / 60, 2) + " minutos"); } }