Datentechnik

ML Nutzer Defined Functions (UDFs) in Actian Data Platform, VectorH und Vector - Teil 1

Actian Germany GmbH

6. August 2020

Maschinelles Lernen UDF zeigt eine Roboterhand und eine menschliche Hand

Vor kurzem hat Actian in Actian Data Platform, VectorH 6.0 und Vector 6.0 eine Fähigkeit für skalare Nutzer FunktionenNutzer Defined Functions (UDFs)) eingeführt. Dies hat Actian Data Platform, VectorH und Vector eine neue Dimension gegeben, um Maschinelles Lernen (ML) Modelle in Python und JavaScript innerhalb einer Datenbank auszuführen. Mehr über Nutzer Defined Functions (UDFs) finden Sie in unserer Dokumentation.

Die Modellerstellung ist mit den vielen verfügbaren Bibliotheken wie Spark, Tensorflow, Python Scikit-learn (SKlearn), die am häufigsten verwendet werden, einfach. Sobald ein produktionsreifes Modell erstellt ist, muss es in der Produktion eingesetzt werden. Hier sind Actian Data Platform, Vector und VectorH im Vorteil, da sie diese Modelle direkt in der Datenbank bereitstellen und das Modell daher zur Bewertung von Daten direkt in der Datenbank verwendet 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 haben ein sehr interessantes Projekt namens sklearn-porter gefunden, das das Modell nach JavaScript und m2cgen überträgt, mit dem das Modell sowohl nach JavaScript als auch nach Python übertragen werden kann. Actian Data Platform, Vector und VectorH unterstützen sowohl JavaScript als auch Python Nutzer Defined Functions (UDFs), daher ist unsere Wahl der Bibliothek m2cgen. Da es sich bei unseren Nutzer Defined Functions (UDFs) um skalare Nutzer Defined Functions (UDFs) handelt, mussten wir etwas zusätzlichen Code schreiben, damit m2cgen skalare Werte zurückgeben kann.

Für die Präsentation der ML UDF habe ich den Datensatz gewählt. Er hat nur 4 Spalten und 150 Zeilen, wodurch der use case leicht zu verstehen ist. Ich werde einen End-to-End-Testfall demonstrieren, bei dem die Tabelle erstellt wird, Daten in die Datenbank geladen werden, das Modell mit Daten aus der Datenbank erstellt wird und schließlich das Modell in 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

Auf python wird beschrieben, wie man python ODBC- oder JDBC-Verbindungen herstellt. In diesem Lernprogramm 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

Anfrage ="COPY iris() VWLOAD FROM '/home/actian/vidisha/datasets_19_420_Iris.csv' with fdelim=',', insertmode ='Bulk' ,header"
conn.executeAnfrage)
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 Möglichkeiten aller ActianProdukte zu erfahren, besuchen Sie unsere Website.

actian avatar logo

Über Actian Corporation

Actian macht Daten einfach. Unsere Datenplattform vereinfacht die Verbindung, Verwaltung und Analyse von Daten in Cloud-, Hybrid- und lokalen Umgebungen. Mit jahrzehntelanger Erfahrung in den Bereichen Datenmanagement und -analyse liefert Actian leistungsstarke Lösungen, die es Unternehmen ermöglichen, datengesteuerte Entscheidungen zu treffen. Actian wird von führenden Analysten anerkannt und wurde für seine Leistung und Innovation mit Branchenpreisen ausgezeichnet. Unsere Teams präsentieren bewährte Anwendungsfälle auf Konferenzen (z. B. Strata Data) und tragen zu Open-Source-Projekten bei. Im ActianBlog behandeln wir Themen wie Echtzeit-Dateneingabe, Datenanalyse, Data Governance, Datenmanagement, Datenqualität, Datenintelligenz und KI-gesteuerte Analysen.