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

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.

actian avatar logo

Über Actian Germany GmbH

Actian versetzt Unternehmen in die Lage, Daten in großem Umfang sicher verwalten und zu steuern, komplexe Datenumgebungen zu rationalisieren und die Bereitstellung von KI-fähigen Daten zu beschleunigen. Der Data-Intelligence-Ansatz von Actian kombiniert Daten-Discovery, Metadaten und föderierte Governance, um eine intelligentere Datennutzung zu ermöglichen und die Compliance zu verbessern. Mit intuitivenFähigkeiten können geschäftliche und technische Anwender Datenbestände in Cloud, Hybrid- und On-Premises finden, verstehen und ihnen vertrauen. Actian liefert flexible Datenmanagement an 42 Millionen Nutzer in Fortune-100-Unternehmen und anderen Unternehmen weltweit und erreicht dabei eine Kundenzufriedenheit von 95%.