ML FDU dans les plateforme de données Actian, VectorH et Vector - Partie 1
Actian Corporation
6 août 2020

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.
S'abonner au blog d'Actian
Abonnez-vous au blogue d'Actian pour recevoir des renseignements sur les données directement à vous.
- Restez informé - Recevez les dernières informations sur l'analyse des données directement dans votre boîte de réception.
- Ne manquez jamais un article - Vous recevrez des mises à jour automatiques par courrier électronique pour vous avertir de la publication de nouveaux articles.
- Tout dépend de vous - Modifiez vos préférences de livraison en fonction de vos besoins.