Beispiel #1
0
 def predecirPunto(self):
     self.txtTest.clear()
     mipunto = list()
     if self.hayUnNumero():
         mipunto.append(float(self.linePuntoX.text()))
         mipunto.append(float(self.linePuntoY.text()))
         #puntosDeEntrenamiento = self.datos.obtenerDatosEntrenamiento(self.porcentajeEntrenamiento)
         #puntosDeTest = self.datos.obtenerDatosTest(self.porcentajeEntrenamiento)
         for i in range(1, 11):
             loskvecinos = vecinos(self.datos.datosCompletos, mipunto, i)
             #print("Para " + str(i) + " vecinos sus vecinos más cercanos son:")
             #print(loskvecinos)
             claseDelPunto = prediccion(mipunto, loskvecinos)
             #print("La clase predicha fue " + claseDelPunto)
             self.txtTest.insertPlainText(
                 "Con " + str(i) + " vecinos, la clase predicha fue " +
                 claseDelPunto + "\n")
         #self.archivo.datosDeEntrenamiento(self.porcentajeEntrenamiento)
         #pyplot.plot(self.archivo.datosEntrenamientoX,self.archivo.datosEntrenamientoY,'go')
         #pyplot.show()
     else:
         tipo = 'Critical'
         titulo = 'Error'
         mensaje = 'No has ingresado un punto válido'
         detalles = 'Las coordenadas ingresadas no son válidas'
         self.mostrarError(tipo, titulo, mensaje, detalles)
Beispiel #2
0
    def hiloTestearModeloUsuario(self, progress_callback):

        self.resultadosTestUsuario = list()
        k = self.obtenerValorDeK()
        total = k * 10 * len(
            self.datos.obtenerDatosTest(self.porcentajeEntrenamiento))
        progreso = 0

        listadedatos = []
        for i in range(1, k + 1):
            listadedatos.append(0)

        for i in range(1, 11):
            self.datos.aleatorizar()
            puntosDeEntrenamiento = self.datos.obtenerDatosEntrenamiento(
                self.porcentajeEntrenamiento)
            puntosDeTest = self.datos.obtenerDatosTest(
                self.porcentajeEntrenamiento)
            for puntoDeTest in puntosDeTest:
                loskvecinos = vecinos(puntosDeEntrenamiento, puntoDeTest, k)
                for j in range(1, k + 1):
                    progreso = progreso + 1
                    claseDelPunto = prediccion(puntoDeTest, loskvecinos[0:j])
                    if (claseDelPunto == puntoDeTest[-1]):
                        listadedatos[j - 1] = listadedatos[j - 1] + 1
                    n = int((progreso * 100) / total)
                    progress_callback.emit(n)

        puntosDeTest = self.datos.obtenerDatosTest(
            self.porcentajeEntrenamiento)
        for i in range(0, k):
            listadedatos[i] = (listadedatos[i] /
                               (10 * len(puntosDeTest))) * 100
        for i in range(1, k + 1):
            self.resultadosTestUsuario.append((i, listadedatos[i - 1]))
Beispiel #3
0
    def hiloTestearModeloMetodo(self, progress_callback):

        self.resultadosTestMetodo = list()
        aciertos = 0
        totalElementos = 0
        totalDeTests = 10
        if self.laRaiz:
            k = self.kRaiz
        else:
            k = self.kMetodo
        total = len(self.datos.obtenerDatosTest(
            self.porcentajeEntrenamiento)) * totalDeTests
        for i in range(1, totalDeTests + 1):
            self.datos.aleatorizar()
            puntosDeEntrenamiento = self.datos.obtenerDatosEntrenamiento(
                self.porcentajeEntrenamiento)
            puntosDeTest = self.datos.obtenerDatosTest(
                self.porcentajeEntrenamiento)

            for puntoDeTest in puntosDeTest:
                loskvecinos = vecinos(puntosDeEntrenamiento, puntoDeTest, k)
                claseDelPunto = prediccion(puntoDeTest, loskvecinos)
                totalElementos = totalElementos + 1
                if (claseDelPunto == puntoDeTest[-1]):
                    aciertos = aciertos + 1
                progreso = totalElementos
                n = int((progreso * 100) / total)
                progress_callback.emit(n)
        porcentajeDeAciertos = (aciertos / totalElementos) * 100
        self.resultadosTestMetodo.append((k, porcentajeDeAciertos))
