ClusteringSolution - Global

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 12 minutes de lecture
  • L’API ClusteringSolution est un objet pouvant contenir des scripts utilisé dans Intelligence prédictive les 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 .

    Le flux de la configuration à la formation de la solution est le suivant :
    1. Créez un ensemble de données à l’aide de l’API DatasetDefinition .
    2. Utilisez le constructeur pour créer un objet de solution de mise en grappe.
    3. Ajoutez l’objet de solution au magasin de solutions de mise en grappe à l’aide de la méthode ClusteringSolutionStore : add( ).
    4. Entraînez 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 .
    Remarque :
    Cette API s’exécute avec tous les privilèges avant les versions du correctif 7, du correctif 2b et Washington DC du Vancouver correctif 7. Avec les versions ultérieures, accordez l’accès à l’aide d’ACL. Pour plus d’informations, reportez-vous à Query ACLs.

    Pour connaître des directives d’utilisation, consultez Utilisation des API ML.

    ClusteringSolution : ClusteringSolution(Configuration de l’objet)

    Crée une solution de grappe.

    Tableau 1. Paramètres
    Nom Type Description
    config Objet Objet JavaScript contenant les propriétés de configuration de la solution.
    {
      "algorithmConfig": {Object},
      "clusterConcept": "String",
      "clusterConceptFieldNames": [Array],
      "dataset": {Object},
      "domainName": "String",
      "groupByFieldName": "String",
      "groupUnclusteredRecords": Boolean,
      "inputFieldNames": [Array],
      "label": "String",
      "maxTimeWindowForUpdate" : Number,
      "minRecordsPerCluster" : Number,
      "minRowCount": "String",
      "processingLanguage": "String",
      "stopwords": [Array],
      "trainingFrequency": "String",
      "updateFrequency": "String"
    }
    config.algorithmConfig Objet Requis. Objet JavaScript contenant des propriétés de configuration d’algorithme. Les paramètres de propriété varient en fonction de la valeur définie dans la algorithm propriété.
    'algorithmConfig': {
      "algorithm": "String",  
      // See algorithmConfig.algorithm setting description for property settings based on algorithm
    }
    config.algorithmConfig.algorithme Chaîne Méthode d’encodage de votre solution.
    Valeurs valides :
    • dbscan – Algorithme de clustering DBSCAN (Density-Based Spatial Clustering of Applications with Noise). Propriétés utilisées avec cet algorithme :
      • distanceMetric
      • epsilon
      • minimumNeighbours
    • hdbscan – Algorithme de clustering HDBSCAN (Hierarchical Density Spatial Clustering of Applications with Noise). Propriétés utilisées avec cet algorithme :
      • minimumSamples
    • kmeans – Algorithme de clustering K-means. Par défaut. La targetCoverage propriété est utilisée avec cet algorithme.

    Certains utilisateurs préfèrent DBSCAN car il ne vous oblige pas à spécifier le nombre de clusters dans les données avant le cluster.

    Propriétés pour dbscan:
    'algorithmConfig': {
      "algorithm": "dbscan",
      "distanceMetric": "String",
      "epsilon": Number,
      "minimumNeighbours": Number
    }
    Propriétés pour hdbscan:
    'algorithmConfig': {
      "algorithm": "hdbscan",
      "minimumSamples": Number
    }
    Propriétés pour kmeans:
    'algorithmConfig': {
      "algorithm": "kmeans",
      "targetCoverage": Number
    }
    config.algorithm.config.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 minimum de voisins requis en un point pour faire partie d’une grappe. Car levenshteinDistance la valeur doit être 1 afin qu’aucun point ne soit exclu du jeu 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-moyennes 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 utilisées pour créer un concept de grappe et ne sont pas utilisées pour la formation de solutions de grappes. Si des colonnes externes sont fournies, elles ne sont utilisées que pour le concept de grappe et non pour la formation de solutions 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 la grappe

    ensemble de données.config Objet Nom de l’objet DatasetDefinition .
    config.domainName 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, « global ».

    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.
    • groupByFieldName La valeur est « catégorie »
    • La valeur DatasetDefinition tableName est « incident »
    • La table Incident [incident] comporte 10 types de catégories
    config.groupUnclusteredRecords Booléen

    Marqueur indiquant s’il faut regrouper les enregistrements non groupés dans les résultats.

    Valeurs valides :
    • vrai : regrouper les enregistrements non groupés séparément dans les résultats.
    • faux : ne pas regrouper les enregistrements non groupés dans les résultats. Les valeurs non groupées (-1) s’affichent avec le reste des résultats.

    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 effectuer des prédictions.
    config.étiquette Chaîne Identifie la tâche de prédiction.
    config.maxTimeWindowForUpdate Numéro Facultatif. Nombre de minutes précédant 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.

    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 : 10 000

    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 plus d’informations, voir 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 :
    • every_30_days
    • every_60_days
    • every_90_days
    • every_120_days
    • every_180_days
    • run_once
    Par défaut : run_once
    config.updateFrequency Fréquence à laquelle le modèle de définition de la solution doit être reconstruit.
    Valeurs possibles :
    • do_not_update
    • every_1_day
    • every_1_hour
    • every_6_hours
    • every_12_hours
    • every_1_minute
    • every_15_minutes
    • every_30_minutes
    Par défaut : do_not_update

    L’exemple suivant montre comment créer un objet et l’ajouter à la Magasin ClusteringSolution. L’exemple montre également comment soumettre l’objet à la formation.

    try{
        var myData = new sn_ml.DatasetDefinition({
            'tableName' : 'incident',
            'fieldNames' : ['category', 'short_description', 'state', 'description'],
            'encodedQuery' : 'activeANYTHING'
        });
          
        var mySolution = new sn_ml.ClusteringSolution({
            'label': "clustering solution",
            'dataset' : myData,
            '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 mySolution = new sn_ml.ClusteringSolution({
    	'label': 'clustering_test',
    	'dataset': myIncidentData,
    	'inputFieldNames': ['short_description'],
    	'clusterConceptFieldNames': ['description']
    });
    
    var solutionNameFromStore = sn_ml.ClusteringSolutionStore.add(mySolution);
    var myClassifier = mySolution.submitTrainingJob(); 

    ClusteringSolution : cancelTrainingJob()

    Annule une tâche pour Objet de solution qui a été soumis pour la formation.

    Tableau 2. Paramètres
    Nom Type Description
    Néant
    Tableau 3. Renvoie
    Type Description
    Néant

    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.

    Tableau 4. Paramètres
    Nom Type Description
    Néant
    Tableau 5. Renvoie
    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.

    Tableau 6. Paramètres
    Nom Type Description
    Néant
    Tableau 7. Renvoie
    Type Description
    Tableau Versions existantes d’un objet de solution. Voir également ClusteringSolutionVersion API.

    L’exemple suivant montre comment obtenir tous les objets de version de 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.

    Tableau 8. Paramètres
    Nom Type Description
    Néant
    Tableau 9. Renvoie
    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.

    Tableau 10. Paramètres
    Nom Type Description
    Néant
    Tableau 11. Renvoie
    Type Description
    Chaîne Nom de l’objet de 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.

    Tableau 12. Paramètres
    Nom Type Description
    Néant
    Tableau 13. Renvoie
    Type Description
    Objet Contenu de l’ensemble de données et détails de l’objet ClusteringSolution() dans le ClusteringSolutionStore.
    {
      "algorithmConfig": {Object},
      "datasetProperties": {Object},
      "domainName": "String",
      "groupByFieldName": "String",
      "inputFieldNames": [Array],
      "label": "String",
      "minRecordsPerCluster" : Number,
      "name": "String",
      "processingLanguage": "String",
      "scope": "String",
      "stopwords": [Array],
      "trainingFrequency": "String",
      "updateFrequency": "String"
    }
    <Object>.algorithmConfig 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é.
    'algorithmConfig' : {
      "algorithm": "String",  
      // See algorithmConfig.algorithm setting description for property settings based on algorithm
    }

    Type de données : objet.

    <Object>.algorithmConfig.algorithme Méthode d’encodage de votre solution.
    Propriétés pour dbscan:
    'algorithmConfig': {
      "algorithm": "dbscan",
      "distanceMetric": "String",
      "epsilon": Number,
      "minimumNeighbours": Number
    }
    Propriétés pour kmeans:
    'algorithmConfig': {
      "algorithm": "kmeans",
      "targetCoverage": Number
    }

    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 minimum de voisins requis en un point pour faire partie d’une grappe. Car levenshteinDistance la valeur doit être 1 afin qu’aucun point ne soit exclu du jeu de données.

    Type de données : nombre.

    <Object>.algorithmConfig.targetCoverage Algorithme K-moyennes 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.

    {
      "encodedQuery": "String",
      "fieldDetails": [Array],
      "fieldNames": [Array],
      "tableName": "String"
    }

    Type de données : objet.

    <Object>.datasetProperties.tableName Nom de la table pour 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.
    [
      {
        "name": "String",
        "type": "String"
      }
    ]

    Type de données : tableau.

    <Object>.datasetProperties.fieldNames.fieldDetails.<object>. Name (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>.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>.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 effectuer des prédictions.

    Type de données : chaîne.

    <Object>.étiquette Identifie la tâche de prédiction.
    {
      "label": "my first prediction"
    }

    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>.champ d’application 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 plus d’informations, voir 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 :
    • every_30_days
    • every_60_days
    • every_90_days
    • every_120_days
    • every_180_days
    • run_once
    Par défaut : run_once

    Type de données : chaîne.

    <Object>.updateFrequency Fréquence à laquelle le modèle de définition de la solution doit être reconstruit.
    Valeurs possibles :
    • do_not_update
    • every_1_day
    • every_1_hour
    • every_6_hours
    • every_12_hours
    • every_1_minute
    • every_15_minutes
    • every_30_minutes
    Par défaut : do_not_update

    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));
    Sortie :
    *** Script: {
      "algorithmConfig": {
        "algorithm": "kmeans",
        "targetCoverage": "90"
      },
      "datasetProperties": {
        "tableName": "incident",
        "fieldNames": [
          "category",
          "short_description",
          "state",
          "description"
        ],
        "encodedQuery": "activeANYTHING"
      },
      "domainName": "global",
      "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.

    Tableau 14. Paramètres
    Nom Type Description
    version Chaîne Numéro de version existante d’une solution.
    Tableau 15. Renvoie
    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.

    Tableau 16. Paramètres
    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.

    Tableau 17. Renvoie
    Type Description
    Néant

    L’exemple suivant montre comment activerune version de solution dans le magasin.

    sn_ml.ClusteringSolution.setActiveVersion("ml_incident_categorization");

    ClusteringSolution : submitTrainingJob()

    Soumettez une tâche de formation.

    Remarque :
    Avant d’exécuter cette méthode, vous devez d’abord ajouter une solution au magasin à l’aide de la méthode ClusteringSolutionStore - add().
    Tableau 18. Paramètres
    Nom Type Description
    Néant
    Tableau 19. Renvoie
    Type Description
    Objet ClusteringSolutionVersion objet correspondant à la ClusteringSolution formation.

    L’exemple suivant montre comment créer un ensemble 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'
    
    });
    
    // Create a solution 
    var mySolution = new sn_ml.ClusteringSolution({
    
      'label': "my solution definition",
      'dataset' : myData,
      '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();