Implementación de la biblioteca Math.js
Introducción
El reto consiste en trasladar las bibliotecas de JavaScript (frameworks) al mundo de la inteligencia artificial.
Aunque las librerías y los frameworks, al menos los más populares, están en su mayoría codificados en Python, JavaScript tiene mucho que ofrecer con la disponibilidad de herramientas equivalentes exportadas desde Python.
No se trata, en esta parte del libro, de estudiar en detalle las numerosas herramientas JavaScript en este campo en plena expansión, y menos aún los numerosos métodos disponibles en inteligencia artificial (Machine Learning y Deep Learning). El objetivo es, simplemente, mostrarle que JavaScript, a través de sus bibliotecas orientadas a la IA, es una alternativa convincente a Python o R.
Aplicación "eni_mathjs_01.html" - Estadísticas básicas en una matriz 3*3
El objetivo de esta aplicación es realizar cálculos sencillos en una matriz cuadrada (3 filas - 3 columnas) utilizando datos almacenados en el propio código JavaScript. Será una oportunidad idónea para ver cómo llamar a la biblioteca Math.js. En nuestro caso, no la hemos descargado y utilizaremos su versión en línea, disponible en https://cdnjs.cloudflare.com/ajax/libs/mathjs/11.7.0/math.js
La documentación de la biblioteca Math.js está disponible en https://mathjs.org/. Es de gran calidad y un editor en línea permite probar los distintos ejemplos propuestos.
Pasemos a nuestro ejemplo con una matriz de 3*3 que tiene el siguiente contenido:
-
1, 2, 3]
-
[4, 5, 6]
-
[7, 8, 9]
Básicamente, el objetivo será sumar los elementos de esta matriz, promediarlos y duplicar los elementos (salida en forma de matriz 1D).
En primer lugar, mostremos en una captura de pantalla cómo se ejecuta la aplicación:

Veamos el código fuente del script "eni_mathjs_01.html":
1. <!DOCTYPE html>
2.
3. <html lang="es">
4.
5. <!--
6. Nombre del script: eni_mathjs_01.html
7. Autor: Christian VIGOUROUX - Ediciones ENI
8. Fecha de creación: 21/05/2024
9. Fecha de última modificación: 21/05/2024
10. Objeto: Estadísticas básicas sobre una matriz 3*3
11. -->
12.
13. <!-- Encabezado...Aplicación "eni_mathjs_02.html" - Estadísticas Iris (muestra parcial)
El conjunto de datos Iris es, sin duda, uno de los más utilizados en tutoriales y blogs de inteligencia artificial, en particular los basados en el lenguaje Python. Indudablemente, Python es el lenguaje más utilizado en este campo, aunque JavaScript es un rival muy interesante debido a la portabilidad de librerías de Python a JavaScript.
El objetivo de esta aplicación JavaScript es muy sencillo: explorar el conjunto de datos Iris (también llamado “dataset”).
Echemos un vistazo rápido a lo que compone este conjunto de datos (fuente: Wikipedia): "El conjunto de datos flor Iris o conjunto de datos iris de Fisher es un conjunto de datos multivariante introducido por Ronald Fisher en un artículo de 1936 como un ejemplo de análisis discriminante lineal. Se coleccionaron los datos para cuantificar la variación morfológica de la flor iris de tres especies relacionadas. El conjunto de datos contiene 50 muestras de cada una de tres especies de iris (Iris setosa, Iris virginica e Iris versicolor). Se midió cuatro rasgos de cada muestra: el largo y ancho del sépalo y pétalo, en centímetros. Basado en la combinación de estos cuatro rasgos, Fisher desarrolló un modelo discriminante lineal para distinguir entre una especie y otra”.
El conjunto de datos "Iris" está ampliamente documentado en internet. Para saber más, visite https://es.wikipedia.org/wiki/Conjunto_de_datos_flor_iris
Para nuestra primera aplicación del conjunto de datos "Iris", echemos un vistazo rápido a la botánica de los iris. La siguiente foto muestra las tres especies de iris:

Empecemos mostrando cómo se ejecuta la aplicación mediante una captura de pantalla (visualización parcial):

