ClusteringSolution - Global
A API ClusteringSolution é um objeto programável usado em armazenamentos Inteligência preditiva.
Este A API requer o plug-in Inteligência preditiva (com.glide.platform_ml) e é fornecida no namespace sn_ml.
- Crie um conjunto de dados usando a API DatasetDefinition.
- Obrigatório se estiver usando o algoritmo de cluster K-means. Crie um codificador usando a API Encoder.
- Use o construtor para criar um objeto de solução de clustering.
- Adicione o objeto de solução ao armazenamento de soluções de clustering usando o método ClusteringSolutionStore - add().
- Treine a solução usando o método submitTrainingJob(). Isso cria uma versão do objeto que você pode gerenciar usando a API ClusteringSolutionVersion.
- Obtenha previsões usando o método ClusteringSolutionVersion – forecast().
Para obter diretrizes de uso, consulte Uso de APIs de ML.
ClusteringSolution - ClusteringSolution(configuração do objeto)
Cria uma solução de cluster.
| Nome | Tipo | Descrição |
|---|---|---|
| config | Objeto | Objeto JavaScript que contém propriedades de configuração do solução. |
| config.algoritmoConfig | Objeto | Obrigatório, exceto ao definir a propriedade encoder. Objeto JavaScript que contém propriedades de configuração do algoritmo. As configurações de propriedade variam de acordo com o valor definido na propriedade algorithm. |
| config.algorithmConfig.algorithm | Cadeia de caracteres | Método para codificar sua solução. Valores válidos:
Alguns usuários preferem o DBSCAN porque ele não requer que você especifique o número de clusters nos dados antes do clustering. Propriedades para dbscan:
Propriedades para hdbscan:
Propriedades para kmeans: |
| config.algorithmConfig.istanceMetric | Cadeia de caracteres | Somente algoritmo DBSCAN. Métrica de distância para verificar objetos de dados semelhantes. Valores válidos: levenshteinDistance |
| config.algorithmConfig.eposilon | Número | Somente algoritmo DBSCAN. Valor decimal entre 0 e 1 que representa o tamanho do raio de pesquisa do bairro. |
| config.algoritmoConfig.minimoVizinhos | Número | Somente algoritmo DBSCAN. Número mínimo de vizinhos necessários em um ponto para fazer parte de um cluster. Para levenshteinDistance, o valor deve ser 1 para que nenhum ponto seja excluído do conjunto de dados. |
| config.algorithmConfig.minimumSamples | Número | Número mínimo de amostras de dados em um bairro necessário para determinar se um ponto é um ponto principal. Padrão: Nenhum |
| config.algorithmConfig.targetCoverage | Número | Somente o algoritmo K-means. Campo Percentil para filtrar registros menos semelhantes entre si. |
| config.clusterConcept | Cadeia de caracteres | Opcional. Tipo de conceito. Um conceito é um conjunto de palavras listadas em ordem decrescente de frequência. Para gerar um conceito de cluster baseado em TFIDF, defina o valor como tfidf. Os tipos de conceito são listados na tabela Definições de cluster [ml_capability_definition_clustering]. Padrão: conceito de cluster baseado em frequência |
| config.clusterConceptFieldNames | Matriz | Opcional. Lista de nomes de campo de conceito de cluster. Esses valores são colunas externas para criar um conceito de cluster e não são usados para treinamento de solução de cluster. Se colunas externas forem fornecidas, elas serão usadas somente para o conceito de cluster e não para o treinamento da solução de cluster. Os campos de conceito de cluster são listados na tabela Definições de cluster [ml_capability_definition_clustering]. Padrão: colunas de texto de entrada geram o conceito de cluster |
| config.conjunto de dados | Objeto | Nome do objetoDatasetDefinition. |
| config.domainName | Cadeia de caracteres | Opcional. Nome de domínio associado a este conjunto de dados. Consulte Domain Separation e Inteligência preditiva. Padrão: domínio atual, por exemplo, |
| config.codificador | Objeto | Obrigatório, a menos que defina a propriedade algorithmConfig como "levenshteinDistance". Objeto de codificador treinado a ser atribuído a esta solução. Consulte Codificador – Codificador (configuração do objeto). |
| config.groupByFieldName | Cadeia de caracteres | Opcional. Nome do campo pelo qual o sistema agrupa registros em um ou mais clusters. No exemplo de configuração a seguir, o sistema agrupa cada tipo em um cluster individual, renderizando 10 clusters.
|
| config.registrosnãoclusterizados do grupo | Booliano | Sinalizador que indica se registros não clusterizados devem ser agrupados nos resultados. Valores válidos:
Padrão: falso |
| config.inputFieldNames | Matriz | Lista de nomes de campos de entrada como cadeias de caracteres. O modelo usa esses campos usados para fazer previsões. |
| config.rótulo | Cadeia de caracteres | Identifica a tarefa de previsão. |
| config.maxTimeWindowForUpdate | Número | Opcional. Número de minutos que precedem o ponto de atualização do modelo para procurar registros. Por exemplo, se o valor for 15, o sistema procurará somente registros criados nos 15 minutos anteriores. Por padrão, o sistema verifica todos os registros. |
| config.minRegistrosPorCluster | Número | Opcional. Número mínimo de registros a serem permitidos em qualquer cluster. O valor deve ser maior ou igual a 2. Padrão: 2 |
| config.minRowCount | Cadeia de caracteres | Opcional. Número mínimo de registros necessários no conjunto de dados para treinamento. Padrão: 10000 |
| config.processingLanguage | Cadeia de caracteres | Idioma de processamento no formato de código de idioma ISO 639-1 de duas letras. |
| config.palavras irrelevantes | Matriz | Opcional. Lista predefinida de cadeias de caracteres que o sistema gera automaticamente com base na configuração da propriedade language. Para obter detalhes, consulte Criar uma lista de palavras irrelevantes personalizadas. Padrão: palavras irrelevantes em inglês |
| config.FrequênciaDetreinamento | Cadeia de caracteres | A frequência para retreinar o modelo.
Valores possíveis:
|
| config.FrequênciaDeAtualização | A frequência com que o modelo para a definição da solução deve ser recriado.
Valores possíveis:
|
O exemplo a seguir mostra como criar um objeto e adicioná-lo ao Armazenamento de ClusteringSolution. O exemplo também mostra como enviar o objeto para treinamento.
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());
}
Saída:
{
"state": "waiting_for_training",
"percentComplete": "0",
"hasJobEnded": "false"
}
O exemplo a seguir mostra como incluir o campo "descrição" como um campo de conceito de cluster.
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()
Cancela um trabalho para um objeto de solução que foi enviado para treinamento.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Nenhum |
O exemplo a seguir mostra como cancelar um trabalho de treinamento existente.
var mySolution = sn_ml.ClusteringSolutionStore.get('ml_sn_global_global_clustering');
mySolution.cancelTrainingJob();
ClusteringSolution - getActiveVersion()
Obtém o ativo Objeto ClusteringSolutionVersion.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Objeto ClusteringSolutionVersion ativo. |
O exemplo a seguir mostra como obter uma ClusteringSolução versão ativa da loja e retornar seu status de treinamento.
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getStatus()), null, 2));
Saída:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution - getAllVersions()
Obtém todas as versões de uma solução de cluster.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Matriz | APIVersões existentes de um objeto de solução. Veja também ClusteringSolutionVersion. |
O exemplo a seguir mostra como obter todos os objetos da versão ClusteringSolution e chamar os métodos de versão da solução getVersionNumber() e getStatus() neles.
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");
};
Saída:
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()
Obtém a versão mais recente de uma solução.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | ClusteringSolutionVersion objeto correspondente à versão mais recente de a ClusteringSolution(). |
O exemplo a seguir mostra como obter a versão mais recente de uma solução e retornar seu status de treinamento.
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus()), null, 2));
Saída:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution - getName()
Obtém o nome do objeto a ser usado para interação com a loja.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Nome do objeto de solução. |
O exemplo a seguir mostra como atualizar ClusteringSolução as informações do conjunto de dados e imprimir o nome do objeto.
// 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());
Saída:
Solution Name: ml_x_snc_global_global_clustering_solution
ClusteringSolution - getProperties()
Obtém propriedades do objeto de solução.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | Conteúdo dos detalhes do objeto Dataset e ClusteringSolution() no ClusteringSolutionStore. |
| <Object>.algorithmConfig | Os resultados da propriedadeObjeto JavaScript que contém propriedades de configuração do algoritmo. variam de acordo com o valor definido na propriedade algorithm.
Tipo de dados: objeto. |
| <Object>.algoritmoConfig.algoritmo | Método para codificar sua solução. Propriedades para dbscan:
Propriedades para kmeans:
Tipo de dados: Cadeia de caracteres. |
| <Object>.algorithmConfig.istanceMetric | Somente algoritmo DBSCAN. Métrica de distância para verificar objetos de dados semelhantes. Tipo de dados: Cadeia de caracteres. |
| <Object>.algorithmConfig.eposilon | Somente algoritmo DBSCAN. Valor decimal entre 0 e 1 que representa o tamanho do raio de pesquisa do bairro. Tipo de dados: número. |
| <Object>.algoritmoConfig.minimumVizinhos | Somente algoritmo DBSCAN. Número mínimo de vizinhos necessários em um ponto para fazer parte de um cluster. Para levenshteinDistance, o valor deve ser 1 para que nenhum ponto seja excluído do conjunto de dados. Tipo de dados: número. |
| <Object>.algorithmConfig.targetCoverage | Somente o algoritmo K-means. Campo Percentil para filtrar registros menos semelhantes entre si. Tipo de dados: número. |
| <Object>.datasetProperties | Lista as propriedades do objeto DatasetDefinition() associado à solução.
Tipo de dados: objeto. |
| <Object>.datasetProperties.tableName | Nome da tabela para o conjunto de dados. Por exemplo, "tableName" : "Incidente". Tipo de dados: Cadeia de caracteres. |
| <Object>.datasetProperties.fieldNames | Lista de nomes de campo da tabela especificada como cadeias de caracteres. Por exemplo, "fieldNames" : ["short_description", "priority"]. Tipo de dados: matriz. |
| <Object>.datasetProperties.fieldNames.fieldDetails | Lista de objetos JavaScript que especificam propriedades de campo.
Tipo de dados: matriz. |
| <Object>.datasetProperties.fieldNames.fieldDetails.<object>.name | Nome do campo que define o tipo de informação ao qual restringir este conjunto de dados. Tipo de dados: Cadeia de caracteres. |
| <Object>.datasetProperties.fieldDetails.<object>.type | Tipo de campo de aprendizado de máquina. Tipo de dados: Cadeia de caracteres. |
| <Object>.datasetProperties.fieldDetails.encodedQuery | Cadeia de caracteres de consulta codificada no formato Glide padrão. Consulte Cadeias de caracteres de consulta codificadas. Tipo de dados: Cadeia de caracteres. |
| <Object>.domainName | Nome de domínio associado a este conjunto de dados. Consulte Domain Separation e Inteligência preditiva. Tipo de dados: Cadeia de caracteres. |
| <Object>.encoderProperties | Objeto codificador atribuído a esta solução. Consulte Codificador – Codificador (configuração do objeto). Tipo de dados: objeto. |
| <Object>.groupByFieldName | Nome do campo pelo qual o sistema agrupa registros em um ou mais clusters. Tipo de dados: cadeia de caracteres |
| <Object>.inputFieldNames | Lista de nomes de campos de entrada como cadeias de caracteres. O modelo usa esses campos usados para fazer previsões. Tipo de dados: Cadeia de caracteres. |
| <Object>.rótulo | Identifica a tarefa de previsão.
Tipo de dados: Cadeia de caracteres. |
| <Object>.minRecordsPerCluster | Número mínimo de registros a serem permitidos em qualquer cluster. Tipo de dados: número. |
| <Object>.nome | Nome atribuído pelo sistema. Tipo de dados: Cadeia de caracteres. |
| <Object>.predictedFieldName | Identifica um campo a ser treinado para previsibilidade. Tipo de dados: Cadeia de caracteres. |
| <Object>.processingLanguage | Idioma de processamento no formato de código de idioma ISO 639-1 de duas letras. Tipo de dados: Cadeia de caracteres. |
| <Object>.escopo | Escopo do objeto. Atualmente, o único valor válido é global.Tipo de dados: cadeia de caracteres |
| <Object>palavras irrelevantes | Opcional. Lista predefinida de cadeias de caracteres que o sistema gera automaticamente com base na configuração da propriedade language. Para obter detalhes, consulte Criar uma lista de palavras irrelevantes personalizadas. Tipo de dados: matriz. |
| <Object>.trainingFrequency | A frequência para retreinar o modelo. Valores possíveis:
Tipo de dados: Cadeia de caracteres. |
| <Object>.updateFrequency | A frequência com que o modelo para a definição da solução deve ser recriado. Valores possíveis:
Tipo de dados: cadeia de caracteres |
O exemplo a seguir obtém as propriedades de um objeto de solução no repositório.
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(cadeia de caracteres "version")
Obtém uma solução pelo número de versão fornecido.
| Nome | Tipo | Descrição |
|---|---|---|
| versão | Cadeia de caracteres | Número da versão existente de uma solução. |
| Tipo | Descrição |
|---|---|
| Objeto | Versão especificada do objeto ClusteringSolution() na qual você pode chamar métodos de API ClusteringSolutionVersion. |
O exemplo a seguir mostra como obter o status de treinamento de uma solução por número de versão.
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getVersion('1').getStatus()), null, 2));
Saída:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution - setActiveVersion(cadeia de caracteres version)
Ativa uma versão especificada de uma solução na loja.
| Nome | Tipo | Descrição |
|---|---|---|
| versão | Cadeia de caracteres | Nome da versão do objeto ClusteringSolution() a ser ativada. Ativar esta versão desativa qualquer outra versão. |
| Tipo | Descrição |
|---|---|
| Nenhum |
O exemplo a seguir mostra como ativar uma versão de solução na Store.
sn_ml.ClusteringSolution.setActiveVersion("ml_incident_categorization");
ClusteringSolution - submitTrainingJob()
Envia um trabalho de treinamento.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Objeto | ClusteringSolutionVersion objeto correspondente ao que ClusteringSolution está sendo treinado. |
O exemplo a seguir mostra como criar um conjunto de dados, aplicá-lo a uma solução, adicionar a solução a uma loja e enviar o trabalho de treinamento.
// 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();