MLPredictor : global (déconseillé)
L’API MLPredictor fournit des méthodes utilitaires pour Intelligence prédictive les prédictions.
L’API MLPredictor nécessite le module d’extension Intelligence prédictive (com.glide.platform_ml) et est fournie dans l’espace de noms sn_ml .
Cette classe contient toutes les méthodes nécessaires pour obtenir des résultats de prédiction à partir des données d’entrée.
MLPredictor : MLPredictor()
Instancie un nouvel objet MLPredictor.
| Nom | Type | Description |
|---|---|---|
| Aucun |
L’exemple suivant montre comment utiliser un objet MLPredictor dans une règle métier pour enregistrer les valeurs finales après une prédiction.
function executeRule(current, previous /*null when async*/) {
var predictor = new MLPredictor();
predictor.recordFinalValuesInPredictionResults(current, "On close");
}(current, previous);
MLPredictor : applyPrediction (GlideRecord now_GR, solutions de tableau)
Définit les valeurs prévues à partir d’un tableau de solutions spécifiées dans un enregistrement spécifié.
| Nom | Type | Description |
|---|---|---|
| now_GR | GlideRecord | Enregistrement auquel appliquer le tableau des solutions prévues. |
| solutions | Tableau | Objets de solution spécifiés associés au GlideRecord. |
| Type | Description |
|---|---|
| nul |
L’exemple suivant illustre l’utilisation de la méthode applyPrediction() dans une règle métier.
(function executeRule(current, previous /*null when async*/) {
var mlPredictor = new MLPredictor();
//Get the list of active solutions for the glide record table
var solutions = mlPredictor.findActiveSolutionsForRecord(current);
//Run prediction and apply predicted value to the record
mlPredictor.applyPrediction(current, solution);
})(current, previous);
MLPredictor : applyPredictionForSolution(GlideRecord now_GR, solution objet)
Applique une valeur prévue à partir d’une solution de classification spécifiée au GlideRecord spécifié.
Pour chaque solution du GlideRecord, appelez cette méthode pour prédire les résultats et définissez la valeur de champ sur l’incident en fonction de ces résultats.
| Nom | Type | Description |
|---|---|---|
| now_GR | GlideRecord | Objet GlideRecord contenant des valeurs sur lesquelles exécuter une prédiction et appliquer les résultats. |
| solution | Objet | Objet de solution de classification à exécuter. |
| Type | Description |
|---|---|
| Booléen | Vrai en cas de réussite de la prédiction, erreur dans le cas contraire. |
Pour utiliser ce modèle, copiez la règle métier Prédiction basée sur les incidents (modèle), activez le nouvel enregistrement et suivez les instructions commentées pour initialiser la variable solutionNames.
(function executeRule(current, previous /*null when async*/) {
var solutionNames = ["solution1", "solution2", ...];
/* For domain separation (MSP) use case */
// var solutionNames;
// if (current.sys_domain == "A")
// solutionNames = ["solution_A1", "solution_A2", ...];
// else if (current.sys_domain == "B")
// solutionNames = ["solution_B1", "solution_B2", ...];
// else
// ...
var predictor = new MLPredictor();
var info = "";
solutionNames.forEach(function(solutionName) {
var solution = predictor.findActiveSolution(solutionName);
if (!solution)
return;
/* The next line of code does the prediction and updates the current record. */
predictor.applyPredictionForSolution(current, solution);
/* If no prediction is done, do not build the prediction info message. */
if (!predictor.applyPredictionForSolution(current, solution))
return;
/* If user doesn't have 'itil' role, we don't build prediction info message. */
if (!gs.hasRole('itil'))
return;
/* Building prediction info message */
var fieldName = solution.getPredictedField();
var fieldLabel = current.getElement(fieldName).getED().getLabel();
var predictedDisplayValue = current.getDisplayValue(fieldName);
var msg = gs.getMessage("Predicted {0} for {1}.", [predictedDisplayValue, fieldLabel]);
if (info.length > 0)
info += " ";
info += msg;
});
/* Print out prediction info message on screen. */
if (info.length > 0) {
var incidentUrl = "<a href='"+current.getLink()+"'>"+current.number+":</a>";
gs.addInfoMessage(incidentUrl + " " + info);
}
})(current, previous);
MLPredictor : findActiveSolution(String solutionName)
Obtient l’objet de solution.
Cette méthode ne renvoie les solutions que si la définition de ml_solution et la solution sont actives.
| Nom | Type | Description |
|---|---|---|
| solutionName | Chaîne | Nom de l’enregistrement ml_solution. |
| Type | Description |
|---|---|
| Objet | Objet de solution pour le solutionName spécifié si la définition et la solution de ml_solution sont actives, null dans le cas contraire. |
Cet exemple utilise une valeur codée en dur et la transmet à un modèle d’apprentissage machine spécifié. Vous pouvez utiliser les variables de résultat et de confiance pour définir des valeurs ou d’autres logiques métier.
var solutionName = 'ml_incident_assignment';
var shortDescriptionValue = "Unable to connect!"
var input = {
short_description : shortDescriptionValue
};
var MLP = new MLPredictor();
var solution = MLP.findActiveSolution(solutionName);
var predictedOutcome = solution.predictText(input);
var outcome = predictedOutcome.predictedValue();
var confidence = predictedOutcome.confidence();
gs.info("Predicted value: " + outcome)
gs.info("Confidence: " + confidence)
Sortie :
DxC_ML:
******* Finished Prediction********* *** Script: Predicted value: Software *** Script:
Confidence: 80.78079080096245
MLPredicteur : findActiveSolutionsForRecord(GlideRecord now_GR)
Obtient les solutions actives pour une table dans un GlideRecord spécifié.
| Nom | Type | Description |
|---|---|---|
| now_GR | GlideRecord | GlideRecord à partir duquel collecter les objets de solution actifs. |
| Type | Description |
|---|---|
| Tableau | Tableau d’objets de solution actifs associés à la table à laquelle l’enregistrement spécifié est destiné. |
Ce script transmet un GlideRecord (comme un incident) et traite toutes les solutions pour le GlideRecord, en renvoyant les valeurs pour chacune.
/* This is only to get a hard-coded GR */
var current = new GlideRecord('incident');
current.get('965c9e5347c12200e0ef563dbb9a7156');
var predictor = new MLPredictor();
var solutions = predictor.findActiveSolutionsForRecord(current);
solutions.forEach(function(solution) {
var outcome = solution.predict(current);
/* Use this to set the field to the predicted value in the GlideRecord */
var fieldName = solution.getPredictedField();
current[fieldName] = outcome.predictedValue();
current.update();
gs.info("Predicted value: " + outcome.predictedValue())
gs.info("Confidence: " + outcome.confidence())
});
Sortie (prédiction du groupe d’affectation) :
DxC_ML: ******* Finished Prediction*********
*** Script: Predicted value: Software *** Script: Confidence:
99.74530683715315
Sortie (prédiction de catégorie) :
DxC_ML:
******* Finished Prediction********* *** Script: Predicted value: Software *** Script:
Confidence: 98.7172805135524
MLPredictor : getPredictedValue (solution d’objet, résultat de l’objet)
Obtient la valeur prévue pour une solution spécifiée en fonction du résultat de prédiction spécifié.
| Nom | Type | Description |
|---|---|---|
| solution | Objet | Solution à partir de laquelle obtenir la valeur prévue. |
| résultat | Objet | Résultats du résultat de prédiction pour la solution spécifiée (résultat var = solution.predict(now_GR)). |
| Type | Description |
|---|---|
| Chaîne | Valeur prévue pour la solution spécifiée en fonction du résultat spécifié de la prédiction. |
| Zéro | Renvoie null si la confiance de prédiction ne satisfait pas les seuils. |
MLPredictor : getPredictions (GlideRecord now_GR, solution d’objet, options d’objet)
Obtient les prédictions pour une solution spécifiée.
| Nom | Type | Description |
|---|---|---|
| now_GR | GlideRecord | GlideRecord à prédire. |
| solution | Objet | Objet de solution à exécuter. |
| options | Objet | Paire de valeurs d’objet JSON facultative avec les propriétés suivantes :
|
| Type | Description |
|---|---|
| Tableau | Tableau d’objets de résultats prévus |
L’exemple suivant appelle une solution spécifiée et exécute des prédictions sur celle-ci.
function printOutcomeArr(outcomeArr) {
gs.print('################## Results ##################');
for (var i=0; i<outcomeArr.length; i++) {
var outcome = outcomeArr[i];
gs.print((i+1) + ' : ' + outcome.predictedValue() + ', ' + outcome.predictedValueSysId() + ', ' + outcome.confidence());
}
}
var solutionName = 'ml_x_snc_global_prop_flip_test';
var predictor = new MLPredictor();
var solution = predictor.findActiveSolution(solutionName);
var now_GR = new GlideRecord('incident');
now_GR.get('1c741bd70b2322007518478d83673af3');
var options = {};
options.top_n = '10'; // top_n is an integer between 1 and 1000
options.apply_threshold = false; // Value can be set to true or false
printOutcomeArr(predictor.getPredictions(now_GR, solution, options));
MLPredictor : isClassificationSolution(solution objet)
Identifie si un objet de solution est un type de classification.
| Nom | Type | Description |
|---|---|---|
| solution | Objet | Nom de la solution ML. |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur Vrai si la solution d’entrée est un type de classification et Faux dans les autres cas. |
var isClassificationSolution = this.isClassificationSolution(solution);
//classification solution each class has different threshold
//therefore needs to get all the results from ml engine
if (applyThreshold && isClassificationSolution) {
var maxClassificationTopN = 50;
outcomeArr = solution.predictTopN(now_GR, maxClassificationTopN);
}
else {
outcomeArr = solution.predictTopN(now_GR, topN);
}
if (outcomeArr === null) {
//instead of returning null returning empty array
return [];
}
MLPredictor : isSimilaritySolution(solution d’objet)
Identifie si un objet de solution est un type de similarité.
| Nom | Type | Description |
|---|---|---|
| solution | Objet | Nom de la solution ML ; Par exemple, ml_incident_categorization. |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur Vrai si la solution d’entrée est un type de similarité et Faux dans les autres cas. |
MLPredictor : outcome.confidence()
Obtient la confiance de la valeur prévue.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Précision estimée de la prédiction, en pourcentage. Par exemple, 53.84615375762915. |
var MLP = new MLPredictor();
var solution = MLP.findActiveSolution(solutionName);
var predictedOutcome = solution.predictText(input);
var outcome = predictedOutcome.predictedValue();
var confidence = predictedOutcome.confidence();
gs.info("Predicted value: " + outcome)
gs.info("Confidence: " + confidence)
MLPredictor : outcome.predictedValue()
Obtient la valeur prédite à partir de l’objet de résultat MLPredictor.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Valeur prévue à partir de l’objet Résultat. |
var MLP = new MLPredictor();
var solution = MLP.findActiveSolution(solutionName);
var predictedOutcome = solution.predictText(input);
var outcome = predictedOutcome.predictedValue();
var confidence = predictedOutcome.confidence();
gs.info("Predicted value: " + outcome)
gs.info("Confidence: " + confidence)
MLPredictor : outcome.predictedValueSysId()
Obtient la sys_id de la valeur prédite.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Valeur prévue sys_id. |
function printOutcomeArr(outcomeArr) {
gs.print('################## Results ##################');
for (var i=0; i<outcomeArr.length; i++) {
var outcome = outcomeArr[i];
gs.print((i+1) + ' : ' + outcome.predictedValue() + ', ' + outcome.predictedValueSysId() + ', ' + outcome.confidence());
}
MLPredictor : recordFinalValuesInPredictionResults(GlideRecord now_GR, motif de chaîne)
Définit les valeurs de résultat de prédiction finales sur un GlideRecord spécifié avec un motif spécifié en option.
| Nom | Type | Description |
|---|---|---|
| now_GR | GlideRecord | GlideRecord sur lequel définir les valeurs des résultats de prédiction finaux. |
| motif | Chaîne | Facultatif. Motif de l’application des résultats. |
| Type | Description |
|---|---|
| nul |
Dans l’exemple suivant, la méthode recordFinalValuesInPredictionResults() est appelée lorsque l’incident est fermé.
(function executeRule(current, previous /*null when async*/) {
var predictor = new MLPredictor();
predictor.recordFinalValuesInPredictionResults(current, "On close");
})(current, previous);
MLPredictor : solution.getCapability()
Obtient les informations sur l’aptitude d’une solution formée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | ID de définition et version de la solution formée, sinon message d’erreur |
MLPredictor : solution.getName()
Obtient le nom de la solution utilisée pour la prédiction.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Le nom de la solution à utiliser pour les prédictions ; Par exemple, ml_incident_categorization |
MLPredictor : solution.getPredictedField()
Obtient la valeur prévue d’une solution.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Valeur du champ de sortie prévu d’une solution |
/* Get a hard-coded GR */
var current = new GlideRecord('incident');
current.get('965c9e5347c12200e0ef563dbb9a7156');
var predictor = new MLPredictor();
var solutions = predictor.findActiveSolutionsForRecord(current);
solutions.forEach(function(solution) {
var outcome = solution.predict(current);
/* Use this to set the field to the predicted value in the GlideRecord */
var fieldName = solution.getPredictedField();
current[fieldName] = outcome.predictedValue();
current.update();
gs.info("Predicted value: " + outcome.predictedValue())
gs.info("Confidence: " + outcome.confidence())
});
MLPredictor : solution.getThreshold(String className)
Obtient le seuil de la solution.
Le seuil représente un pourcentage reflétant la précision de prédiction minimale.
| Nom | Type | Description |
|---|---|---|
| className | Chaîne | Valeur catégorielle spécifiée du champ de sortie de la solution |
| Type | Description |
|---|---|
| Numéro | La valeur du seuil représentée sous forme de pourcentage compris entre 0 et 100. |
MLPredictor : solution.getVersion()
Obtient la version de la solution active.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Version de la solution active |
MLPredictor : solution.isActive()
Détermine si la solution spécifiée est active.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Vrai si la solution est active, faux dans les autres cas |
MLPredictor : solution.predict (GlideRecord now_GR, seuil d’objet)
Obtient les résultats de prédiction de solution en tant qu’objet Résultat.
| Nom | Type | Description |
|---|---|---|
| now_GR | GlideRecord | GlideRecord de la table d’entrée de la solution |
| seuil | Objet | Valeur de seuil (seuil du niveau de la solution pour la similarité, seuil du niveau de la classe pour la classification) |
| Type | Description |
|---|---|
| Objet | Résultat de prédiction résultat de la solution spécifiée (résultat var = solution.predict(now_GR)) |
solutions.forEach(function(solution) {
var outcome = solution.predict(current);
/* Use this to set the field to the predicted value in the GlideRecord
var fieldName = solution.getPredictedField();
current[fieldName] = outcome.predictedValue();
current.update();
*/
gs.info("Predicted value: " + outcome.predictedValue())
gs.info("Confidence: " + outcome.confidence())
});
MLPredictor : solution.predictTopN(GlideRecord now_GR, Objet topN)
Renvoie une liste d’objets de résultats jusqu’au nombre attendu de prédictions. Nombre maximum de 1 000 prédictions.
| Nom | Type | Description |
|---|---|---|
| now_GR | GlideRecord | GlideRecord de la solution |
| topN | Objet | Nombre attendu de prédictions, tout nombre supérieur à 1 000 renvoie 1 000 résultats |
| Type | Description |
|---|---|
| Tableau | Liste des objets de résultats dans un tableau comprenant GlideRecord, le seuil, l’ID système et le nombre attendu de prédictions (objet topN) |
var isClassificationSolution = this.isClassificationSolution(solution);
//classification solution each class has different threshold
//therefore needs to get all the results from ml engine
if (applyThreshold && isClassificationSolution) {
var maxClassificationTopN = 50;
outcomeArr = solution.predictTopN(now_GR, maxClassificationTopN);
}
else {
outcomeArr = solution.predictTopN(now_GR, topN);
}
if (outcomeArr === null) {
//instead of returning null returning empty array
return [];
}