Informations de référence sur les commandes de la CLI ML.NET
Les commandes classification
, regression
et recommendation
sont les commandes principales fournies par l’outil CLI ML.NET. Ces commandes vous permettent de générer des modèles ML.NET de classification, de régression et de recommandation de bonne qualité à l’aide du Machine Learning automatisé (AutoML), ainsi que de l’exemple de code C# pour exécuter/noter ce modèle. En outre, le code C# permettant d’entraîner le modèle est généré pour vous permettre de rechercher l’algorithme et les paramètres du modèle.
Remarque
Cet article fait référence à l’interface CLI ML.NET et à AutoML ML.NET qui sont actuellement en préversion et peuvent donc faire l’objet de modifications.
Vue d’ensemble
Exemple d'utilisation :
mlnet regression --dataset "cars.csv" --label-col price
Les commandes de tâche ML mlnet
(classification
, regression
, recommendation
et forecasting
) génèrent les ressources suivantes :
- Un fichier .zip de modèle sérialisé (le « meilleur modèle »), prêt à être utilisé.
- Code C# pour exécuter/noter le modèle généré.
- Le code C# comportant le code d’entraînement utilisé pour générer ce modèle.
Les deux premières ressources peuvent être utilisées directement dans vos applications utilisateur (application web ASP.NET Core, services, application de bureau et plus) pour effectuer des prédictions à l’aide du modèle.
La troisième ressource, le code d’apprentissage, vous montre comment ML.NET code d’API a été utilisé par l’interface CLI pour entraîner le modèle généré, afin que vous puissiez étudier l’algorithme et les paramètres spécifiques du modèle.
Exemples
La commande CLI la plus simple pour un problème de classification (AutoML déduit la plupart de la configuration à partir des données fournies) :
mlnet classification --dataset "customer-feedback.tsv" --label-col Sentiment
Autre commande CLI simple pour un problème de régression :
mlnet regression --dataset "cars.csv" --label-col Price
Créer et entraîner un modèle de classification avec un jeu de données d’entraînement, un jeu de données de test et des arguments explicites de personnalisation supplémentaire :
mlnet classification --dataset "/MyDataSets/Population-Training.csv" --test-dataset "/MyDataSets/Population-Test.csv" --label-col "InsuranceRisk" --cache on --train-time 600
Options de commande
Les commandes de tâche ML mlnet
(classification
, regression
, recommendation
, forecasting
et train
) entraînent plusieurs modèles en fonction du jeu de données fourni et des options CLI ML.NET. Ces commandes sélectionnent également le meilleur modèle, enregistrent le modèle en tant que fichier .zip sérialisé et génèrent du code C# associé pour le scoring et la formation.
Options de classification
L’exécution de mlnet classification
entraînera un modèle de classification. Choisissez cette commande si vous souhaitez qu’un modèle ML catégorise les données en 2 classes ou plus (par exemple, analyse des sentiments).
mlnet classification
--dataset <path> (REQUIRED)
--label-col <col> (REQUIRED)
--cache <option>
--has-header (Default: true)
--ignore-cols <cols>
--log-file-path <path>
--name <name>
-o, --output <path>
--test-dataset <path>
--train-time <time> (Default: 30 minutes, in seconds)
--validation-dataset <path>
-v, --verbosity <v>
-?, -h, --help
Options de régression
L’exécution de mlnet regression
entraînera un modèle de régression. Choisissez cette commande si vous souhaitez qu’un modèle ML prédise une valeur numérique (par exemple, prédiction de prix).
mlnet regression
--dataset <path> (REQUIRED)
--label-col <col> (REQUIRED)
--cache <option>
--has-header (Default: true)
--ignore-cols <cols>
--log-file-path <path>
--name <name>
-o, --output <path>
--test-dataset <path>
--train-time <time> (Default: 30 minutes, in seconds)
--validation-dataset <path>
-v, --verbosity <v>
-?, -h, --help
Options de recommandation
L’exécution de mlnet recommendation
entraînera un modèle de recommandation. Choisissez cette commande si vous souhaitez qu’un modèle ML recommande des éléments aux utilisateurs en fonction des évaluations (par exemple, recommandation de produit).
mlnet recommendation
--dataset <path> (REQUIRED)
--item-col <col> (REQUIRED)
--rating-col <col> (REQUIRED)
--user-col <col> (REQUIRED)
--cache <option>
--has-header (Default: true)
--log-file-path <path>
--name <name>
-o, --output <path>
--test-dataset <path>
--train-time <time> (Default: 30 minutes, in seconds)
--validation-dataset <path>
-v, --verbosity <v>
-?, -h, --help
Les options d’entrée non valides entraînent l’émission d’une liste d’entrées valides et d’un message d’erreur par l’outil CLI.
Options de prévision
L’exécution de mlnet forecasting
entraînera un modèle de prévision de série chronologique. Choisissez cette commande si vous souhaitez qu’un modèle ML prévoit une valeur en fonction des données historiques (par exemple, prévision des ventes).
mlnet forecasting
--dataset <dataset> (REQUIRED)
--horizon <horizon> (REQUIRED)
--label-col <label-col> (REQUIRED)
--time-col <time-col> (REQUIRED)
--cache <Auto|Off|On>
--has-header
--log-file-path <log-file-path>
--name <name>
-o, --output <output>
--test-dataset <test-dataset>
--train-time <train-time>
-v, --verbosity <verbosity>
Options d’apprentissage
L’exécution de mlnet train
entraînera un modèle basé sur un fichier « mbconfig » généré à partir du Générateur de modèles. Pour que cette commande fonctionne, les données d’apprentissage doivent se trouver dans le même répertoire que le fichier « mbconfig ».
-training-config <training-config> (REQUIRED)
--log-file-path <log-file-path>
-v, --verbosity <verbosity>
Dataset
--dataset | -d
(chaîne)
Cet argument fournit le chemin de l’une des options suivantes :
A : le fichier de jeu de données entier : si vous utilisez cette option et que l’utilisateur ne fournit pas
--test-dataset
et--validation-dataset
, des approches de validation croisée (k sous-échantillon, etc.) ou de fractionnement automatisé des données sont utilisées en interne pour la validation du modèle. Dans ce cas, l’utilisateur doit simplement fournir le chemin du jeu de données.B : le fichier de jeu de données d’entraînement : si l’utilisateur fournit également des jeux de données pour la validation du modèle (à l’aide de
--test-dataset
et éventuellement de--validation-dataset
), l’argument--dataset
revient à avoir uniquement le « jeu de données d’entraînement ». Par exemple, quand vous utilisez une approche 80 %-20 % pour valider la qualité du modèle et pour obtenir des métriques de précision, le « jeu de données d’entraînement » a 80 % des données, tandis que le « jeu de données de test » a 20 % des données.
Jeu de données de test
--test-dataset | -t
(chaîne)
Chemin pointant vers le fichier de jeu de données de test, par exemple lors de l’utilisation d’une approche 80 %-20 % dans le cadre de validations régulières visant à obtenir des métriques de précision.
Si vous utilisez --test-dataset
, --dataset
est également requis.
L’argument --test-dataset
est facultatif, sauf si l’option --validation-dataset est utilisée. Dans ce cas, l’utilisateur doit recourir aux trois arguments.
Jeu de données de validation
--validation-dataset | -v
(chaîne)
Chemin pointant vers le fichier de jeu de données de validation. Le jeu de données de validation est toujours facultatif.
Si vous utilisez un validation dataset
, le comportement doit être le suivant :
Les arguments
test-dataset
et--dataset
sont également requis.Le jeu de données
validation-dataset
est utilisé pour estimer l’erreur de prédiction pour la sélection de modèle.test-dataset
est utilisé pour l’évaluation de l’erreur de généralisation du dernier modèle choisi. Dans l’idéal, le jeu de test doit être conservé dans un « coffre » et récupéré uniquement à la fin de l’analyse des données.
Quand vous utilisez un validation dataset
ainsi que test dataset
, la phase de validation est divisée en deux parties :
- Dans la première partie, vous examinez simplement vos modèles et sélectionnez l’approche la plus performante en utilisant les données de validation (=validation)
- Ensuite, vous estimez la précision de l’approche sélectionnée (= test).
Ainsi, la séparation des données peut être 80/10/10 ou 75/15/10. Par exemple :
- Le fichier
training-dataset
doit avoir 75 % des données. - Le fichier
validation-dataset
doit avoir 15 % des données. - Le fichier
test-dataset
doit avoir 10 % des données.
Dans tous les cas, ces pourcentages sont déterminés par l’utilisateur à l’aide de l’interface CLI, qui fournit les fichiers déjà fractionnés.
Colonne d'étiquette
--label-col
(entier ou chaîne)
Avec cet argument, vous pouvez spécifier une colonne cible/objectif (la variable que vous souhaitez prédire) en utilisant le nom de la colonne défini dans l’en-tête du jeu de données ou l’index numérique de la colonne dans le fichier du jeu de données (les valeurs d’index de colonne commencent à 0).
Cet argument a été utilisé pour les problèmes de classification et de régression.
Colonne d'élément
--item-col
(entier ou chaîne)
La colonne d’élément contient la liste des éléments que les utilisateurs évaluent (les éléments sont recommandés aux utilisateurs). Cette colonne peut être spécifiée à l’aide du nom de la colonne définie dans l’en-tête du jeu de données ou de l’index numérique de la colonne dans le fichier du jeu de données (les valeurs d’index de colonne commencent à 0).
Cet argument est utilisé uniquement pour la tâche de recommandation.
Colonne d’évaluation
--rating-col
(entier ou chaîne)
La colonne d’évaluation contient la liste des évaluations qui sont fournies aux éléments par les utilisateurs. Cette colonne peut être spécifiée à l’aide du nom de la colonne définie dans l’en-tête du jeu de données ou de l’index numérique de la colonne dans le fichier du jeu de données (les valeurs d’index de colonne commencent à 0).
Cet argument est utilisé uniquement pour la tâche de recommandation.
Colonne de l’utilisateur
--user-col
(entier ou chaîne)
La colonne utilisateur contient la liste des utilisateurs qui donnent des évaluations aux éléments. Cette colonne peut être spécifiée à l’aide du nom de la colonne définie dans l’en-tête du jeu de données ou de l’index numérique de la colonne dans le fichier du jeu de données (les valeurs d’index de colonne commencent à 0).
Cet argument est utilisé uniquement pour la tâche de recommandation.
Ignorer les colonnes
--ignore-columns
(chaîne)
Avec cet argument, vous pouvez ignorer des colonnes existantes dans le fichier de jeu de données afin qu’elles ne soient pas chargées et utilisées par les processus d’entraînement.
Spécifiez les noms des colonnes que vous souhaitez ignorer. Utilisez « , » (virgule avec espace) ou « » (espace) pour séparer plusieurs noms de colonne. Vous pouvez utiliser des guillemets pour les noms de colonnes contenant des espaces (par exemple, "utilisateur connecté").
Exemple :
--ignore-columns email, address, id, logged_in
A un en-tête
--has-header
(booléen)
Spécifiez si le ou les fichiers de jeu de données ont une ligne d’en-tête. Les valeurs possibles sont les suivantes :
true
false
L’interface CLI ML.NET tente de détecter cette propriété si cet argument n’est pas spécifié par l’utilisateur.
Temps d’apprentissage
--train-time
(chaîne)
Par défaut, la durée maximale d’exploration/entraînement est de 30 minutes.
Cet argument définit la durée maximale (en secondes) dont dispose le processus pour explorer plusieurs entraîneurs et configurations. La durée configurée peut être dépassée si la durée fournie est trop courte (par exemple, 2 secondes) pour une seule itération. Dans ce cas, la durée réelle est le temps nécessaire pour produire une seule configuration de modèle dans une seule itération.
La durée nécessaire pour les itérations peut varier selon la taille du jeu de données.
Cache
--cache
(chaîne)
Si vous utilisez la mise en cache, le jeu de données d’entraînement entier est chargé en mémoire.
Pour les jeux de données petits et moyens, l’utilisation du cache peut considérablement améliorer les performances d’entraînement, ce qui signifie que la durée d’entraînement peut être plus courte que quand vous n’utilisez pas de cache.
Toutefois, pour les grands jeux de données, le chargement de toutes les données en mémoire peut avoir un impact négatif dans la mesure où vous risquez de manquer de mémoire. Si vous effectuez un entraînement avec de grands fichiers de jeu de données sans utiliser de cache, ML.NET récupère des blocs de données du lecteur sous forme de flux s’il doit charger davantage de données.
Vous pouvez spécifier les valeurs suivantes :
on
: impose l’utilisation du cache lors de l’entraînement.
off
: impose la non-utilisation du cache lors de l’entraînement.
auto
: selon l’heuristique du moteur AutoML, le cache est utilisé ou non. En règle générale, si vous utilisez le choix auto
, les jeux de données petits et moyens utilisent le cache, tandis que les grands jeux de données ne l’utilisent pas.
Si vous ne spécifiez pas le paramètre --cache
, la configuration auto
du cache est utilisée par défaut.
Nom
--name
(chaîne)
Nom de la solution ou du projet de sortie créé. Si aucun nom n’est spécifié, le nom sample-{mltask}
est utilisé.
Le fichier de modèle ML.NET (fichier .ZIP) reçoit également le même nom.
Chemin de sortie
--output | -o
(chaîne)
Emplacement/dossier racine où placer la sortie générée. L'emplacement par défaut est le répertoire actif.
Commentaires
--verbosity | -v
(chaîne)
Définit le niveau de détail de la sortie standard.
Les valeurs autorisées sont les suivantes :
q[uiet]
m[inimal]
(par défaut)diag[nostic]
(niveau d’informations de journalisation)
Par défaut, l’outil CLI doit afficher un minimum de commentaires (minimal
) quand il fonctionne ; il doit par exemple indiquer qu’il fonctionne et, si possible, le temps restant ou le pourcentage de temps écoulé.
Aide
-h |--help
Affiche l’aide de la commande avec une description de chacun de ses paramètres.