ClusteringSolution - Global
L’API ClusteringSolution est un objet pouvant contenir des scripts utilisé dans les Intelligence prédictive magasins.
Ce L’API nécessite le module d’extension Intelligence prédictive (com.glide.platform_ml) et est fournie dans l’espace de noms sn_ml .
- Créez un jeu de données à l’aide de l’API DatasetDefinition .
- Obligatoire si vous utilisez l’algorithme de mise en grappe K-means. Construisez un encodeur à l’aide de l’API Encoder .
- Utilisez le constructeur pour créer un objet de solution de mise en grappe.
- Ajoutez l’objet de solution au magasin de solutions de mise en grappe à l’aide de la méthode ClusteringSolutionStore - add( ).
- Former la solution à l’aide de la méthode submitTrainingJob( ). Cela crée une version de l’objet que vous pouvez gérer à l’aide de l’API ClusteringSolutionVersion .
- Obtenir des prédictions à l’aide de la méthode ClusteringSolutionVersion – predict( ).
Pour connaître des directives d’utilisation, reportez-vous à la section Utilisation des API ML.
ClusteringSolution - ClusteringSolution(Object config)
Crée une solution de grappe.
| Nom | Type | Description |
|---|---|---|
| configuration | Objet | Objet JavaScript contenant les propriétés de configuration de solution. |
| config.algorithmConfig | Objet | Requis sauf si la encoder propriété est définie. Objet JavaScript contenant des propriétés de configuration d’algorithme. Les paramètres de la propriété varient en fonction de la valeur définie dans la algorithm propriété. |
| config.algorithmConfig.algorithm | Chaîne | Méthode de codage de votre solution. Valeurs valides :
Certains utilisateurs préfèrent DBSCAN car il ne vous oblige pas à spécifier le nombre de clusters dans les données avant le clustering. Propriétés pour dbscan:
Propriétés pour hdbscan:
Propriétés pour kmeans: |
| config.algorithmConfig.distanceMetric | Chaîne | Algorithme DBSCAN uniquement. Mesure de distance à analyser pour rechercher des objets de données similaires. Valeurs valides : levenshteinDistance |
| config.algorithmConfig.epsilon | Numéro | Algorithme DBSCAN uniquement. Valeur décimale comprise entre 0 et 1 représentant la taille du rayon de recherche du quartier. |
| config.algorithmConfig.minimumNeighbours | Numéro | Algorithme DBSCAN uniquement. Nombre minimal de voisins requis dans un point pour faire partie d’une grappe. Car levenshteinDistance la valeur doit être 1 afin qu’aucun point ne soit exclu de l’ensemble de données. |
| config.algorithmConfig.minimumSamples | Numéro | Nombre minimum d’échantillons de données dans un quartier requis pour déterminer si un point est un point central. Par défaut : aucun |
| config.algorithmConfig.targetCoverage | Numéro | Algorithme K-moyens uniquement. Champ de centile pour filtrer les enregistrements qui sont moins similaires les uns aux autres. |
| config.clusterConcept | Chaîne | Facultatif. Type de concept. Un concept est un ensemble de mots classés par ordre décroissant de fréquence. Pour générer un concept de grappe basé sur TFIDF, définissez la valeur sur tfidf. Les types de concepts sont répertoriés dans la table Définitions de mise en grappe [ml_capability_definition_clustering]. Par défaut : concept de grappe basé sur la fréquence |
| config.clusterConceptFieldNames | Tableau | Facultatif. Liste des noms de champs de concept des grappes. Ces valeurs sont des colonnes externes pour la création d’un concept de grappe et ne sont pas utilisées pour la formation de solution de grappe. Si des colonnes externes sont fournies, elles ne sont utilisées que pour le concept de grappe et non pour la formation à la solution de mise en grappe. Les champs de concept des grappes sont répertoriés dans la table Définitions de mise en grappe [ml_capability_definition_clustering]. Par défaut : les colonnes de texte d’entrée génèrent le concept de grappe |
| config.ensemble de données | Objet | Nom de l’objet DatasetDefinition . |
| nom.domaine config | Chaîne | Facultatif. Nom de domaine associé à cet ensemble de données. Voir Séparation de domaine et Intelligence prédictive. Par défaut : domaine actuel, par exemple, |
| config.encoder | Objet | Requis sauf si la algorithmConfig propriété est définie sur « levenshteinDistance ». Objet d’encodeur formé à affecter à cette solution. Reportez-vous à Encodeur : encodeur (configuration objet). |
| config.groupByFieldName | Chaîne | Facultatif. Nom de champ par lequel le système regroupe les enregistrements en une ou plusieurs grappes. Dans l’exemple de configuration suivant, le système regroupe chaque type dans une grappe individuelle, ce qui donne 10 grappes.
|
| config.groupUnclusteredRecords | Booléen | Marqueur indiquant s’il faut regrouper les enregistrements non groupés dans les résultats. Valeurs valides :
Valeur par défaut : false |
| config.inputFieldNames | Tableau | Liste des noms de champs d’entrée sous forme de chaînes. Le modèle utilise ces champs utilisés pour faire des prédictions. |
| config.étiquette | Chaîne | Identifie la tâche de prédiction. |
| config.maxTimeWindowForUpdate | Numéro | Facultatif. Nombre de minutes qui précèdent le point de mise à jour du modèle pour rechercher des enregistrements. Par exemple, si la valeur est 15, le système recherche uniquement les enregistrements créés au cours des 15 minutes précédentes. Par défaut, le système analyse tous les enregistrements. |
| config.minRecordsPerCluster | Numéro | Facultatif. Nombre minimum d’enregistrements à autoriser dans n’importe quelle grappe. La valeur doit être supérieure ou égale à 2. Valeur par défaut : 2 |
| config.minRowCount | Chaîne | Facultatif. Nombre minimum d’enregistrements requis dans l’ensemble de données pour la formation. Par défaut : 10000 |
| config.processingLanguage | Chaîne | Langue de traitement au format de code de langue ISO 639-1 à deux lettres. |
| config.mots vides | Tableau | Facultatif. Liste prédéfinie de chaînes que le système génère automatiquement en fonction du paramètre de language propriété. Pour en savoir plus, consultez Créer une liste de mots vides personnalisée. Par défaut : anglais Mots vides |
| config.trainingFrequency | Chaîne | Fréquence de reformation du modèle.
Valeurs possibles :
|
| config.updateFrequency | Fréquence à laquelle le modèle de la définition de la solution doit être reconstruit.
Valeurs possibles :
|
L’exemple suivant montre comment créer un objet et l’ajouter au ClusteringMagasin de solutions. L’exemple montre également comment soumettre l’objet pour la formation.
try{
var myData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'state', 'description'],
'encodedQuery' : 'activeANYTHING'
});
// get a trained encoder from the store
var myEncoder = sn_ml.EncoderStore.get('<encoder_name >');
var mySolution = new sn_ml.ClusteringSolution({
'label': "clustering solution",
'dataset' : myData,
'encoder' : myEncoder,
'inputFieldNames':['short_description'],
'groupByFieldName' : 'category',
'algorithmConfig' : {
'algorithm' : 'kmeans',
'targetCoverage' : '90'
}
});
// add solution
var solutionName = sn_ml.ClusteringSolutionStore.add(mySolution);
var solutionVersion = mySolution.submitTrainingJob();
var trainingStatus = solutionVersion.getStatus();
gs.print(JSON.stringify(JSON.parse(trainingStatus), null, 2));
} catch(ex){
gs.print('Exception caught: '+ ex.getMessage());
}
Sortie :
{
"state": "waiting_for_training",
"percentComplete": "0",
"hasJobEnded": "false"
}
L’exemple suivant montre comment inclure le champ « description » en tant que champ de concept de grappe.
var myIncidentData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'description'],
});
var encodersolutionName = sn_ml.EncoderStore.get('<encoder_name >');
var mySolution = new sn_ml.ClusteringSolution({
'label': 'clustering_test',
'dataset': myIncidentData,
'inputFieldNames': ['short_description'],
'encoder': encodersolutionName,
'clusterConceptFieldNames': ['description']
});
var solutionNameFromStore = sn_ml.ClusteringSolutionStore.add(mySolution);
var myClassifier = mySolution.submitTrainingJob();
ClusteringSolution : cancelTrainingJob()
Annule une tâche pour Un objet de solution qui a été soumis à la formation.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Aucun |
L’exemple suivant montre comment annuler une tâche de formation existante.
var mySolution = sn_ml.ClusteringSolutionStore.get('ml_sn_global_global_clustering');
mySolution.cancelTrainingJob();
ClusteringSolution : getActiveVersion()
Obtient l’actif Objet ClusteringSolutionVersion.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Objet ClusteringSolutionVersion actif. |
L’exemple suivant montre comment obtenir une version active Solution de mise en grappe à partir du magasin et renvoyer son état de formation.
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getStatus()), null, 2));
Sortie :
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution : getAllVersions()
Obtient toutes les versions de une solution de mise en grappe.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Tableau | Versions existantes d’un objet de solution. Voir aussi ClusteringSolutionVersion API. |
L’exemple suivant montre comment obtenir tous les objets de version ClusteringSolution et y appeler les méthodes de version de solution getVersionNumber() et getStatus().
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
var mlSolutionVersions = mlSolution.getAllVersions();
for (i = 0; i < mlSolutionVersions.length; i++) {
gs.print("Version " + mlSolutionVersions[i].getVersionNumber() + " Status: " + mlSolutionVersions[i].getStatus() +"\n");
};
Sortie :
Version 3 Status: {"state":"solution_complete","percentComplete":"100","hasJobEnded":"true"}
Version 2 Status: {"state":"solution_complete","percentComplete":"100","hasJobEnded":"true"}
Version 1 Status: {"state":"solution_cancelled","percentComplete":"0","hasJobEnded":"true"}
ClusteringSolution : getLatestVersion()
Obtient la dernière version de une solution.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | ClusteringSolutionVersion Objet correspondant à la dernière version de a ClusteringSolution(). |
L’exemple suivant montre comment obtenir la dernière version d’une solution et renvoyer son état de formation.
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus()), null, 2));
Sortie :
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution : getName()
Obtient le nom de l’objet à utiliser pour l’interaction avec le magasin.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Nom de l’objet de la solution. |
L’exemple suivant montre comment mettre à jour Solution de mise en grappe informations d’un jeu de données et imprimer le nom de l’objet.
// Update solution
var myIncidentData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'priority'],
'encodedQuery' : 'activeANYTHING'
});
var eligibleFields = JSON.parse(myIncidentData.getEligibleFields('clustering'));
var myCluster = new sn_ml.ClusteringSolution({
'label': "my clustering solution",
'dataset' : myIncidentData,
'inputFieldNames': eligibleFields['eligibleInputFieldNames'],
'predictedFieldName': 'category'
});
// update solution
sn_ml.ClusteringSolutionStore.update('ml_x_snc_global_global_clustering_solution', myCluster);
// print solution name
gs.print('Solution Name: '+myCluster.getName());
Sortie :
Solution Name: ml_x_snc_global_global_clustering_solution
ClusteringSolution - getProperties()
Obtient les propriétés de l’objet de solution.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Contenu du jeu de données et détails de l’objet ClusteringSolution() dans ClusteringSolutionStore. |
| <Object>.config algorithme | Objet JavaScript contenant des propriétés de configuration d’algorithme. Les résultats de la propriété varient en fonction de la valeur fixée dans la algorithm propriété.
Type de données : objet. |
| <Object>.algorithmConfig.algorithme | Méthode de codage de votre solution. Propriétés pour dbscan:
Propriétés pour kmeans:
Type de données : chaîne. |
| <Object>.algorithmConfig.distanceMetric | Algorithme DBSCAN uniquement. Mesure de distance à analyser pour rechercher des objets de données similaires. Type de données : chaîne. |
| <Object>.algorithmConfig.epsilon | Algorithme DBSCAN uniquement. Valeur décimale comprise entre 0 et 1 représentant la taille du rayon de recherche du quartier. Type de données : nombre. |
| <Object>.algorithmConfig.minimumNeighbours | Algorithme DBSCAN uniquement. Nombre minimal de voisins requis dans un point pour faire partie d’une grappe. Car levenshteinDistance la valeur doit être 1 afin qu’aucun point ne soit exclu de l’ensemble de données. Type de données : nombre. |
| <Object>.algorithmConfig.targetCoverage | Algorithme K-moyens uniquement. Champ de centile pour filtrer les enregistrements qui sont moins similaires les uns aux autres. Type de données : nombre. |
| <Object>.datasetProperties | Répertorie les propriétés de l’objet DatasetDefinition() associé à la solution.
Type de données : objet. |
| <Object>.datasetProperties.tableName | Nom de la table de l’ensemble de données. Par exemple, « tableName » : « Incident ». Type de données : chaîne. |
| <Object>.datasetProperties.fieldNames | Liste des noms de champs de la table spécifiée sous forme de chaînes. Par exemple, « fieldNames » : ["short_description », « priority"]. Type de données : tableau. |
| <Object>.datasetProperties.fieldNames.fieldDetails | Liste des objets JavaScript qui spécifient les propriétés des champs.
Type de données : tableau. |
| <Object>.datasetProperties.fieldNames.fieldDetails.<object>. nom | Nom du champ définissant le type d’informations auquel restreindre cet ensemble de données. Type de données : chaîne. |
| <Object>.datasetProperties.fieldDetails.<object>. type | Type de champ d’apprentissage machine. Type de données : chaîne. |
| <Object>.datasetProperties.fieldDetails.encodedQuery | Chaîne de requête codée au format Glide standard. Voir Chaînes de requête codées. Type de données : chaîne. |
| <Object>nom .domainName | Nom de domaine associé à cet ensemble de données. Voir Séparation de domaine et Intelligence prédictive. Type de données : chaîne. |
| <Object>.encoderPropriétés | Objet d’encodeur affecté à cette solution. Reportez-vous à Encodeur : encodeur (configuration objet). Type de données : objet. |
| <Object>.groupByFieldName | Nom de champ par lequel le système regroupe les enregistrements en une ou plusieurs grappes. Type de données : chaîne |
| <Object>.inputFieldNames | Liste des noms de champs d’entrée sous forme de chaînes. Le modèle utilise ces champs utilisés pour faire des prédictions. Type de données : chaîne. |
| <Object>.étiquette | Identifie la tâche de prédiction.
Type de données : chaîne. |
| <Object>.minRecordsPerCluster | Nombre minimum d’enregistrements à autoriser dans n’importe quelle grappe. Type de données : nombre. |
| <Object>.nom | Nom affecté par le système. Type de données : chaîne. |
| <Object>.predictedFieldName | Identifie un champ à former pour la prévisibilité. Type de données : chaîne. |
| <Object>.processingLanguage | Langue de traitement au format de code de langue ISO 639-1 à deux lettres. Type de données : chaîne. |
| <Object>.portée | Périmètre de l’objet. Actuellement, la seule valeur valide est global.Type de données : chaîne |
| <Object>.mots vides | Facultatif. Liste prédéfinie de chaînes que le système génère automatiquement en fonction du paramètre de language propriété. Pour en savoir plus, consultez Créer une liste de mots vides personnalisée. Type de données : tableau. |
| <Object>.trainingFrequency | Fréquence de reformation du modèle. Valeurs possibles :
Type de données : chaîne. |
| <Object>.updateFrequency | Fréquence à laquelle le modèle de la définition de la solution doit être reconstruit. Valeurs possibles :
Type de données : chaîne |
L’exemple suivant obtient les propriétés d’un objet de solution dans le magasin.
var myCluster = new sn_ml.ClusteringSolutionStore.get("ml_x_snc_global_global_clustering_solution");
gs.print(JSON.stringify(JSON.parse(myCluster.getProperties()), null, 2));
*** Script: {
"algorithmConfig": {
"algorithm": "kmeans",
"targetCoverage": "90"
},
"datasetProperties": {
"tableName": "incident",
"fieldNames": [
"category",
"short_description",
"state",
"description"
],
"encodedQuery": "activeANYTHING"
},
"domainName": "global",
"encoderProperties": {
"datasetsProperties": [
{
"tableName": "incident",
"fieldNames": [
"assignment_group",
"short_description",
"description"
],
"encodedQuery": "activeANYTHING"
}
],
"domainName": "global",
"label": "my encoder definition",
"name": "ml_x_snc_global_global_my_encoder_definition",
"processingLanguage": "en",
"scope": "global",
"stopwords": [
"Default English Stopwords"
],
"trainingFrequency": "run_once"
},
"groupByFieldName": "category",
"inputFieldNames": [
"short_description"
],
"label": "clustering solution",
"minRecordsPerCluster": 2,
"name": "ml_x_snc_global_global_clustering_solution",
"processingLanguage": "en",
"scope": "global",
"stopwords": [
"Default English Stopwords"
],
"trainingFrequency": "run_once",
"updateFrequency": "do_not_update"
}}ClusteringSolution : getVersion(version de chaîne)
Obtient une solution Par numéro de version fourni.
| Nom | Type | Description |
|---|---|---|
| version | Chaîne | Numéro de version existante d’une solution. |
| Type | Description |
|---|---|
| Objet | Version spécifiée de l’objet ClusteringSolution() sur lequel vous pouvez appeler les méthodes d’API ClusteringSolutionVersion . |
L’exemple suivant montre comment obtenir l’état de formation d’une solution par numéro de version.
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getVersion('1').getStatus()), null, 2));
Sortie :
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution : setActiveVersion(version de chaîne)
Active une version spécifiée d’une solution dans le magasin.
| Nom | Type | Description |
|---|---|---|
| version | Chaîne | Nom de la version de l’objet ClusteringSolution() à activer. L’activation de cette version désactive toute autre version. |
| Type | Description |
|---|---|
| Aucun |
L’exemple suivant montre comment activer une version de solution dans le magasin.
sn_ml.ClusteringSolution.setActiveVersion("ml_incident_categorization");
ClusteringSolution : submitTrainingJob()
Soumettez une tâche de formation.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | ClusteringSolutionVersion Objet correspondant au cours de ClusteringSolution formation. |
L’exemple suivant montre comment créer un jeu de données, l’appliquer à une solution, ajouter la solution à un magasin et soumettre la tâche de formation.
// Create a dataset
var myData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['assignment_group', 'short_description', 'description'],
'encodedQuery' : 'activeANYTHING'
});
// get a trained encoder from the store
var myEncoder = sn_ml.EncoderStore.get('ml_x_snc_global_global_encoder');
// Create a solution
var mySolution = new sn_ml.ClusteringSolution({
'label': "my solution definition",
'dataset' : myData,
'encoder' : myEncoder,
'predictedFieldName' : 'assignment_group',
'inputFieldNames':['short_description']
});
// Add the solution to the store to later be able to retrieve it.
var my_unique_name = sn_ml.ClusteringSolutionStore.add(mySolution);
// Train the solution - this is a long running job
var myClusterVersion = mySolution.submitTrainingJob();