Actian Vector pasó a llamarse Actian Analytics Engine en 2026.

Recientemente, Actian ha incorporado en Actian Data Platform, VectorH 6.0 y Vector 6.0 una función para funciones definidas por el usuario (UDF) escalares. Esto ha aportado a Actian Data Platform, VectorH y Vector una nueva dimensión para ejecutar modelos de aprendizaje automático (ML) en Python y JavaScript dentro de una base de datos. Para obtener más información sobre las UDF, consulte nuestra documentación.

La creación de modelos es sencilla gracias a la gran cantidad de bibliotecas disponibles, como Spark, TensorFlow y Python Scikit-learn (SKlearn), que es la más utilizada. Una vez creado un modelo apto para producción, es necesario implementarlo en el entorno de producción. En este sentido, Actian Data Platform, Vector y VectorH ofrecen una ventaja al implementar estos modelos directamente en la base de datos, lo que permite utilizar el modelo para evaluar los datos directamente desde la base de datos.

Para demostrarlo, utilizamos Python SKlearn para entrenar el modelo. El objetivo de este blog es demostrar cómo funcionaría una UDF en el contexto del despliegue de un modelo de aprendizaje automático.

Hemos encontrado un proyecto muy interesante llamado sklearn-porter, que compila el modelo a JavaScript, y m2cgen, que se puede utilizar para compilar el modelo tanto a JavaScript como a Python. Actian Data Platform, Vector y VectorH admiten funciones definidas por el usuario (UDF) tanto en JavaScript como en Python; por lo tanto, nuestra elección de biblioteca es m2cgen.  Dado que nuestras UDF son UDF escalares, tuvimos que escribir código adicional para que m2cgen devolviera valores escalares.

Para mostrar la función UDF de aprendizaje automático, he elegido el conjunto de datos Iris. Cuenta con solo 4 columnas y 150 filas, lo que hace que el caso de uso sea fácil de comprender. Voy a mostrar un caso de prueba de principio a fin en el que se crea la tabla, se cargan los datos en la base de datos, se construye el modelo utilizando los datos de la base de datos y, por último, se ejecuta el modelo dentro de la base de datos.

Iris jeu de données

El jeu de données Iris está fácilmente disponible. Se puede descargar desde Kaggle: https://www.kaggle.com/uciml/iris/data#

Sus campos son ID (int), SepalLengthCm (float), SepalWidthCm(float), PetalLengthCm(float), PetalWidthCm (float), Species (varchar (20)).

Detalles sobre la conexión de Python con Vector/VectorH

En este tutorial, utilizaré conexiones ODBC.

Conectar a BD

import pyodbc como pdb
import pandas como pd
import numpy como np
conn = pdb.connect("dsn=Vector6;uid=actian;pwd=passwd" )
conn.setdecoding(pdb.SQL_CHAR, encoding='utf-8')
conn.setdecoding(pdb.SQL_WCHAR, encoding='utf-8')
conn.setencoding(encoding='utf-8')
cursor = conn.cursor()
iristbl='''crear tabla iris1(
id entero
sepallengthcm float,
sepalwidthcm float,
petallengthcm float,
petalwidthcm float,
species varchar(20))'''
conn.execute(iristbl)
conn.commit()

No he tomado ninguna partición como jeu de données tiene sólo 150 filas

Cargar datos en la base de datos

Esto ayudará en la carga masiva de los datos para CSV que descargamos de Kaggle

query ="COPY iris() VWLOAD FROM '/home/actian/vidisha/datasets_19_420_Iris.csv' with fdelim=',', insertmode ='Bulk' ,header"
conn.execute(query)
conn.commit()

Nota: datasets_19_420_Iris.csv es el jeu de données que descargué de Kaggle y utilicé vwload para cargar los datos en la base de datos.

Construir el modelo

La clasificación y la predicción son los dos aspectos más importantes del aprendizaje automático. Con el jeu de données Iris, vamos a crear un modelo de regresión logística simple para la clasificación de Iris. El enfoque aquí no es la construcción del modelo, sin embargo, mostrar cómo el modelo se puede ejecutar dentro de la base de datos.

Comprobación de los datos

sql_case="select sepallengthcm ,sepalwidthcm, petalwidthcm ,petalwidthcm , 
CASE 
WHEN species='Iris-setosa' THEN '1' 
WHEN species='Iris-versicolor' THEN '2' 
ELSE '3 
END como speciesclass 
FROM iris"
iris_case=pd.read_sql(sql_case, conn)
print(iris_case.shape)
iris_case.info(verbose=True)
iris_case.describe()
iris_case.head(10)

Dividir los datos de prueba y de entrenamiento

sql_case="select sepallengthcm ,sepalwidthcm, petalwidthcm ,petalwidthcm , 
CASE 
WHEN species='Iris-setosa' THEN '1' 
WHEN species='Iris-versicolor' THEN '2' 
ELSE '3 
END como speciesclass 
FROM iris"
iris_case=pd.read_sql(sql_case, conn)
print(iris_case.shape)
iris_case.info(verbose=True)
iris_case.describe()
iris_case.head(10)

En la segunda parte de este artículo de dos partes repasaremos los pasos para crear las UDF en la base de datos.

Para obtener más información sobre las capacidades de todos los productos Actian, visite nuestro sitio web.