DSI – Desenvolvimento de Sistemas Inteligentes sexta-feira, 22 de fevereiro de 2019
24 WEKA DSI – Desenvolvimento de Sistemas Inteligentes Introdução Métodos Suportados Origem dos Dados Jogar ou não tênis usando árvores de decisão Matriz de Confusão Instalando o WEKA Exercícios Prof. Frederico Brito Fernandes unibratec@fredbf.com sexta-feira, 22 de fevereiro de 2019
Universidade de Waikato - Nova Zelândia (1) Introdução Universidade de Waikato - Nova Zelândia Waikato Environment for Knowledge Analysis Coleção de algoritmos de aprendizagem de máquina para resolução de problemas de Data Mining implementado em Java open source software http://www.cs.waikato.ac.nz/ml/weka/
(2) Métodos de aprendizagem suportados decision tree inducers rule learners naive Bayes decision tables locally weighted regression support vector machines instance-based learners logistic regression voted perceptrons Multi-Layer Perceptron etc
Arquivo local no formato .arff Arquivo em URL no formato .arff (3) Origem dos Dados Arquivo local no formato .arff Arquivo em URL no formato .arff Tabelas de Banco de Dados via JDBC
O weka lê os dados no formato .arff (3) Preparando os dados O weka lê os dados no formato .arff Uma lista de todas as instâncias, onde o valor dos atributos são separados por vírgula mais um cabeçalho Ex(weather.arff): @relation weather %Nome do arquivo @attribute outlook {sunny, overcast, rainy} @attribute temperature real %Atributo e tipo @attribute humidity real @attribute windy {TRUE, FALSE} @attribute play {yes, no} @data %Início dos dados sunny,85,85,FALSE,no overcast,83,86,FALSE,yes
(4) Problema: jogar ou não golf/tênis Dados do tempo Algoritmo weka.classifier.j48.J48 <=75 >75
(4) Aprendizado de árvores de decisão J48 pruned tree ------------------ outlook = sunny | humidity <= 75: yes (2.0) | humidity > 75: no (3.0) outlook = overcast: yes (4.0) outlook = rainy | windy = TRUE: no (2.0) | windy = FALSE: yes (3.0) Number of Leaves : 5 Size of the tree : 8
a b <-- classified as 8 1 | a = yes 2 3 | b = no (5) Matriz de Confusão === Confusion Matrix === a b <-- classified as 8 1 | a = yes 2 3 | b = no
(6) Instalando o software 1. Instale o WEKA a partir de http://www.cs.waikato.ac.nz/ml/weka/ 2. Interface gráfica é composta por: SimpleCLI – abre uma sessão no sistema operacional pronta para executar comandos do weka Explorer – faz um teste específico para um classificador (é aqui que iremos trabalhar) Experimenter – realize testes entre vários classificadores Knowledge Flow – permite criar experimentos complexos usando componentes gráficos ArffViewer – visualizador de arquivos arff Log 3. Dentro da aplicação Java Utilize a biblioteca weka.jar para criar um classificador dentro do seu projeto java
(7) Criando uma MLP em Java import java.io.FileReader; import java.io.IOException; import weka.classifiers.functions.MultilayerPerceptron; import weka.core.Instance; import weka.core.Instances; public class RedeNeural { private static final int outlook=0; private static final int temperature=1; private static final int humidity=2; private static final int windy=3; public static void main(String[] args) throws IOException, Exception { Instances arq = new Instances(new FileReader("C:/Arquivos de programas/Weka-3-5/data/weather.arff")); arq.setClassIndex(arq.numAttributes() - 1); MultilayerPerceptron rna = new MultilayerPerceptron(); rna.buildClassifier(arq); Instance entrada = new Instance(5); entrada.setValue(outlook, 0); entrada.setValue(temperature, 69); entrada.setValue(humidity, 70); entrada.setValue(windy, 1); entrada.setDataset(arq); System.out.println("Esse cara vale: " + rna.classifyInstance(entrada)); entrada.setValue(temperature, 72); entrada.setValue(humidity, 95); System.out.println("Esse exemplo vale: " + rna.classifyInstance(entrada)); }
(7) Criando uma MLP em Java: exercícios Em cada problema listado abaixo, você deverá: Usar a interface gráfica no WEKA para criar um classificador MLP para esse problema Criar um projeto no Eclipse que realize essa classificação Problemas: Tabela verdade do OR Reconhecimento de três caracteres: Classificação de bom e mau pagador: Idade Renda Filhos Sexo CLASSE 25 R$ 1.100,00 1 M BOM (1) 42 R$ 3.500,00 F MAU (0) 32 R$ 4.200,00 5 18 R$ 500,00