ML Nutzer Defined Functions (UDFs) in Actian Data Platform, VectorH und Vector - Teil 1
Actian Vector wurde im Jahr 2026 in Actian Analytics Engine umbenannt.
Vor kurzem hat Actian in der Actian Data Platform, VectorH 6.0 und Vector 6.0 eine Funktion für skalare Nutzer Funktionen (Nutzer Defined Functions (UDFs) eingeführt. Damit haben die Actian Data Platform, VectorH und Vector eine neue Dimension erhalten, um Modelle Maschinelles Lernen ML) in Python JavaScript direkt in der Datenbank auszuführen. Mehr zu Nutzer Defined Functions (UDFs) finden Sie in unserer Dokumentation.
Die Modellerstellung ist dank zahlreicher verfügbarer Bibliotheken wie Spark, TensorFlow und Python (SKlearn) – wobei letztere am häufigsten verwendet wird – ganz einfach. Sobald ein produktionsreifes Modell erstellt wurde, muss es in der Produktion bereitgestellt werden. Hier punkten die Actian Data Platform, Vector und VectorH, da sie diese Modelle direkt in der Datenbank bereitstellen, sodass das Modell zur Bewertung von Daten direkt innerhalb der Datenbank genutzt werden kann.
Um dies zu demonstrieren, haben wir Python SKlearn verwendet, um das Modell trainieren . Der Schwerpunkt dieses Blogs liegt auf der Demonstration, wie eine UDF im Zusammenhang mit dem Einsatz eines Machine-Learning-Modells funktioniert.
Wir sind auf ein sehr interessantes Projekt namens „sklearn-porter“ gestoßen, das das Modell in JavaScript transpiliert, sowie auf „m2cgen“, mit dem das Modell sowohl in JavaScript als auch in Python transpiliert werden kann. Die Actian Data Platform, Vector und VectorH unterstützen sowohl JavaScript- als auchNutzer Defined Functions (UDFs), weshalb wir uns für die Bibliothek „m2cgen“ entschieden haben. Da Nutzer Defined Functions (UDFs) unseren Nutzer Defined Functions (UDFs) skalare Nutzer Defined Functions (UDFs) Nutzer Defined Functions (UDFs) , mussten wir zusätzlichen Code für m2cgen schreiben, damit skalare Werte zurückgegeben werden.
Um die ML-UDF zu veranschaulichen, habe ich den Datensatz ausgewählt. Er umfasst lediglich 4 Spalten und 150 Zeilen, wodurch der use case nachvollziehbar ist. Ich werde einen durchgängigen Testfall demonstrieren, bei dem die Tabelle erstellt, Daten in die Datenbank geladen, das Modell anhand der Daten aus der Datenbank aufgebaut und schließlich das Modell innerhalb der Datenbank ausgeführt wird.
Iris Datensatz
Der Datensatz ist leicht verfügbar. Er kann bei Kaggle heruntergeladen werden: https://www.kaggle.com/uciml/iris/data#
Seine Felder sind ID (int), SepalLengthCm (float), SepalWidthCm(float), PetalLengthCm(float), PetalWidthCm (float), Species (varchar (20)).
Details zur Python mit Vector/VectorH
In diesem Tutorium werde ich ODBC-Verbindungen verwenden.
Verbindung zur DB
pyodbc als pdb importieren
importiere pandas als pd
import numpy as 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='''create table iris1(
id ganzzahlig,
sepallengthcm float,
sepalwidthcm float,
petallengthcm float,
petalwidthcm float,
species varchar(20))'''
conn.execute(iristbl)
conn.commit()
Ich habe keine Partition genommen, da der Datensatz nur 150 Zeilen hat.
Daten in DB laden
Dies hilft beim Massenladen der Daten für die CSV, die wir von Kaggle heruntergeladen haben
abfragen ="COPY iris() VWLOAD FROM '/home/actian/vidisha/datasets_19_420_Iris.csv' with fdelim=',', insertmode ='Bulk' ,header" conn.executeabfragen) conn.commit()
Hinweis: datasets_19_420_Iris.csv ist der Datensatz , den ich von Kaggle heruntergeladen und mit vwload in die Datenbank geladen habe.
Aufbau des Modells
Klassifizierung und Vorhersage sind die beiden wichtigsten Aspekte des Maschinelles Lernen. Mit dem Datensatz werden wir ein einfaches logistisches Regressionsmodell für die Iris-Klassifikation erstellen. Der Schwerpunkt liegt hier nicht auf der Modellerstellung, sondern darauf, zu zeigen, wie das Modell innerhalb der Datenbank ausgeführt werden kann.
Überprüfung der Daten
sql_case="select sepallengthcm ,sepalwidthcm, petalwidthcm ,petalwidthcm , CASE WHEN Art='Iris-setosa' THEN '1' WHEN species='Iris-versicolor' THEN '2' ELSE '3' END as 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)
Teilen Sie die Test- und trainieren auf
sql_case="select sepallengthcm ,sepalwidthcm, petalwidthcm ,petalwidthcm , CASE WHEN Art='Iris-setosa' THEN '1' WHEN species='Iris-versicolor' THEN '2' ELSE '3' END as 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)
Im zweiten Teil dieses zweiteiligen Artikels werden wir die Schritte zur Erstellung von Nutzer Defined Functions (UDFs) in der Datenbank durchgehen.
Um mehr über die Funktionen der gesamten Actian Produkte zu erfahren, besuchen Sie unsere Website.