Biblioteca CPython "VKF" para aprendizaje autom谩tico

En una publicaci贸n anterior del autor , se describi贸 un servidor web para realizar experimentos con el m茅todo VKF de aprendizaje autom谩tico basado en la teor铆a de la red. Como alternativa al uso de un servidor web, este art铆culo intenta especificar la ruta para usar la biblioteca CPython directamente. Reproduciremos sesiones de trabajo de experimentos con matrices Mushroom y Wine Quality desde el repositorio de datos UCI para probar algoritmos de aprendizaje autom谩tico. Luego habr谩 explicaciones sobre los formatos de los datos de entrada.







Introducci贸n



Este art铆culo describe una nueva versi贸n de un programa de aprendizaje autom谩tico basado en la teor铆a de redes. La principal ventaja de esta versi贸n es una interfaz para programadores de Python para algoritmos eficientes programados en C ++.



Hoy en d铆a, los procedimientos de aprendizaje autom谩tico (como redes neuronales convolucionales, bosques aleatorios y m谩quinas de vectores de soporte) han alcanzado un nivel muy alto, superando a los humanos en reconocimiento de voz, video e imagen. Sin embargo, no pueden proporcionar argumentos para probar la exactitud de sus conclusiones.



Por otro lado, los enfoques simb贸licos del aprendizaje autom谩tico (programaci贸n l贸gica inductiva, cobertura de aprendizaje mediante programaci贸n entera) tienen una complejidad computacional muy alta y son pr谩cticamente inaplicables a muestras de un tama帽o relativamente peque帽o.



El enfoque descrito aqu铆 utiliza algoritmos probabil铆sticos para evitar estos problemas. El m茅todo de aprendizaje autom谩tico ICF utiliza las t茅cnicas de la teor铆a de celos铆a algebraica moderna (An谩lisis de conceptos formales) y la teor铆a de probabilidad (especialmente las cadenas de Markov). Pero ahora no necesita conocimientos de matem谩tica avanzada para usar y crear programas con el sistema ICF. El autor ha creado una biblioteca (vkf.cp38-win32.pyd en Windows o vkf.cpython-38-x86_64-linux-gnu.so en Linux) para proporcionar acceso al programa a trav茅s de una interfaz que los programadores de Python pueden entender.



Existe un enfoque parental en relaci贸n con el enfoque descrito, inventado a principios de los a帽os 80 del siglo XX, Doctor en Ciencias T茅cnicas. profe. VK. M茅todo Finn JSM para la generaci贸n autom谩tica de hip贸tesis. Ahora ha evolucionado, como dice su creador, en un m茅todo para el soporte automatizado de la investigaci贸n cient铆fica. Le permite utilizar m茅todos de l贸gica de argumentaci贸n, para verificar la estabilidad de las hip贸tesis encontradas al expandir el conjunto de entrenamiento, para combinar los resultados de las predicciones utilizando diversas estrategias de razonamiento JSM.



Desafortunadamente, el autor de esta nota y sus colegas descubrieron e investigaron algunas deficiencias te贸ricas del m茅todo JSM:



  1. En el peor de los casos, el n煤mero de similitudes generadas puede ser exponencialmente grande en comparaci贸n con el tama帽o de los datos de entrada (muestra de entrenamiento).
  2. (NP-).
  3. .
  4. 芦禄 , .
  5. .


La investigaci贸n del autor se resume en el Cap铆tulo 2 de su trabajo de disertaci贸n . El 煤ltimo punto fue descubierto por el autor recientemente, pero, en su opini贸n, pone fin al enfoque de muestra en expansi贸n.



