WEKA - Basics
Docente: Prof. Dr. Ádamo Lima de Santana
Discente: Lilian de Jesus Chaves Dias
Abril – 2013
Agenda
Ê Introdução;
Ê Conceitos Básicos;
Ê Suporte;
Ê Aplicações;
Ê GUI – Explorer;
Ê API.
Introdução
Sobre o WEKA
Sobre	
  o	
  WEKA	
  
Ê  Projeto acadêmico de 1990;
Ê  Coleção de Algoritmos de Aprendizado de Máquina;
Ê  Aplicação a Mineração de Dados;
Ê  Standalone ou API;
Ê  WEKA – Waikato Environment for Knowledge Analysis;
Ê  Grupo de Aprendizado de Máquina da Universidade de
Waikato, Nova Zelândia;
Ê  Associate Professor Eibe Frank, Dr. Mark Hall, Professor
Ian Witten.
Baixando
Ê Site Oficial:
http://www.cs.waikato.ac.nz/ml/weka/
index.html
Ê Versão estável: 3-6-9;
Ê Versão Desenvolvimento: 3-7-9;
Ê Windows, Mac OS X e Linux;
Ê GPLv2.
Conceitos Básicos
Elementos da Base, Tipo de Arquivos
Elementos	
  da	
  Base	
  
Tipo	
  de	
  Arquivos	
  
Ê ARFF (Attribute-Relation FileFormat);
Ê Header + Data;
Ê @attribute <attribute-name> <datatype>:
Ê Numérico, nominal, string,data e
relacional.
Comentário
Atributos
Atributo Nominal
Dados
Nome da base
Suporte
Comunidade, tutoriais, arquivos, documentação
Suporte
Ê Comunidade ativa - pentaho;
Ê Apresentações e vídeos;
Ê Manual;
Ê Documentação Online;
Ê Wiki;
Ê Hows-To.
Suporte
Aplicações	
  
Simple CLI, Visualization, Tools, Experimenter,
Knowledge Flow
Ferramenta - GUI
Simple	
  CLI	
  	
  
Ferramenta - GUI
Visualization	
  -­‐	
  Plot	
  
Visualization	
  -­‐	
  ROC	
  
Ferramenta - GUI
Tools	
  –	
  Arff	
  Viewer	
  
Ferramenta - GUI
Experimenter	
  
Ferramenta - GUI
Knowledge	
  Flow	
  
Explorer - GUI
Pré-processamento, Classificador
GUI
Demonstração GUI
Ê  Configurações do arquivo:
Ê  Instâncias;
Ê  Atributos;
Ê  Classificadores:
Ê  Configurações.
API
Manipulação de dados e classificadores
Biblioteca
Ê  Classpath = weka.jar
Ê  Código-fonte = weka-src.jar
Ê  Javadoc = <caminho da versão do weka>/doc
Manipulação de Dados
Ê  Criação de conjunto de dados na memória;
Ê  Formatar a base e adicionar valores:
Ê  weka.core.Instances;
Ê  weka.core.Attribute.
Formatando	
  o	
  	
  dataset	
  
procedimento para
atributos nominais
procedimento para
atributos numéricos
procedimento para
adicionar os atributos
Nome da relação Reserva de memória
Adicionando valores
Ê  Adição de linha por linha:
Ê  weka.core.Instance;
Atributos
numéricos
Peso padrão de uma instância
Principais	
  Métodos	
  
Ê  Instances:
Ê  toSummaryString();
Ê  numInstances();
Ê  numAttributes();
Ê  numClasses();
Ê  meanOrMode(Attribute att) | meanOrMode(int attIndex);
Ê  attributeToDoubleArray(int index);
Ê  instance(int index);
Ê  attribute(int index);
Ê  delete(int index);
Ê  sort(Attribute att);
Ê  swap(int i, int j);
Ê  testCV(int numFolds, int numFold);
Ê  trainCV(int numFolds, int numFold).
Principais	
  Métodos	
  
Ê  Instance:
Ê  attribute(int index);
Ê  setValue(int attIndex, double value);
Ê  stringValue(int attIndex);
Ê  value(int attIndex);
Ê  toString();
Ê  toString(int attIndex);
Ê  numAttributes();
Ê  numValues().
Principais	
  Métodos	
  