Veamos más de cerca el código fuente ("eni_mathjs_02.html"):
1. <!DOCTYPE html>
2.
3. <html lang="fr">
4.
5. <!--
6. Nombre del script: eni_mathjs_02.html
7. Autor: Christian VIGOUROUX - Ediciones ENI
8. Fecha de creación: 21/05/2024
9. Fecha de última modificación: 21/05/2024
10. Objeto: Estadísticas básicas sobre...Aplicación "eni_mathjs_03.html" - Estadísticas Iris (muestra completa)
La tercera aplicación también se basa en el conjunto de datos Iris. Esta vez los datos se procesarán en su totalidad (150 observaciones) y el conjunto de datos se obtendrá de internet.
Así es como se ve cuando se ejecuta la aplicación en una captura de pantalla (visualización parcial):

Aunque el script es, obviamente, muy similar al anterior ("eni_mathjs_02.html"), se reproduce íntegramente a continuación:
1.<!DOCTYPE html>
2.
3.<html lang="es">
4.
5. <!--
6. Nombre del script: eni_mathjs_03.html
7. Autor: Christian VIGOUROUX - Ediciones ENI
8. Fecha de creación: 21/05/2024
9. Última fecha de modificación: 21/05/2024
10. Objeto: Estadísticas básicas sobre el conjunto de datos de Iris (muestra completa)
11. -->
12.
13. <!-- Encabezado de la página -->
14. <head>
15. <!-- Metaetiquetas -->
16. <meta charset="UTF-8">
17.
18. <!-- Título de la pestaña del navegador -->
19. <title>Math.js - Ejemplo 03</title>
20.
21. <!-- Hoja de estilo CSS-->
22. <style>
23.
24. /* Margen de visualización de las especies florales*/
25. .especies {
26. margin-bottom: 40px;
27. margin-left: 40px;
28. }
29.
30. /* Margen de visualización de las estadísticas de las especies florales*/
31. .caracteristicas {
32. margin-left: 40px;
33. }
34.
35. </style>
36.
37. </head>
38.
39. <!-- Cuerpo de la página -->
40. <body>
41.
42. <!-- Visualización en fuente Arial -->
43. <font...Aplicación "eni_mathjs_04.html" - Regresión lineal Iris (muestra parcial)
Nuestra última aplicación utilizando Math.js demostrará el potencial de esta librería en el campo de la estadística. El objetivo es determinar los parámetros de una recta de regresión lineal sobre un subconjunto del conjunto de datos Iris que ya hemos utilizado en este capítulo.
Según Wikipedia: "En estadística, econometría y aprendizaje automático, un modelo de regresión lineal es un modelo de regresión que busca establecer una relación lineal entre una variable, llamada variable dependiente, y una o más variables, llamadas variables independientes".
Puede encontrar el artículo completo que describe la historia de este método y cómo se calcula en https://es.wikipedia.org/wiki/Regresi%C3%B3n_lineal
Nuestra cuarta aplicación se basa en una pequeña muestra (seis observaciones) idéntica a la utilizada en el script "eni_mathjs_02.html".
Empecemos por mostrar lo que hace la aplicación consultando el informe de ejecución.

Podemos ver los dos parámetros de la regresión lineal: la pendiente (0,3313) y el intercepto (4,6413). La ecuación de la recta de regresión es: y = 0,3313 x + 4,6413.
El script también sugiere que puede introducir un valor de longitud de pétalo para aproximar el valor de longitud de sépalo utilizando la línea de regresión lineal. Para un valor de longitud de pétalo de 5, el valor de longitud de sépalo es el 6,3 predicho.
También se muestran los datos del dataset (solo seis observaciones).
La ejecución del script termina con la visualización de un diagrama de dispersión acompañado de una representación de la recta de regresión lineal.
Sin embargo, hay que señalar un punto importante: en nuestro análisis hemos supuesto que la longitud del sépalo dependía de la longitud del pétalo en las flores de iris. Obviamente, se trata de un sesgo, ya que no somos botánicos.
El dataset Iris de Fisher se utiliza a menudo para tareas de clasificación. Contiene medidas de la longitud y la anchura de los sépalos y los pétalos de tres especies de iris. Para determinar la relación entre la longitud...