Beispiel #4
0
    def hiloTestearModeloUsuario(self, progress_callback):
        puntosDeEntrenamiento = self.datos.obtenerDatosEntrenamiento(
            self.porcentajeEntrenamiento)
        puntosDeTest = self.datos.obtenerDatosTest(
            self.porcentajeEntrenamiento)

        self.resultadosTestUsuario = list()
        k = self.obtenerValorDeK() + 1
        for i in range(1, k + 1):
            aciertos = 0
            totalElementos = 0
            #TODO: mostrar en una tabla los resultados, por ejemplo
            #clasesPredichas = list()
            #clasesReales = list()
            for puntoDeTest in puntosDeTest:
                loskvecinos = vecinos(puntosDeEntrenamiento, puntoDeTest, i)
                claseDelPunto = prediccion(puntoDeTest, loskvecinos)
                totalElementos = totalElementos + 1
                if (claseDelPunto == puntoDeTest[-1]):
                    aciertos = aciertos + 1
            porcentajeDeAciertos = (aciertos / totalElementos) * 100
            self.resultadosTestUsuario.append((i, porcentajeDeAciertos))
            #self.progress_fn(i,k)
            n = int((i * 100) / k)
            progress_callback.emit(n)
Beispiel #5
0
    def predecirPunto(self):
        self.txtTest.clear()

        mipunto = list()
        mipunto.append(float(self.linePuntoX.text()))
        mipunto.append(float(self.linePuntoY.text()))

        #puntosDeEntrenamiento = self.datos.obtenerDatosEntrenamiento(self.porcentajeEntrenamiento)
        #puntosDeTest = self.datos.obtenerDatosTest(self.porcentajeEntrenamiento)
        for i in range(1, 11):
            loskvecinos = vecinos(self.datos.datosCompletos, mipunto, i)
            #print("Para " + str(i) + " vecinos sus vecinos más cercanos son:")
            #print(loskvecinos)
            claseDelPunto = prediccion(mipunto, loskvecinos)
            #print("La clase predicha fue " + claseDelPunto)
            self.txtTest.insertPlainText("Con " + str(i) +
                                         " vecinos, la clase predicha fue " +
                                         claseDelPunto + "\n")
Beispiel #6
0
    def hiloCalcularKElbow(self, progress_callback):
        puntosDeEntrenamiento = self.datos.obtenerDatosEntrenamiento(
            self.porcentajeEntrenamiento)
        puntosDeTest = self.datos.obtenerDatosTest(
            self.porcentajeEntrenamiento)
        raiz = self.calcularKRaiz()
        self.resultadosTestMetodo = list()
        aciertos = 0
        totalElementos = 0
        k = 1
        mejorK = 1
        fin = False
        mejorValor = 0
        j = 0

        while (not fin):
            progress_callback.emit(k)
            aciertos = 0
            totalElementos = 0
            for puntoDeTest in puntosDeTest:
                loskvecinos = vecinos(puntosDeEntrenamiento, puntoDeTest, k)
                claseDelPunto = prediccion(puntoDeTest, loskvecinos)
                totalElementos = totalElementos + 1
                if (claseDelPunto == puntoDeTest[-1]):
                    aciertos = aciertos + 1
            porcentajeDeAciertos = (aciertos / totalElementos) * 100
            self.resultadosTestMetodo.append((k, porcentajeDeAciertos))
            #¹print('k' + str(k) + 'j' + str(j) + 'raiz' + str(raiz))
            if (porcentajeDeAciertos > mejorValor):
                mejorValor = porcentajeDeAciertos
                mejorK = k
                j = 0
            else:
                j = j + 1
            if ((j > (raiz / 2)) or (k > raiz)):
                fin = True
            else:
                k = k + 1
        #for resultado in resultados:
        #self.txtMejorK.insertPlainText("Con K = " + str(resultado[0]) + ", la eficacia fue de " + "{:.2f}".format(resultado[1]) + "% \n")
        self.kMetodo = mejorK
Beispiel #7
0
    def hiloTestearModeloMetodo(self, progress_callback):
        puntosDeEntrenamiento = self.datos.obtenerDatosEntrenamiento(
            self.porcentajeEntrenamiento)
        puntosDeTest = self.datos.obtenerDatosTest(
            self.porcentajeEntrenamiento)

        self.resultadosTestMetodo = list()
        aciertos = 0
        totalElementos = 0
        k = self.kDeTest
        total = len(puntosDeTest)
        for puntoDeTest in puntosDeTest:
            loskvecinos = vecinos(puntosDeEntrenamiento, puntoDeTest, k)
            claseDelPunto = prediccion(puntoDeTest, loskvecinos)
            totalElementos = totalElementos + 1
            if (claseDelPunto == puntoDeTest[-1]):
                aciertos = aciertos + 1
            progreso = totalElementos
            n = int((progreso * 100) / total)
            progress_callback.emit(n)
        porcentajeDeAciertos = (aciertos / totalElementos) * 100
        self.resultadosTestMetodo.append((k, porcentajeDeAciertos))