Finalmente, la comunidad JSM no ofrece acceso al c贸digo fuente de sus sistemas. Adem谩s, los lenguajes de programaci贸n utilizados (Fort y C #) no permitir谩n su uso por parte del p煤blico en general. La 煤nica versi贸n gratuita en C ++ del solucionador JSM conocida por el autor (por T.A. Volkovarobofreak) contiene un error molesto que a veces conduce a la terminaci贸n anormal de los c谩lculos.



Inicialmente, el autor planeaba compartir el codificador desarrollado para el sistema de m茅todo VKF con la comunidad JSM. Por lo tanto, coloc贸 todos los algoritmos aplicables simult谩neamente a los sistemas JSM y VKF en una biblioteca separada (vkfencoder.cp38-win32.pyd en Windows o vkfencoder.cpython-38-x86_64-linux-gnu.so en Linux) ... Desafortunadamente, estos algoritmos no fueron reclamados por la comunidad JSM. La biblioteca VKF implementa estos algoritmos (por ejemplo, la clase vkf.FCA), pero se basa en completar tablas no desde archivos, sino directamente a trav茅s de la interfaz web. Aqu铆 usaremos la biblioteca vkfencoder.



1 Procedimiento para trabajar con la biblioteca para funciones discretas





Supongamos que el lector sabe c贸mo haber instalado el servidor MariaDB + MariaDB Connector / C (por defecto usamos la direcci贸n IP 127.0.0.1:3306 y el usuario 'root' con contrase帽a 'toor'). Comencemos instalando las bibliotecas vkfencoder y vkf en el entorno virtual de demostraci贸n y creando una base de datos vac铆a de MariaDB llamada 'mushroom'.



krrguest@amd2700vii:~/src$ python3 -m venv demo 
krrguest@amd2700vii:~/src$ source demo/bin/activate 
(demo) krrguest@amd2700vii:~/src$ cd vkfencoder
(demo) krrguest@amd2700vii:~/src/vkfencoder$ python3 ./setup.py build
(demo) krrguest@amd2700vii:~/src/vkfencoder$ python3 ./setup.py install
(demo) krrguest@amd2700vii:~/src/vkfencoder$ cd ../vkf
(demo) krrguest@amd2700vii:~/src/vkf$ python3 ./setup.py build
(demo) krrguest@amd2700vii:~/src/vkf$ python3 ./setup.py install
(demo) krrguest@amd2700vii:~/src/vkf$ cd ../demo
(demo) krrguest@amd2700vii:~/src/demo$ mysql -u root -p
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS mushroom;
MariaDB [(none)]> exit;


Como resultado del trabajo,

aparecer谩 la base de datos 'mushroom' , el archivo vkfencoder.cpython-38 aparecer谩 en la carpeta ~ / src / demo / lib / python3.8 / site-packages / vkfencoder-1.0.3-py3.8-linux-x86_64.egg / folder -x86_64-linux-gnu.so, y el

archivo vkf.cpython aparecer谩 en la carpeta ~ / src / demo / lib / python3.8 / site-packages / vkf-2.0.1-py3.8-linux-x86_64.egg / 38-x86_64-linux-gnu.so



Inicie Python3 y ejecute un experimento CCF en la matriz Mushrooms. Se supone que hay 3 archivos en la carpeta ~ / src / demo / files / (mushrooms.xml, MUSHROOMS.train, MUSHROOMS.rest). La estructura de estos archivos se describir谩 en la siguiente secci贸n. El primer archivo 'mushrooms.xml' define la estructura de la mitad de la red inferior en los valores de cada atributo que describe los hongos. El segundo y tercer archivo son el archivo 'agaricus-lepiota.data' dividido por un generador de n煤meros aleatorios aproximadamente a la mitad: el libro digitalizado "Identificador de hongos de Am茅rica del Norte" publicado en Nueva York en 1981. Los siguientes nombres son 'codificador', 'celos铆as', ' los trenes y las "pruebas" son los nombres de las tablas en la base de datos "hongo" para, respectivamente, codificaciones de valores de caracter铆sticas por subcadenas de bits, relaciones de cobertura para diagramas de semilattice en estos valores,ejemplos de entrenamiento y prueba.



(demo) krrguest@amd2700vii:~/src/demo$ Python3
>>> import vkfencoder
>>> xml = vkfencoder.XMLImport('./files/mushrooms.xml', 'encoder', 'lattices', 'mushroom', '127.0.0.1', 'root', 'toor')
>>> trn = vkfencoder.DataImport('./files/MUSHROOMS.train', 'e', 'encoder', 'trains', 'mushroom', '127.0.0.1', 'root', 'toor') 
>>> tst = vkfencoder.DataImport('./files/MUSHROOMS.rest', 'e', 'encoder', 'tests', 'mushroom', '127.0.0.1', 'root', 'toor') 


La 'e' en las 煤ltimas dos l铆neas corresponde a la comestibilidad del hongo (as铆 es como se codifica el rasgo objetivo en esta matriz).



Es importante tener en cuenta que hay una clase vkfencoder.XMLExport que le permite guardar informaci贸n de dos tablas 'codificador' y 'redes' en un archivo xml, que, despu茅s de realizar cambios, puede ser procesado nuevamente por la clase vkfencoder.XMLImport.



Ahora pasamos al experimento VKF en s铆: conectamos los codificadores, cargamos las hip贸tesis previamente calculadas (si las hay), calculamos el n煤mero adicional (100) de hip贸tesis en los flujos de n煤meros especificados (4) y los guardamos en la tabla 'vkfhyps'.



>>> enc = vkf.Encoder('encoder', 'mushroom', '127.0.0.1', 'root', 'toor')
>>> ind = vkf.Induction()
>>> ind.load_discrete_hypotheses(enc, 'trains', 'vkfhyps', 'mushroom', '127.0.0.1', 'root', 'toor') 
>>> ind.add_hypotheses(100, 4) 
>>> ind.save_discrete_hypotheses(enc, 'vkfhyps', 'mushroom', '127.0.0.1', 'root', 'toor')


Puede obtener una lista de Python de todos los pares no triviales (feature_name, feature_value) para la hip贸tesis CCF numerada ndx



>>> ind.show_discrete_hypothesis(enc, ndx)


Una de las hip贸tesis para tomar una decisi贸n sobre la comestibilidad del hongo tiene la forma



[('gill_attachment', 'free'), ('gill_spacing', 'close'), ('gill_size', 'broad'), ('stalk_shape', 'enlarging'), ('stalk_surface_below_ring', 'scaly'), ('veil_type', 'partial'), ('veil_color', 'white'), ('ring_number', 'one'), ('ring_type', 'pendant')]


Debido a la naturaleza probabil铆stica de los algoritmos del m茅todo CCF, es posible que no se genere, pero el autor ha demostrado que con un n煤mero suficientemente grande de hip贸tesis CCF generadas, surgir谩 una hip贸tesis muy similar a esta, que casi predecir谩 la propiedad objetivo para casos de prueba importantes. Los detalles se encuentran en el Cap铆tulo 4 de la disertaci贸n del autor.



Finalmente, pasamos a la predicci贸n. Creamos una muestra de prueba para evaluar la calidad de las hip贸tesis generadas y al mismo tiempo predecir la propiedad objetivo de sus elementos.



>>> tes = vkf.TestSample(enc, ind, 'tests', 'mushroom', '127.0.0.1', 'root', 'toor')
>>> tes.correct_positive_cases()
>>> tes.correct_negative_cases()
>>> exit()


2 Descripci贸n de la estructura de datos.



2.1 Estructuras de celos铆a en caracter铆sticas discretas



La clase vkfencoder.XMLImport analiza un archivo XML que describe el orden entre los valores de entidad, crea y llena dos tablas 'codificador' (convirtiendo cada valor en una cadena de bits) y 'celos铆as' (almacenando relaciones entre los valores de una entidad).

La estructura del archivo de entrada debe ser como



<?xml version="1.0"?>
<document name="mushrooms_db">
  <attribute name="cap_color">
    <vertices>
      <node string="null" char='_'></node>
      <node string="brown" char='n'></node>
      <node string="buff" char='b'></node>
      <node string="cinnamon" char='c'></node>
      <node string="gray" char='g'></node>
      <node string="green" char='r'></node>
      <node string="pink" char='p'></node>
      <node string="purple" char='u'></node>
      <node string="red" char='e'></node>
      <node string="white" char='w'></node>
      <node string="yellow" char='y'></node>
    </vertices>
    <edges>
      <arc source="brown" target="null"></arc>
      <arc source="buff" target="brown"></arc>
      <arc source="buff" target="yellow"></arc>
      <arc source="cinnamon" target="brown"></arc>
      <arc source="cinnamon" target="red"></arc>
      <arc source="gray" target="null"></arc>
      <arc source="green" target="null"></arc>
      <arc source="pink" target="red"></arc>
      <arc source="pink" target="white"></arc>
      <arc source="purple" target="red"></arc>
      <arc source="red" target="null"></arc>
      <arc source="white" target="null"></arc>
      <arc source="yellow" target="null"></arc>
    </edges>
  </attribute>
</document>


El ejemplo anterior representa el orden entre los valores del tercer rasgo 'cap_color' para la matriz Mushrooms del Repositorio de datos de Machine Learning (Universidad de California en Irvine). Cada campo 'atributo' representa una estructura reticular en los valores del atributo correspondiente. En nuestro ejemplo, el grupo corresponde al atributo discreto 'cap_color'. La lista de todos los valores caracter铆sticos forma un subgrupo. Hemos agregado un valor para indicar similitudes triviales (faltantes). El resto de los valores corresponden a la descripci贸n en el archivo adjunto 'agaricus-lepiota.names'.

El orden entre ellos est谩 representado por el contenido del subgrupo. Cada 铆tem describe una relaci贸n m谩s espec铆fica / m谩s general entre pares de valores caracter铆sticos. Por ejemplo, significa que una gorra de hongo rosa es m谩s espec铆fica que una gorra roja.



El autor ha demostrado el teorema sobre la correcci贸n de la representaci贸n generada por el constructor de la clase vkfencoder.XMLImport y almacenada en la tabla 'encoder'. Su prueba de algoritmo y teorema de correcci贸n utiliza una rama moderna de la teor铆a de celos铆a conocida como An谩lisis de concepto formal. Para m谩s detalles, se remite nuevamente al lector al trabajo de disertaci贸n del autor (Cap铆tulo 1).



2.2 Estructura de muestra para caracter铆sticas discretas



En primer lugar, debe tenerse en cuenta que el lector puede implementar su propio cargador de casos de prueba y entrenamiento en la base de datos o usar la clase vkfencoder.DataImport disponible en la biblioteca. En el segundo caso, el lector debe tener en cuenta que la funci贸n de destino debe estar en la primera posici贸n y constar de un car谩cter (por ejemplo, '+' / '-', '1' / '0' o 'e' / 'p').



La muestra de capacitaci贸n debe ser un archivo CSV (con valores separados por comas) que describa ejemplos de capacitaci贸n y contraejemplos (ejemplos que no tienen la propiedad de destino).



La estructura del archivo de entrada debe ser como



e,f,f,g,t,n,f,c,b,w,t,b,s,s,p,w,p,w,o,p,k,v,d
p,x,s,p,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,s,d
p,f,y,g,f,f,f,c,b,p,e,b,k,k,b,n,p,w,o,l,h,v,g
p,x,y,y,f,f,f,c,b,p,e,b,k,k,n,n,p,w,o,l,h,v,p
e,x,y,b,t,n,f,c,b,e,e,?,s,s,e,w,p,w,t,e,w,c,w
p,f,f,g,f,f,f,c,b,g,e,b,k,k,n,p,p,w,o,l,h,y,g
p,x,f,g,f,f,f,c,b,p,e,b,k,k,p,n,p,w,o,l,h,y,g
p,x,f,y,f,f,f,c,b,h,e,b,k,k,n,b,p,w,o,l,h,y,g
p,f,f,y,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,y,g
p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,p,p,w,o,l,h,v,d
p,x,f,g,f,c,f,c,n,u,e,b,s,s,w,w,p,w,o,p,n,v,d
p,x,y,g,f,f,f,c,b,h,e,b,k,k,p,b,p,w,o,l,h,v,g
e,f,y,g,t,n,f,c,b,n,t,b,s,s,p,g,p,w,o,p,k,y,d
e,f,f,e,t,n,f,c,b,p,t,b,s,s,p,p,p,w,o,p,k,v,d
p,f,y,g,f,f,f,c,b,p,e,b,k,k,p,b,p,w,o,l,h,y,p


Cada l铆nea aqu铆 describe un ejemplo de entrenamiento. La primera posici贸n contiene 'e' o 'p' dependiendo de la comestibilidad / toxicidad del hongo descrito. El resto de las posiciones (separadas por comas) contienen letras (nombres cortos) o cadenas (nombres completos de los valores del atributo correspondiente). Por ejemplo, la cuarta posici贸n coincide con el atributo 'cup_color', donde 'g', 'p', 'y', 'b' y 'e' representan "gris", "rosa", "amarillo", "arena" y "rojo" , respectivamente. El signo de interrogaci贸n en el medio de la tabla anterior indica que falta un valor. Sin embargo, los valores de las caracter铆sticas restantes (no objetivo) pueden ser cadenas. Es importante tener en cuenta que al guardar en la base de datos, los espacios en sus nombres se reemplazar谩n con caracteres '_'.



El archivo con casos de prueba tiene la misma forma, solo que al sistema no se le informa sobre el signo real del ejemplo, y su predicci贸n se compara con 茅l para calcular la calidad de las hip贸tesis generadas y su poder predictivo.



2.3 Estructura de muestra para caracter铆sticas continuas



En este caso, las opciones son nuevamente posibles: el lector puede implementar su propio entrenador y cargador de casos de prueba en la base de datos o usar la clase vkfencoder.DataLoad disponible en la biblioteca. En el segundo caso, el lector debe tener en cuenta que la funci贸n de destino debe estar en la primera posici贸n y consistir en un n煤mero natural (por ejemplo, 0, 7, 15).



La muestra de capacitaci贸n debe ser un archivo CSV (con valores separados por alg煤n tipo de delimitador) que describa ejemplos y contraejemplos de capacitaci贸n (ejemplos que no tienen la propiedad de destino).



La estructura del archivo de entrada debe ser como



"quality";"fixed acidity";"volatile acidity";"citric acid";"residual sugar";"chlorides";"free sulfur dioxide";"total sulfur dioxide";"density";"pH";"sulphates";"alcohol"
5;7.4;0.7;0;1.9;0.076;11;34;0.9978;3.51;0.56;9.4
5;7.8;0.88;0;2.6;0.098;25;67;0.9968;3.2;0.68;9.8
5;7.8;0.76;0.04;2.3;0.092;15;54;0.997;3.26;0.65;9.8
6;11.2;0.28;0.56;1.9;0.075;17;60;0.998;3.16;0.58;9.8
5;7.4;0.7;0;1.9;0.076;11;34;0.9978;3.51;0.56;9.4
5;7.4;0.66;0;1.8;0.075;13;40;0.9978;3.51;0.56;9.4
5;7.9;0.6;0.06;1.6;0.069;15;59;0.9964;3.3;0.46;9.4
7;7.3;0.65;0;1.2;0.065;15;21;0.9946;3.39;0.47;10
7;7.8;0.58;0.02;2;0.073;9;18;0.9968;3.36;0.57;9.5


En nuestro caso, estas son las primeras l铆neas del archivo 'vv_red.csv' generado a partir del archivo 'winequality-red.csv' de vinos tintos portugueses de la matriz Wine Quality del repositorio de datos UCI para probar los procedimientos de aprendizaje autom谩tico al reorganizar la 煤ltima columna hasta el principio. Es importante tener en cuenta que al guardar en la base de datos, los espacios en sus nombres se reemplazar谩n con caracteres '_'.



3 Experimento CCF en ejemplos con caracter铆sticas continuas



Como se escribi贸 anteriormente, demostraremos el trabajo en la matriz Wine Quality desde el repositorio UCI. Comencemos creando una base de datos vac铆a en MariaDB llamada 'red_wine'.



(demo) krrguest@amd2700vii:~/src/demo$ mysql -u root -p
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS red_wine;
MariaDB [(none)]> exit;


Como resultado del trabajo, aparecer谩 la base de datos 'red_wine'.



Lanzamos Python3 y llevamos a cabo un experimento VKF en la matriz de Wine Quality. Se supone que hay un archivo vv_red.csv en la carpeta ~ / src / demo / files /. La estructura de estos archivos se describi贸 en el p谩rrafo anterior. Los siguientes nombres 'verges', 'complex', 'train' y 'tests' son los nombres de tablas en la base de datos 'red_wine' para, respectivamente, umbrales (tanto para las caracter铆sticas iniciales como para las calculadas por regresi贸n), coeficientes de regresiones log铆sticas significativas entre pares de caracter铆sticas, entrenamiento y casos de prueba.



(demo) krrguest@amd2700vii:~/src/demo$ Python3
>>> import vkfencoder
>>> nam = vkfencoder.DataLoad('./files/vv_red.csv', 7, 'verges', 'trains', 'red_wine', ';', '127.0.0.1', 'root', 'toor')


El segundo argumento establece el umbral (7 en nuestro caso), por encima del cual el ejemplo se declara positivo. Argumento ';' coincide con el delimitador (el valor predeterminado es ',').



Como se indica en la nota anterior del autor , el procedimiento es diferente del caso de las caracter铆sticas discretas. Primero, calculamos las regresiones log铆sticas usando la clase vkf.Join, cuyos coeficientes se almacenan en la tabla 'compleja'.



>>> join = vkf.Join('trains', 'red_wine', '127.0.0.1', 'root', 'toor')
>>> join.compute_save('complex', 'red_wine', '127.0.0.1', 'root', 'toor') 


Ahora, usando la teor铆a de la informaci贸n, calculamos los umbrales usando la clase vkf.Generator, que, junto con el m谩ximo y el m铆nimo, se almacenan en la tabla 'verges'.



>>> gen = vkf.Generator('complex', 'trains', 'verges', 'red_wine', 7, '127.0.0.1', 'root', 'toor')


El quinto argumento establece el n煤mero de umbrales en las caracter铆sticas originales. Por defecto (y con un valor de 0) se calcula como el logaritmo de la cantidad de caracter铆sticas. Las regresiones buscan un umbral 煤nico.



Ahora pasamos al experimento VKF real: conectamos los codificadores, cargamos las hip贸tesis previamente calculadas (si las hay), calculamos el n煤mero adicional (300) de hip贸tesis en los flujos de n煤meros especificados (8) y los guardamos en la tabla 'vkfhyps'.



>>> qual = vkf.Qualifier('verges', 'red_wine', '127.0.0.1', 'root', 'toor')
>>> beg = vkf.Beget('complex', 'red_wine', '127.0.0.1', 'root', 'toor')
>>> ind = vkf.Induction()
>>> ind.load_continuous_hypotheses(qual, beg, 'trains', 'vkfhyps', 'red_wine', '127.0.0.1', 'root', 'toor') 
>>> ind.add_hypotheses(300, 8) 
>>> ind.save_continuous_hypotheses(qual, 'vkfhyps', 'red_wine', '127.0.0.1', 'root', 'toor')


Puede obtener una lista de Python de triples (feature_name, (lower_bound, upper_bound)) para la hip贸tesis CCF numerada ndx



>>> ind.show_continuous_hypothesis(enc, ndx)


Finalmente, pasamos a la predicci贸n. Creamos una muestra de prueba para evaluar la calidad de las hip贸tesis generadas y al mismo tiempo predecir la propiedad objetivo de sus elementos.



>>> tes = vkf.TestSample(qual, ind, beg, 'trains', 'red_wine', '127.0.0.1', 'root', 'toor')
>>> tes.correct_positive_cases()
>>> tes.correct_negative_cases()
>>> exit()


Como solo tenemos un archivo, aqu铆 utilizamos el conjunto de entrenamiento como casos de prueba.



4. Nota sobre la carga de archivos



Us茅 la biblioteca de aiofiles para subir archivos (como 'mushrooms.xml') a un servidor web. Aqu铆 hay un c贸digo que puede ser 煤til.



import aiofiles
import os
import vkfencoder

async def write_file(path, body):
    async with aiofiles.open(path, 'wb') as file_write:
        await file_write.write(body)
    file_write.close()

async def xml_upload(request):
    #determine names of tables
    encoder_table_name = request.form.get('encoder_table_name')
    lattices_table_name = request.form.get('lattices_table_name')
    #Create upload folder if doesn't exist
    if not os.path.exists(Settings.UPLOAD_DIR):
        os.makedirs(Settings.UPLOAD_DIR)
    #Ensure a file was sent
    upload_file = request.files.get('file_name')
    if not upload_file:
        return response.redirect("/?error=no_file")
    #write the file to disk and redirect back to main
    short_name = upload_file.name.split('/')[-1]
    full_path = f"{Settings.UPLOAD_DIR}/{short_name}"
    try:
        await write_file(full_path, upload_file.body)
    except Exception as exc:
        return response.redirect('/?error='+ str(exc))
    return response.redirect('/ask_data')


Conclusi贸n



La biblioteca vkf.cpython-38-x86_64-linux-gnu.so contiene muchas clases y algoritmos ocultos. Utilizan conceptos matem谩ticos avanzados tales como operaciones cerradas por uno, evaluaci贸n perezosa, cadenas de Markov emparejadas, estados transitorios de la cadena de Markov, m茅trica de variaci贸n total, etc.



En la pr谩ctica, experimentos con matrices del Repositorio de datos para el aprendizaje autom谩tico (Universidad de California en Irvine ) mostr贸 la aplicabilidad real del programa 'M茅todo VKF' de C ++ a datos de tama帽o mediano (la matriz para adultos contiene 32560 entrenamiento y 16280 casos de prueba).



El sistema 'M茅todo VKF' super贸 (en t茅rminos de precisi贸n predictiva) al sistema CLIP3 (Integer Programming Coverage Learning v.3) en una matriz SPECT, donde CLIP3 es un programa creado por los autores de la matriz SPECT. En el conjunto de hongos (dividido aleatoriamente en muestras de entrenamiento y prueba), el sistema 'M茅todo VKF' mostr贸 una precisi贸n del 100% (tanto con respecto al criterio de toxicidad del hongo como al criterio de comestibilidad). El programa tambi茅n se aplic贸 a la matriz Adulto para generar m谩s de un mill贸n de hip贸tesis (sin fallas).



Los c贸digos fuente de la biblioteca vkf CPython se moderan previamente en savannah.nongnu.org. Los c贸digos para la biblioteca auxiliar vkfencoder se pueden obtener de Bitbucket .



El autor desea agradecer a sus colegas y estudiantes (D. A. Anokhin, E. D. Baranova, I. V. Nikulin, E. Yu. Sidorova, L. A. Yakimova) por su apoyo, debates 煤tiles e investigaci贸n conjunta. Sin embargo, como es habitual, el autor es el 煤nico responsable de todas las deficiencias existentes.



All Articles