ClassificationSolution - Global
The ClassificationSolution API is a scriptable object used in Predictive Intelligence stores.
This API requires the Predictive Intelligence plugin (com.glide.platform_ml) and is provided
within the sn_ml namespace.
- Create a dataset using the DatasetDefinition API.
- Optional. Build an encoder using the Encoder API.
- Use the constructor to create a classification solution object.
- Add the solution object to the classification solution store using the ClassificationSolutionStore - add() method.
- Train the solution using the submitTrainingJob() method. This creates a version of the object that you can manage using the ClassificationSolutionVersion API.
- Get predictions using the ClassificationSolutionVersion – predict() method.
For usage guidelines, refer to Using ML APIs.
ClassificationSolution - ClassificationSolution(Object config)
Creates a classification solution.
| Name | Type | Description |
|---|---|---|
| config | Object | JavaScript object containing configuration
properties of the solution. |
| config.algorithmConfig | Object | JavaScript object containing algorithm
configuration properties.
|
| config.algorithmConfig.algorithm | String | Method for
encoding your solution.
Possible values:
|
| config.algorithmConfig.targetClassRecall | String | Applies a class recall parameter to steer a solution's training to bias a
specific class. Format is "<ClassName:RecallValue>" where the
recall value is a number between 0 and 100 representing a percentage. For example,
to set and apply this solution parameter to 90% accuracy for all records you train
in the Email class, the value is set to "Email:90". |
| config.dataset | Object | DatasetDefinition name. |
| config.domainName | String | Optional. Domain name associated with this dataset.
Default: Current domain, for example, |
| config.encoder | Object | Optional. Trained encoder object to assign to this solution. See Encoder - Encoder(Object config). |
| config.explainability | Boolean | Flag that indicates whether to provide model explainability. Use model explainability to identify the importance of each input field to your model's predictions. Valid values:
Default: false See also: Model Explainability |
| config.groupByFieldName | String | Optional. Field name by which the system groups records to build classification solutions. For usage information, see Using group by for classification. |
| config.inputFieldNames | Array | List of input field names as strings. The model uses these fields used to make predictions. |
| config.label | String | Identifies the prediction task. |
| config.minRowCount | String | Optional. Minimum number of records required in
the dataset for training. Default: 10000 |
| config.predictedFieldName | String | Identifies a field to be trained for predictability. |
| config.processingLanguage | String | Optional. Processing language in two-letter ISO 639-1 language code format.
Default: "en" |
| config.stopwords | Array | Optional. Preset
list of strings that the system automatically generates based on the
language property setting. For details, see Create a custom stopwords
list.
Default: English Stopwords |
| config.trainingFrequency | String | The frequency to retrain the model.
Possible values:
|
The following example shows how to create an object and add it to the ClassificationSolution store.
var myData = new sn_ml.DatasetDefinition(
{
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'priority'],
'fieldDetails' : [
{
'name' : 'category',
'type' : 'nominal'
},
{
'name' : 'short_description',
'type' : 'text'
}],
'encodedQuery' : 'activeANYTHING'
});
var mySolution = new sn_ml.ClassificationSolution({
'label': "my solution definition",
'dataset' : myData,
'predictedFieldName' : 'category',
'inputFieldNames': ['short_description']
});
var myClassificationName = sn_ml.ClassificationSolutionStore.add(mySolution);
ClassificationSolution - cancelTrainingJob()
Cancels a job for a solution object that has been submitted for training.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| None |
The following example shows how to cancel an existing training job.
var mySolution = sn_ml.ClassificationSolutionStore.get('ml_sn_global_global_classification');
mySolution.cancelTrainingJob();
ClassificationSolution - getActiveVersion()
Gets the active ClassificationSolutionVersion object.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | Active ClassificationSolutionVersion object. |
The following example shows how to get an active ClassificationSolution version from the store and return its training status.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_classification');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getStatus()), null, 2));
Output:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClassificationSolution - getAllVersions()
Gets all versions of a classification solution.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Array | Existing versions of a solution object. See also ClassificationSolutionVersion API. |
The following example shows how to get all ClassificationSolution version objects and call the getVersionNumber() and getStatus() solution version methods on them.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_classification');
var mlSolutionVersions = mlSolution.getAllVersions();
for (i = 0; i < mlSolutionVersions.length; i++) {
gs.print("Version " + mlSolutionVersions[i].getVersionNumber() + " Status: " + mlSolutionVersions[i].getStatus() +"\n");
};
Output:
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"}
ClassificationSolution - getLatestVersion()
Gets the latest version of a solution.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | ClassificationSolutionVersion object corresponding to the latest version of a ClassificationSolution(). |
The following example shows how to get the latest version of a solution and return its training status.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_classification');
gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus()), null, 2));
Output:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClassificationSolution - getName()
Gets the name of the object to use for interaction with the store.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| String | Name of the solution object. |
The following example shows how to update ClassificationSolution dataset information and print the name of the object.
// Update solution
var myIncidentData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'priority'],
'encodedQuery' : 'activeANYTHING'
});
var eligibleFields = JSON.parse(myIncidentData.getEligibleFields('classification'));
var myClassification = new sn_ml.ClassificationSolution({
'label': "my classification solution",
'dataset' : myIncidentData,
'inputFieldNames': eligibleFields['eligibleInputFieldNames'],
'predictedFieldName': 'category'
});
// update solution
sn_ml.ClassificationSolutionStore.update('ml_x_snc_global_global_my_solution_definition_4', myClassification);
// print solution name
gs.print('Solution Name: '+myClassification.getName());
Output:
Solution Name: ml_x_snc_global_global_my_solution_definition_4
ClassificationSolution - getProperties()
Gets solution object properties.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | Contents of the Dataset and ClassificationSolution() object details in the ClassificationSolutionStore. |
| <Object>.algorithmConfig | Method for encoding
the solution.
Data type: Object. |
| <Object>.algorithmConfig.algorithm | Name of the
encoding algorithm for training this solution.
Possible values:
Data type: String. |
| <Object>.algorithmConfig.targetClassRecall | Class recall parameter to steer
a solution's training to bias a specific class. The recall value is a number between
0 and 100 representing a percentage. Data type: String |
| <Object>.datasetProperties | Lists the properties of the DatasetDefinition() object associated with the solution.
Data type: Object. |
| <Object>.datasetProperties.tableName | Name of the table for the dataset. For
example, "tableName" : "Incident".
Data type: String. |
| <Object>.datasetProperties.fieldNames | List of field names from the specified table
as strings. For example, "fieldNames" : ["short_description",
"priority"].
Data type: Array. |
| <Object>.datasetProperties.fieldNames.fieldDetails | List of JavaScript objects that specify field
properties.
Data type: Array. |
| <Object>.datasetProperties.fieldNames.fieldDetails.<object>.name | Name of the field defining the type of
information to restrict this dataset to.
Data type: String. |
| <Object>.datasetProperties.fieldDetails.<object>.type | Machine-learning field type.
Data type: String. |
| <Object>.datasetProperties.fieldDetails.encodedQuery | Encoded query string in the standard platform format. See Encoded query strings. Data type: String. |
| <Object>.domainName | Domain name associated with this dataset. See Domain separation and Predictive Intelligence. Type: String |
| <Object>.encoder | Encoder object assigned to this
solution. See Encoder - Encoder(Object config). Data type: Object. |
| <Object>.groupByFieldName | Field name
by which the system groups records to build classification solutions.
Data type: String |
| <Object>.inputFieldNames | List of input field names as strings. The
model uses these fields used to make
predictions.
Data type: String. |
| <Object>.label | Identifies the prediction
task.
Data type: String. |
| <Object>.name | System-assigned name.
Data type: String. |
| <Object>.predictedFieldName | Identifies a field to be trained for
predictability.
Data type: String. |
| <Object>.processingLanguage | Processing language in two-letter ISO 639-1 language code format.
Data type: String. |
| <Object>.scope | Object scope. Currently the only valid value is
global.Data type: String |
| <Object>.stopwords | Optional. Preset
list of strings that the system automatically generates based on the
language property setting. For details, see Create a custom stopwords
list.
Data type: Array. |
| <Object>.trainingFrequency | The frequency to retrain the model.
Possible values:
Data type: String. |
The following example gets properties of a solution object in the store.
var mySolution = sn_ml.ClassificationSolutionStore.get('ml_sn_global_global_classification_solution');
gs.print(JSON.stringify(JSON.parse(mySolution.getProperties()), null, 2));
*** Script: {
"datasetProperties": {
"tableName": "incident",
"fieldNames": [
"category",
"short_description",
"priority",
"assignment_group.name"
],
"fieldDetails": [
{
"name": "category",
"type": "nominal"
},
{
"name": "short_description",
"type": "text"
}
]
},
"domainName": "global",
"inputFieldNames": [
"short_description"
],
"label": "my solution definition",
"name": "ml_x_snc_global_global_my_solution_definition_26",
"predictedFieldName": "category",
"processingLanguage": "en",
"scope": "global",
"stopwords": [
"Default English Stopwords"
],
"trainingFrequency": "run_once"
}ClassificationSolution - getVersion(String version)
Gets a solution by provided version number.
| Name | Type | Description |
|---|---|---|
| version | String | Existing version number of a solution. |
| Type | Description |
|---|---|
| Object | Specified version of the ClassificationSolution() object on which you can call ClassificationSolutionVersion API methods. |
The following example shows how to get the training status of a solution by version number.
var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_classification');
gs.print(JSON.stringify(JSON.parse(mlSolution.getVersion('1').getStatus()), null, 2));
Output:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClassificationSolution - setActiveVersion(String version)
Activates a specified version of a solution in the store.
| Name | Type | Description |
|---|---|---|
| version | String | Name of the ClassificationSolution() object version to
activate. Activating this version deactivates any other version. |
| Type | Description |
|---|---|
| None |
The following example shows how to activate a solution version in the store.
sn_ml.ClassificationSolution.setActiveVersion("ml_incident_categorization");
ClassificationSolution - submitTrainingJob()
Submits a training job.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| Object | ClassificationSolutionVersion object corresponding to the ClassificationSolution being trained. |
The following example shows how to create a dataset, apply it to a solution, add the solution to a store, and submit the training job.
// 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.ClassificationSolution({
'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.ClassificationSolutionStore.add(mySolution);
// Train the solution - this is a long running job
var myClassifierVersion = mySolution.submitTrainingJob();