Ê  Attribute:
Ê  isNominal();
Ê  isNumeric();
Ê  isString();
Ê  isInRange(double value);
Ê  name();
Ê  toString();
Ê  type();
Ê  value(int valIndex);
Imprimindo valores da base
Informações gerais sobre a base.
Valores de cada linha.
Persistindo a base
Ê  weka.core.converters.ConverterUtils.DataSink;
Ê  Pasta do projeto;
Carrega base existente na memória
Deve ser um arquivo válido
Exercitando…
Ê  Criar uma base com 4 atributos e 150 instancias:
Ê  Att 1 – Numérico – de 10~37;
Ê  Att2 – Nominal – V ou F;
Ê  Att3 – Numérico – de 20 ~ 200;
Ê  Att4 – Nominal – Bom, Médio, Ruim (Classe);
Ê  Imprimir sumário da base.
Ê  Persistir base em Files/minhaPrimeiraBase.arff
Exercitando…
Ê  Ler base hepatitis.arff;
Ê  Imprimir relatório da base;
Ê  Mostrar quantidade de cada valor nominal do atributo
SEX, HISTOLOGY e ANOREXIA;
Classificadores
Classificadores
Ê  Tarefa de Classificação;
Ê  weka.classifiers;
Ê  Batch-trainable – a base inteira é treinada de uma vez;
Ê  Incrementais – atualizam o modelo interno on-the-go;
Classificadores - Batch
Ê  Configurar as opções;
Ê  Treinar as instancias;
Base de treino
Classificadores - Incremental
Ê  Implementam a interface UpdateableClassifier;
Ê  Inicializar o modelo;
Ê  Atualizar linha à linha – updateClassifier(Instance);
weka.core.converters	
  
Lê	
  a	
  estrutura	
  e	
  cria	
  
	
  instâncias	
  vazias	
  
Avaliação
Ê  Qualidade da performance do modelo do classificador
gerado a partir dos dados;
Ê  Coss-validation – Utiliza uma base e gera avaliações
realísticas;
Ê  Teste dedicado.
Avaliação – Cross-validation
Ê  Classificador “destreinado”;
Ê  Única base de dados;
Classificador Fold
Base Seed
Base
Avaliação – Train/test
Treino
Teste
Estatísticas
Ê  toMatrixString – imprime a matriz de confusão;
Ê  toClassDetailsString – imprime as taxas de VP/FP,
precisão, recall, AUC (por classe);
Ê  toCumulativeMarginDistributionString – imprime as
margens de distribuição acumuladas;
Outros métodos estatísticos
Ê  Atributo classe nominal
Ê  correct();
Ê  pctCorrect() | pctIncorrect();
Ê  areaUnderROC(int) – para classe específica;
Ê  Atributo classe numérico
Ê  correlationCoefficient();
Ê  Geral
Ê  meanAbsoluteError();
Ê  numInstances();
Exemplo de Implementação
Exercitando…
Ê  Ler o arquivo hepatitis.arff;
Ê  Imprimir configurações da base;
Ê  Implementar uma MLP:
Ê  Auto-build;
Ê  Learning rate = 0.5;
Ê  Momentum = 0.5;
Ê  TrainingTime = 1000;
Ê  Hidden Layers = 2 com 3 neurônios cada;
Ê  Classe a atributos normalizados;
Ê  Cross-validation;
Ê  Imprimir estatísticas:
Ê  Acurácia, matriz de confusão e detalhes por classe.
Ê  Salvar como nova base .arff
Ê  Ler o arquivo iris.arff;
Ê  3 classificadores:
Ê  PART;
Ê  5-NN;
Ê  Naïve Bayes;
Ê  Relatório com:
Ê Acurácia;
Ê RMSE.
Exercitando…
Visualização
Visualização	
  –	
  Curva	
  ROC	
  
Ê  Curvas de Características de Operação do Receptor
( do inglês Receiver Operating Characteristic);
Ê  Avaliação de modelos de classificação;
Ê  Taxa de verdadeiros positivos e taxa de falsos positivos;
Ê  weka.gui.visualize;
Ê  Base usada: colic.arff.
Exemplo	
  –	
  Curva	
  ROC	
  
ROC para determinado
label de classe
Container para o ROC
Painel para o container
JFrame
Exemplo – Curva ROC – Classe 0
Exemplo – Curva ROC – Classe 1
Visualização	
  –	
  Gráfico	
  de	
  Árvores	
  
Ê  Visualização dos gráficos internos do modelo gerado;
Ê  Árvores de Decisão;
Ê  Rede Bayesiana;
Ê  weka.core.treevisualizer;
Visualização	
  –	
  Gráfico	
  de	
  Árvores	
  
Visualização	
  –	
  Gráfico	
  de	
  Árvores	
  
Referências
Ê  Witten, I.H. and Frank, E. (2005) Data Mining: Practical
machine learn- ing tools and techniques. 2nd edition Morgan
Kaufmann, San Francisco.
Ê  WekaWiki – http://weka.wikispaces.com/
Ê  Weka Examples – A collection of example classes, as part of
an ANT project, included in the WEKA snapshots (available
for download on the homepage) or directly from subversion
https://svn.scms.waikato.ac.nz/svn/weka/branches/stable-3-6/
wekaexamples/
Ê  Bouckaert et al. (2013) Weka Manual for Version 3-6-9. The
University of Waikato, Hamilton, Nova Zelândia.
Obrigada.
WEKA - Basics
Docente: Prof. Dr. Ádamo Lima de Santana
Discente: Lilian de Jesus Chaves Dias
Abril – 2013

Weka básico