Created
September 29, 2013 17:36
-
-
Save eberlitz/6754661 to your computer and use it in GitHub Desktop.
MD_ML_TGA.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[TOC] | |
Trabalho GA | |
=========== | |
Preparação dos dados | |
---------------------- | |
1. Junção dos arquivos **census-income.data** e **census-income.test** através do seguinte comando unix: | |
cat census-income.data census-income.test > census-income.all | |
2. Remoção de linhas exatamente iguais através de um script criado em javascript. | |
Total de linhas duplicadas encontradas: 6735 | |
3. Inclusão de aspas para colunas que contenham espaços através de um código javascript para permitir a criação do arquivo ***.arff**. | |
4. Geração do arquivo ***.arff** via _Nodejs_ script | |
var fs = require('fs') | |
var removeDuplicates = function(lines){ | |
console.log("Removind duplicated columns ..."); | |
var nlines = {}, | |
duplicates = 0; | |
for (var i = lines.length - 1; i >= 0; i--) { | |
if (!nlines[lines[i]]) { | |
nlines[lines[i]]=i; | |
}else{ | |
duplicates++; | |
} | |
}; | |
console.log("Removed "+duplicates+" duplicated lines\r\n"); | |
var result = new Array(); | |
for (var a in nlines){ | |
if (a.length > 0) { | |
result.push(a); | |
}; | |
} | |
return result; | |
}; | |
var fileB = [ | |
"@RELATION census", | |
"", | |
"@ATTRIBUTE Age numeric", | |
"@ATTRIBUTE ClassWorker string", | |
"@ATTRIBUTE IndustryRecode string", | |
"@ATTRIBUTE OccupationRecode string", | |
"@ATTRIBUTE Education string", | |
"@ATTRIBUTE WagePerHour numeric", | |
"@ATTRIBUTE EnrollInEduInstLastWk string", | |
"@ATTRIBUTE MaritalStat string", | |
"@ATTRIBUTE MajorIndustryCode string", | |
"@ATTRIBUTE MajorOccupationCode string", | |
"@ATTRIBUTE Race string", | |
"@ATTRIBUTE HispanicOrigin string", | |
"@ATTRIBUTE Sex string", | |
"@ATTRIBUTE MemberALaborUnion string", | |
"@ATTRIBUTE ReasonForUnemployment string", | |
"@ATTRIBUTE FullOrPartTimeEmploymentStat string", | |
"@ATTRIBUTE CapitalGains numeric", | |
"@ATTRIBUTE CapitalLosses numeric", | |
"@ATTRIBUTE DividendsFromStocks numeric", | |
"@ATTRIBUTE TaxFilerStat string", | |
"@ATTRIBUTE RegionPreviousResidence string", | |
"@ATTRIBUTE StatePreviousResidence string", | |
"@ATTRIBUTE HouseholdAndFamilyStat string", | |
"@ATTRIBUTE HouseholdSummaryInHousehold string", | |
"@ATTRIBUTE InstanceWeight numeric", | |
"@ATTRIBUTE MigrationCodechangeInMsa string", | |
"@ATTRIBUTE MigrationCodechangeInReg string", | |
"@ATTRIBUTE MigrationCodemoveWithinReg string", | |
"@ATTRIBUTE LiveInThisHouse1YearAgo string", | |
"@ATTRIBUTE MigrationPrevResInSunbelt string", | |
"@ATTRIBUTE NumPersonsWorkedForEmployer numeric", | |
"@ATTRIBUTE FamilyMembersUnder18 string", | |
"@ATTRIBUTE CountryBirthFather string", | |
"@ATTRIBUTE CountryBirthMother string", | |
"@ATTRIBUTE CountryBirthSelf string", | |
"@ATTRIBUTE Citizenship string", | |
"@ATTRIBUTE OwnBusinessOrSelfEmployed string", | |
"@ATTRIBUTE FillIncQuestionnaireForVeteransAdmin string", | |
"@ATTRIBUTE VeteransBenefits string", | |
"@ATTRIBUTE WeeksWorkedInYear numeric", | |
"@ATTRIBUTE Year string", | |
"@ATTRIBUTE class {'- 50000.','50000+.'}", | |
"", | |
"@DATA", | |
"" | |
]; | |
var insertQuotes = function (lines){ | |
for (var i = lines.length - 1; i >= 0; i--) { | |
var columns = lines[i].split(','); | |
//console.log(columns.length); | |
for (var j = columns.length - 1; j >= 0; j--) { | |
var coluna = columns[j].trim(); | |
if (coluna.indexOf(" ")!= -1) { // Should be quoted | |
coluna = coluna.replace("'","+"); | |
columns[j] = "'" + coluna + "'"; | |
}; | |
}; | |
lines[i] = columns.join(); | |
}; | |
}; | |
fs.readFile('census-income.all', 'utf8', function (err,data) { | |
if (err) { | |
return console.log(err); | |
} | |
var lines = data.split(/\r?\n/); | |
lines = removeDuplicates(lines); | |
insertQuotes(lines); | |
var text = fileB.concat(lines).join("\r\n"); | |
fs.writeFile("census-income.arff",text, function(err) { | |
if(err) { | |
console.log(err); | |
} else { | |
console.log("The file was saved!"); | |
} | |
}); | |
}); | |
Notes | |
----- | |
- Segundo aos documentos incluidos junto com os dados o Atributo `InstanceWeight` deve ser ignorado para realizar classificação. | |
- Incluído o ultimo atributo como classe para identificar se ganha mais que 50k ou menos. | |
Especificações | |
--------------- | |
- Utilização do classificador **`Naïve Bayes`** para avaliar o impacto do processo de limpeza dos dados e da seleção automática de atributos. | |
- Considerar como critério de avaliação do resultado o percentual de instancias corretamente e incorretamente classificadas mediante a configuração de experimentos 10-Fold Cross-Validation. | |
- Realizar o mesmo processo, ou seja, classificação com **`Naïve Bayes`** e avaliação do percentual de instancias corretamente e | |
incorretamente classificadas com o mesmo método de avaliação 10-Fold Cross-Valiadation, agora com o grupo escolhendo os 10 | |
atributos que considera ser mais relevantes para separar as duas classes (pode ser empregada a seleção automática mas em | |
conjunto deve ser obrigatório o emprego da seleção manual). Tal seleção de atributos deve ser justificada e reportados os resultados obtidos. | |
Itens obrigatórios no relatório: | |
------------------------------- | |
- Identificação do relatório; | |
- Descrição do problema tratado e objetivo; | |
- Problema é separar os dados do census em classes que descrevam a renda de cada uma das pessoas definidas nos dados. Neste caso identificar se ganha mais ou menos que 50k. | |
- **Especificação dos dados**; | |
A descrição detalhada dos dados pode ser encontrada através do seguinte link: | |
http://www.census.gov/prod/techdoc/cps/cpsaug00.pdf | |
Para fazer uso desta descrição o seguinte mapeamento de colunas será necessário: | |
- **Age**: AAGE | |
- **ClassWorker**: ACLSWKR | |
- **IndustryRecode**: ADTIND | |
- **OccupationRecode**: ADTOCC | |
- **Education**: AHGA | |
- **WagePerHour**: AHRSPAY | |
- **EnrollInEduInstLastWk**: AHSCOL | |
- **MaritalStat**: AMARITL | |
- **MajorIndustryCode**: AMJIND | |
- **MajorOccupationCode**: AMJOCC | |
- **Race**: ARACE | |
- **HispanicOrigin**: AREORGN | |
- **Sex**: ASEX | |
- **MemberALaborUnion**: AUNMEM | |
- **ReasonForUnemployment**: AUNTYPE | |
- **FullOrPartTimeEmploymentStat**: AWKSTAT | |
- **CapitalGains**: CAPGAIN | |
- **CapitalLosses**: CAPLOSS | |
- **DividendsFromStocks**: DIVVAL | |
- **TaxFilerStat**: FEDTAX | |
- **RegionPreviousResidence**: GRINREG | |
- **StatePreviousResidence**: GRINST | |
- **HouseholdAndFamilyStat**: HHDFMX | |
- **HouseholdSummaryInHousehold**: HHDREL | |
- **InstanceWeight**: MARSUPWT | |
- **MigrationCodechangeInMsa**: MIGMTR1 | |
- **MigrationCodechangeInReg**: MIGMTR3 | |
- **MigrationCodemoveWithinReg**: MIGMTR4 | |
- **LiveInThisHouse1YearAgo**: MIGSAME | |
- **MigrationPrevResInSunbelt**: MIGSUN | |
- **NumPersonsWorkedForEmployer**: NOEMP | |
- **FamilyMembersUnder18**: PARENT | |
- **CountryBirthFather**: PEFNTVTY | |
- **CountryBirthMother**: PEFNTVTY | |
- **CountryBirthSelf**: PEFNTVTY | |
- **Citizenship**: PRCITSHP | |
- **OwnBusinessOrSelfEmployed**: SEOTR | |
- **FillIncQuestionnaireForVeteransAdmin**: VETQVA | |
- **VeteransBenefits**: VETYN | |
- **WeeksWorkedInYear**: WKSWORK | |
- **Year**: Ano da pesquisa (94 ou 95) | |
- **class**: Se ganha mais ('50000+.') ou menos ('- 50000.') que 50 mil; | |
- Processo de limpeza dos dados, possíveis problemas encontrados e estratégias utilizadas para saná-los; | |
- Registros dúplicados | |
- Informações ausentes | |
- Possíveis normalizações e transformações aplicadas para poder minerá-los; | |
- Descrição da técnica automática para seleção empregadas, conforme slide anterior;/ Especificação da técnica de seleção automática **OneRAttributeEval** (evalUsingTrainingData = true) | |
- 20-30 linhas | |
- Qual o principio de funcionamento? Usar referencias para isso. | |
- Qual a formulação? | |
- Exemplo didático com poucas instancias | |
- Estratégia empregada pelo grupo para escolher os 10 atributos considerados mais relevantes para a separação das classes (manual ou automática+manual) | |
- Comparativo dos resultados obtidos para a aplicação do classificador designado para: os dados brutos, os dados selecionados de forma automática, e os dados selecionados de forma manual ou automática+manual. | |
- Apresentação de uma discussão dos resultados obtidos em função dos experimentos realizados e como o grupo acha que a seleção ajudou (ou atrapalhou) o resultado. | |
- Relato de críticas e problemas encontrados para a realização do trabalho. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment