WEKA Jacques Robin João Batista Marcelino Pereira junho/2001 Roteiro Introdução Conceitos Exemplos práticos Chamada ao aplicativo WEKA 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/ 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 Origem dos Dados Arquivo local no formato .arff Arquivo em URL no formato .arff Tabelas de Banco de Dados via JDBC 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 Weka: Aprendizado de árvores de decisão Dados do tempo Algoritmo weka.classifier.j48.J48 >75 <=75 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 Size of the tree : : 5 8 Gerando regras de associação APRIORI Algoritmo para minerar regras de associação. IF IF IF IF IF IF IF umidade = normal AND vento = não THEN jogar = sim umidade = normal AND jogar = sim THEN vento = não vento = não AND jogar = sim THEN umidade = normal umidade = normal THEN vento = não AND jogar = sim vento = não THEN umidade = normal AND jogar = sim jogar = sim THEN vento = não AND umidade = normal ? THEN vento = não AND umidade = normal AND jogar = sim Saída do algoritmo Best rules found: 1.temperature=cool humidity=normal windy=FALSE ==> play=yes conf:(1) 2. temperature=cool windy=FALSE play=yes ==> humidity=normal conf:(1) 3. outlook=overcast temperature=hot windy=FALSE ==> play=yes conf:(1) 4. temperature=cool windy=FALSE ==> humidity=normal play=yes conf:(1) 5. outlook=rainy temperature=mild windy=FALSE ==> play=yes conf:(1) Carregando Dados a partir de Tabelas Exemplo: • Open DB • SELECT * from dim_relcoords where id_relcoords < 1000 Y CblMbl Cfl X Cbr Cfr Carregando Dados a partir de Tabelas J48 pruned tree -----------------Y <= 0 | Y <= -17: CbrMbr (313.0/1.0) | Y > -17: CbrMbl (219.0) Y > 0 | Y <= 17: CblMbr (204.0) | Y > 17: CblMbl (264.0) Number of Leaves : Size of the tree : 4 7 Carregando Dados a partir de Tabelas === Confusion Matrix === a b c d e 0 0 1 0 0 0 264 0 0 0 0 0 312 0 0 0 0 0 219 0 0 0 0 0 204 | | | | | <-a b c d e classified as = No = CblMbl = CbrMbr = CbrMbl = CblMbr Instalando o software 1. Crie um deretório ´weka´ dentro de ‘c:\temp’ • c:\temp\weka 2.Copiando os arquivos: • • • • http://www.cin.ufpe.br/~robocup/weka weka.jar weka.bat sql_driver.jar 3.Certifique-se de que os dados foram salvos no formato correto. Executando o software Inicialize o ambiente jdk 1.3 • menu: programs\Linguagens\Java\JDK1.3 Entre no diretório ´weka’ que você criou • c:\temp\weka Execute o script • Weka.bat