ML Nutzer Defined Functions (UDFs) in Actian Data Platform, VectorH und Vector - Teil 1
Actian Germany GmbH
6. August 2020

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.
Abonnieren Sie den Actian Blog
Abonnieren Sie den Blog von Actian, um direkt Dateneinblicke zu erhalten.
- Bleiben Sie auf dem Laufenden: Holen Sie sich die neuesten Informationen zu Data Analytics direkt in Ihren Posteingang.
- Verpassen Sie keinen Beitrag: Sie erhalten automatische E-Mail-Updates, die Sie informieren, wenn neue Beiträge veröffentlicht werden.
- Ganz wie sie wollen: Ändern Sie Ihre Lieferpräferenzen nach Ihren Bedürfnissen.