Ingénierie des données

ML FDU dans les plateforme de données Actian, VectorH et Vector - Partie 1

Actian Corporation

6 août 2020

Machine Learning UDF montrant une main de robot et une main humaine

Récemment, dans plateforme de données Actian, VectorH 6.0 et Vector 6.0, Actian a introduit une capacité pour les fonctions utilisateur ScalarFDU Cela a donné à plateforme de données Actian, VectorH et Vector une nouvelle dimension pour exécuter des modèles d'apprentissage machine (ML) en Python et JavaScript au sein d'une base de données. En savoir plus sur les FDU dans notre documentation.

La création de modèles est simple grâce aux nombreuses bibliothèques disponibles telles que Spark, Tensorflow, Python Scikit-learn (SKlearn), qui est la plus couramment utilisée. Une fois qu'un modèle de qualité production est créé, il doit être déployé en production. Ici, les plateforme de données Actian, Vector et VectorH ont l'avantage de déployer ces modèles directement dans la base de données, et donc le modèle peut être utilisé pour scorer les données directement dans la base de données.

Pour le démontrer, nous avons utilisé Python SKlearn pour entraîner modèle. L'objectif de ce blog est de démontrer le fonctionnement d'un UDF dans le contexte du déploiement d'un modèle d'apprentissage automatique.

Nous avons trouvé un projet très intéressant appelé sklearn-porter, qui transpose le modèle en JavaScript et m2cgen, qui peut être utilisé pour transposer le modèle à la fois en JavaScript et en Python. Les plateforme de données Actian, Vector et VectorH support fois support FDU JavaScript et Python , et notre choix de bibliothèque s'est donc porté sur m2cgen. Comme nos FDU sont des FDU scalaires, nous avons dû écrire du code supplémentaire pour que m2cgen renvoie des valeurs scalaires.

Pour présenter le ML UDF, j'ai choisi le jeu de données Iris. Il ne comporte que 4 colonnes et 150 lignes, ce qui rend le cas d'usage facile à comprendre. Je démontrerai un cas de test de bout en bout qui crée la table, charge les données dans la base de données, construit le modèle en utilisant les données de la base de données, et enfin exécute le modèle à l'intérieur de la base de données.

Iris jeu de données

Le jeu de données Iris est facilement disponible. Il peut être téléchargé à partir de Kaggle : https://www.kaggle.com/uciml/iris/data#

Ses champs sont les suivants : ID (int), SepalLengthCm (float), SepalWidthCm(float), PetalLengthCm(float), PetalWidthCm (float), Species (varchar (20)).

Détails sur la connexion de Python avec Vector/VectorH

Il est expliqué à l'python comment établir des connexions ODBC ou JDBC python . Dans ce tutoriel, j'utiliserai des connexions ODBC.

Connexion à la base de données

import pyodbc as pdb
import pandas sous le nom de 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(encodage='utf-8')
cursor = conn.cursor()
iristbl='''create table iris1(
id integer,
sepallengthcm float,
sepalwidthcm float,
petallengthcm float,
petalwidthcm float,
species varchar(20))''''
conn.execute(iristbl)
conn.commit()

Je n'ai pas pris de partition car le jeu de données ne comporte que 150 lignes.

Chargement des données dans la base de données

Cela aidera à charger en masse les données pour le CSV que nous avons téléchargé de Kaggle.

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

Note : datasets_19_420_Iris.csv est le jeu de données que j'ai téléchargé depuis Kaggle et j'ai utilisé vwload pour charger les données dans la base de données.

Construction du modèle

La classification et la prédiction sont les deux aspects les plus importants de l'apprentissage automatique. Avec le jeu de données Iris, nous allons créer un modèle de régression logistique simple pour la classification des Iris. Il ne s'agit pas ici de construire un modèle, mais de montrer comment le modèle peut être exécuté dans la base de données.

Vérification des données

sql_case="select sepallengthcm ,sepalwidthcm, petalwidthcm ,petalwidthcm , 
CASE 
WHEN species='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)

Diviser le test et entraîner données

sql_case="select sepallengthcm ,sepalwidthcm, petalwidthcm ,petalwidthcm , 
CASE 
WHEN species='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)

Dans la deuxième partie de cet article en deux parties, nous verrons les étapes de la création de l'FDU dans la base de données.

Pour en savoir plus sur les capacités de tous les produits Actian, visitez notre site Web.

logo avatar actian

À propos d'Actian Corporation

Actian facilite l'accès aux données. Notre plateforme de données simplifie la façon dont les gens connectent, gèrent et analysent les données dans les environnements cloud, hybrides et sur site . Avec des décennies d'expérience dans la gestion des données et l'analyse, Actian fournit des solutions de de haute performance qui permettent aux entreprises de prendre des décisions basées sur les données. Actian est reconnu par les principaux analystes et a reçu des prix de l'industrie pour sa performance et son innovation. Nos équipes partagent des cas d'utilisation éprouvés lors de conférences (par exemple, Strata Data) et contribuent à des projets à code source ouvert. Sur le blog d'Actian, nous abordons des sujets tels que l'ingestion de données en temps réel, l'analyse de données, la gouvernance données, la gestion des données, la qualité des données, l'intelligence des données et l'analyse pilotée par l'IA.