6
Linguagens de Programação
UFABC
3
Linguagens de Programação
UFABC
3
Linguagens de Programação
UFABC
8
Linguagens de Programação
UFABC
6
Linguagens de Programação
UFABC
23
Linguagens de Programação
UFABC
6
Linguagens de Programação
UFABC
Texto de pré-visualização
DA2MCTA01813SA Programação Orientada a Objetos Paulo Henrique Pisani e Diogo Santana Martins 20232 Painel Meus cursos POO DA2MCTA01813SA 20232 Bônus 2 Bonus2 Parte 2 Algoritmo de classificação Data de entrega sexta 11 Ago 2023 2359 Arquivos requeridos ListaExemplosjava KNNjava Baixar Tipo de trabalho Trabalho individual Parte 2 Algoritmo de classificação Na área de Aprendizado de Máquina Faceli et al 2021 um algoritmo que pode ser usado para classificação e regressão é o kVizinhos mais próximos kNearest Neighbours kNN Neste exercício deverá ser implementada uma versão para classificação conforme descrito a seguir kNN Antes de ser utilizado para classificação o algoritmo precisa de dados de treinamento Os dados de treinamento serão representados por uma lista de exemplos como exemplificado a seguir Cada exemplo possui atributos de entrada e um rótulo de classe correspondente a1 a2 a3 rótulo da classe 10 09 11 1 11 08 10 1 40 80 09 2 12 11 09 1 40 60 01 2 A partir dos dados de treinamento o algoritmo realizará predições dos rótulos de classe para novos dados Para os valores de atributos de entrada 5 7 1 um algoritmo de classificação poderia predizer o rótulo de classe 2 Essa predição será o resultado da classificação realizada pelo algoritmo No kNN a predição do rótulo de classe para novos valores de atributos de entrada dados de teste é realizada da seguinte forma 1 Calcule a distância entre os valores dos atributos de entrada passados dados de teste e cada um dos exemplos nos dados de treinamento utilize distância Euclidiana 2 Determine quais são os k exemplos mais próximos ou seja os que tem as k menores distâncias O valor de k é definido previamente 3 O rótulo de classe predito resultado da classificação será aquele mais frequente dentre os rótulos dos k exemplos mais próximos Demonstração de classificação considerando os dados de treinamento da tabela anterior e os valores de atributos de entrada 5 7 1 1 Distância entre os valores dos atributos de entrada de teste 5 7 1 e cada um dos exemplos de treinamento o cálculo da distância considera apenas os atributos de entrada no caso a1 a2 e a3 a1 a2 a3 rótulo da classe distância 10 09 11 1 730 11 08 10 1 732 40 80 09 2 142 12 11 09 1 702 40 60 01 2 168 2 Para k3 os k mais próximos são destacados a seguir a1 a2 a3 rótulo da classe distância 40 80 09 2 142 40 60 01 2 168 12 11 09 1 702 10 09 11 1 730 11 08 10 1 732 3 Entre os k3 exemplos mais próximos o rótulo de classe mais frequente é o 2 Portanto o resultado da predição é 2 Classes a serem implementadas Devem ser implementadas as classes KNN e ExcecaoDadosInvalidos Além disso também submeta o código das classes Exemplo e ListaExemplos Essas duas classes foram descritas em Bonus Parte 1 Lista de exemplos e são necessárias para a implementação da classe KNN acesso package Classe ExcecaoDadosInvalidos subclasse de Exception não é RuntimeException esta exceção é lançada pelo método predizer quando a quantidade de atributos de entrada é inválida mais detalhes na descrição do método predizer da classe KNN public int getQtdAtributosTreinamento retorna a quantidade de atributos de entrada nos dados de treinamento Esse valor deve ser sido armazenado dentro da instância da exceção no momento em que a exceção é criada public int getQtdAtributosPredizer retorna a quantidade de atributos de entrada do parâmetro passado ao método predizer Esse valor deve ser sido armazenado dentro da instância da exceção no momento em que a exceção é criada acesso public Classe KNN public KNNint k construtor que recebe k e armazena na instância da classe public void setDadosTreinamentoListaExemplos lista armazena uma lista de exemplos como conjunto de dados de treinamento public int predizerdouble atributosEntrada recebe valores dos atributos de entrada dados de teste e retorna o rótulo de classe predito pelo algoritmo kNN conforme procedimento descrito no início do enunciado deste exercício Esse método predizer deve lançar exceção em algumas situações Chamar o método predizer sem possuir dados de treinamento deve ser lançada uma exceção do tipo Exception com o texto Dados de treinamento nao inicializado observe que não há acento na mensagem Use o seguinte construtor já existente na classe Exception ExceptionString message Chamar o método predizer com um exemplo que possui quantidade de atributos diferente da quantidade de atributos dos exemplos de treinamento deve ser lançada uma exceção do tipo ExcecaoDadosInvalidos informado a quantidade de atributos de entrada nos exemplos de treinamento e nos dados passados para o método predizer Importante O programa principal já existe no sistema de correção automática Submeta apenas as classes especificadas todas devem estar no pacote classificacao A classes não podem realizar impressão de dados javautil ou utilizar import Os códigos submetidos não podem utilizar métodos prontos para ordenação por exemplo sort Para ordenação implemente um método e inclua na submissão Também não use o termo sort em nenhuma parte do código Casos de teste Formato dos casos de teste que aparecem ao avaliar as classes no sistema de correção automática Entrada Sequência de operações no formato instanciarListaExemplos qtdMax lista índice lista adicionarExemplo qtdatributosentrada valores dos atributos de entrada rótulo da classe instanciarKNN k knn setDadosTreinamento índice da lista de exemplos knn predizer qtdatributosentrada valores dos atributos de entrada Saída Verificação das classes Operações executadas e saídas obtidas Referências Faceli K Lorena A C Gama J Almeida T A Carvalho A C P L F 2021 Inteligência Artificial Uma Abordagem de Aprendizado de Máquina 2a edição LTC Um dos testes é realizado com parte do conjunto de dados Iris httpsarchiveicsuciedumldatasetsIris VPL Bonus2 Parte 1 Lista de exemplos Seguir para Este é o Ambiente Virtual de Aprendizagem da UFABC para apoio ao ensino presencial e semipresencial Esta plataforma permite que os usuários educadoresalunos possam criar cursos gerenciálos e participar de maneira colaborativa Informação Conheça a UFABC Conheça o NTI Conheça o Netel Contato Av dos Estados 5001 Bairro Bangu Santo André SP Brasil CEP 09210580 Siganos Universidade Federal do ABC Moodle 2023 Português Brasil ptbr English en Português Brasil ptbr Obter o aplicativo para dispositivos móveis DA2MCTA01813SA Programação Orientada a Objetos Paulo Henrique Pisani e Diogo Santana Martins 20232 Painel Meus cursos POO DA2MCTA01813SA 20232 Bônus 2 Bonus2 Parte 1 Lista de exemplos Descrição Enviar Editar Visualizar envios Bonus2 Parte 1 Lista de exemplos Data de entrega sexta 11 Ago 2023 2359 Arquivos requeridos ListaExemplosjava Baixar Tipo de trabalho Trabalho individual Parte 1 Lista de exemplos Nesta primeira parte do exercício deve ser implementada uma lista de exemplos A lista de exemplos neste exercício é um conjunto de dados formado por uma tabela Cada linha da tabela é um exemplo A figura a seguir mostra uma lista de exemplos a1 a2 a3 rótulo da classe 10 09 11 1 11 08 10 1 40 80 09 2 12 11 09 1 40 60 01 2 Nessa tabela cada linha é um exemplo Os atributos a1 a2 e a3 serão chamados de atributos de entrada e o último atributo última coluna será chamado de rótulo da classe Neste exercício todos os atributos de entrada são do tipo double e o rótulo da classe será representado por um número inteiro Esses dados da lista de exemplos serão usados em Bonus Parte 2 Algoritmo de classificação para que um algoritmo possa predizer o rótulo da classe ao receber novos valores dos atributos de entrada dados de teste Ordenação pela distância Conforme será descrito mais a frente uma funcionalidade que deverá ser implementada neste exercício é a ordenação dos exemplos pela distância com relação a um determinado conjunto de valores de atributos de entrada No caso deste exercício a distância utilizada será a distância Euclidiana que é calculada de acordo com a fórmula a seguir Σ xᵢ yᵢ² n i1 Cálculo da distância Euclidiana entre x121 e y309 13² 20² 19² 4 4 64 849 No caso da lista de exemplos é possível calcular a distância de cada exemplo na tabela com relação um determinado conjunto de valores de atributos de entrada o cálculo da distância considera apenas os atributos de entrada no caso a1 a2 e a3 A tabela a seguir mostra a distância entre cada exemplo na lista e os valores 5 7 1 a1 a2 a3 rótulo da classe distância 10 09 11 1 730 11 08 10 1 732 40 80 09 2 142 12 11 09 1 702 40 60 01 2 168 A partir das distâncias os exemplos podem ser ordenados pela distância ordem crescente conforme apresentado a seguir a1 a2 a3 rótulo da classe distância 40 80 09 2 142 40 60 01 2 168 12 11 09 1 702 10 09 11 1 730 11 08 10 1 732 Classes a serem implementadas Duas classes devem ser implementadas nesta parte 1 do exercício Exemplo e ListaExemplos as duas classes devem estar no pacote classificacao A seguir são apresentados os métodos necessários em cada uma das classes acesso package Classe Exemplo public Exemplodouble atributosEntrada int rotuloClasse construtor que inicializa o exemplo com os valores dos atributos de entrada e o rótulo da classe public double getAtributosEntrada retorna os valores dos atributos de entrada public int getRotuloClasse retorna o valor do rótulo da classe acesso public Classe ListaExemplos public ListaExemplosint maxQtd construtor que recebe como parâmetro a quantidade máxima maxQtd de exemplos que a lista pode possuir public void adicionarExemploExemplo exemplo adiciona um exemplo ao final da lista de exemplos public void ordenarPelaDistanciadouble atributosEntrada ordena os exemplos da lista em ordem crescente considerando a distância Euclidiana de cada exemplo com relação aos valores de atributos de entrada passados como parâmetro para o método Uma explicação mais detalhada sobre como essa ordenação deve ser realizada é apresentada neste enunciado na seção Ordenação pela distância public int getQtdExemplos retorna a quantidade de exemplos na lista public Exemplo getExemplos retorna todos os exemplos armazenados na lista public Exemplo getPrimeirosExemplosint n retorna os primeiros n exemplos na lista public Exemplo getUltimosExemplosint n retorna os últimos n exemplos na lista Observação Não é permitido o uso de funções de ordenação prontas por exemplo sort Implemente um algoritmo de ordenação Também não use o termo sort em nenhuma parte do código Importante Submeta apenas as classes Exemplo e ListaExemplos descritas no enunciado todas as classes devem estar no pacote classificacao As classes submetidas não podem realizar impressão de dados utilizar import e javautil Casos de teste Formato dos casos de teste que aparecem ao avaliar as classes no sistema de correção automática Entrada Sequência de operações no formato instanciarListaExemplos qtdMax lista índice lista adicionarExemplo qtdatributosentrada valores dos atributos de entrada rótulo da classe lista índice lista ordenarPelaDistancia qtdatributosentrada valores dos atributos de entrada rótulo da classe lista índice lista getExemplos lista índice lista getPrimeirosExemplos n lista índice lista getUltimosExemplos n Saída Operações executadas e saídas obtidas VPL CodigosAula07082023zip Seguir para Bonus2 Parte 2 Algoritmo de classificação Este é o Ambiente Virtual de Aprendizagem da UFABC para apoio ao ensino presencial e semipresencial Esta plataforma permite que os usuários educadoresalunos possam criar cursos gerenciálos e participar de maneira colaborativa Informação Conheça a UFABC Conheça o NTI Conheça o Netel Contato Av dos Estados 5001 Bairro Bangu Santo André SP Brasil CEP 09210580 Siganos Universidade Federal do ABC Moodle 2023 Português Brasil ptbr English en Português Brasil ptbr Obter o aplicativo para dispositivos móveis
6
Linguagens de Programação
UFABC
3
Linguagens de Programação
UFABC
3
Linguagens de Programação
UFABC
8
Linguagens de Programação
UFABC
6
Linguagens de Programação
UFABC
23
Linguagens de Programação
UFABC
6
Linguagens de Programação
UFABC
Texto de pré-visualização
DA2MCTA01813SA Programação Orientada a Objetos Paulo Henrique Pisani e Diogo Santana Martins 20232 Painel Meus cursos POO DA2MCTA01813SA 20232 Bônus 2 Bonus2 Parte 2 Algoritmo de classificação Data de entrega sexta 11 Ago 2023 2359 Arquivos requeridos ListaExemplosjava KNNjava Baixar Tipo de trabalho Trabalho individual Parte 2 Algoritmo de classificação Na área de Aprendizado de Máquina Faceli et al 2021 um algoritmo que pode ser usado para classificação e regressão é o kVizinhos mais próximos kNearest Neighbours kNN Neste exercício deverá ser implementada uma versão para classificação conforme descrito a seguir kNN Antes de ser utilizado para classificação o algoritmo precisa de dados de treinamento Os dados de treinamento serão representados por uma lista de exemplos como exemplificado a seguir Cada exemplo possui atributos de entrada e um rótulo de classe correspondente a1 a2 a3 rótulo da classe 10 09 11 1 11 08 10 1 40 80 09 2 12 11 09 1 40 60 01 2 A partir dos dados de treinamento o algoritmo realizará predições dos rótulos de classe para novos dados Para os valores de atributos de entrada 5 7 1 um algoritmo de classificação poderia predizer o rótulo de classe 2 Essa predição será o resultado da classificação realizada pelo algoritmo No kNN a predição do rótulo de classe para novos valores de atributos de entrada dados de teste é realizada da seguinte forma 1 Calcule a distância entre os valores dos atributos de entrada passados dados de teste e cada um dos exemplos nos dados de treinamento utilize distância Euclidiana 2 Determine quais são os k exemplos mais próximos ou seja os que tem as k menores distâncias O valor de k é definido previamente 3 O rótulo de classe predito resultado da classificação será aquele mais frequente dentre os rótulos dos k exemplos mais próximos Demonstração de classificação considerando os dados de treinamento da tabela anterior e os valores de atributos de entrada 5 7 1 1 Distância entre os valores dos atributos de entrada de teste 5 7 1 e cada um dos exemplos de treinamento o cálculo da distância considera apenas os atributos de entrada no caso a1 a2 e a3 a1 a2 a3 rótulo da classe distância 10 09 11 1 730 11 08 10 1 732 40 80 09 2 142 12 11 09 1 702 40 60 01 2 168 2 Para k3 os k mais próximos são destacados a seguir a1 a2 a3 rótulo da classe distância 40 80 09 2 142 40 60 01 2 168 12 11 09 1 702 10 09 11 1 730 11 08 10 1 732 3 Entre os k3 exemplos mais próximos o rótulo de classe mais frequente é o 2 Portanto o resultado da predição é 2 Classes a serem implementadas Devem ser implementadas as classes KNN e ExcecaoDadosInvalidos Além disso também submeta o código das classes Exemplo e ListaExemplos Essas duas classes foram descritas em Bonus Parte 1 Lista de exemplos e são necessárias para a implementação da classe KNN acesso package Classe ExcecaoDadosInvalidos subclasse de Exception não é RuntimeException esta exceção é lançada pelo método predizer quando a quantidade de atributos de entrada é inválida mais detalhes na descrição do método predizer da classe KNN public int getQtdAtributosTreinamento retorna a quantidade de atributos de entrada nos dados de treinamento Esse valor deve ser sido armazenado dentro da instância da exceção no momento em que a exceção é criada public int getQtdAtributosPredizer retorna a quantidade de atributos de entrada do parâmetro passado ao método predizer Esse valor deve ser sido armazenado dentro da instância da exceção no momento em que a exceção é criada acesso public Classe KNN public KNNint k construtor que recebe k e armazena na instância da classe public void setDadosTreinamentoListaExemplos lista armazena uma lista de exemplos como conjunto de dados de treinamento public int predizerdouble atributosEntrada recebe valores dos atributos de entrada dados de teste e retorna o rótulo de classe predito pelo algoritmo kNN conforme procedimento descrito no início do enunciado deste exercício Esse método predizer deve lançar exceção em algumas situações Chamar o método predizer sem possuir dados de treinamento deve ser lançada uma exceção do tipo Exception com o texto Dados de treinamento nao inicializado observe que não há acento na mensagem Use o seguinte construtor já existente na classe Exception ExceptionString message Chamar o método predizer com um exemplo que possui quantidade de atributos diferente da quantidade de atributos dos exemplos de treinamento deve ser lançada uma exceção do tipo ExcecaoDadosInvalidos informado a quantidade de atributos de entrada nos exemplos de treinamento e nos dados passados para o método predizer Importante O programa principal já existe no sistema de correção automática Submeta apenas as classes especificadas todas devem estar no pacote classificacao A classes não podem realizar impressão de dados javautil ou utilizar import Os códigos submetidos não podem utilizar métodos prontos para ordenação por exemplo sort Para ordenação implemente um método e inclua na submissão Também não use o termo sort em nenhuma parte do código Casos de teste Formato dos casos de teste que aparecem ao avaliar as classes no sistema de correção automática Entrada Sequência de operações no formato instanciarListaExemplos qtdMax lista índice lista adicionarExemplo qtdatributosentrada valores dos atributos de entrada rótulo da classe instanciarKNN k knn setDadosTreinamento índice da lista de exemplos knn predizer qtdatributosentrada valores dos atributos de entrada Saída Verificação das classes Operações executadas e saídas obtidas Referências Faceli K Lorena A C Gama J Almeida T A Carvalho A C P L F 2021 Inteligência Artificial Uma Abordagem de Aprendizado de Máquina 2a edição LTC Um dos testes é realizado com parte do conjunto de dados Iris httpsarchiveicsuciedumldatasetsIris VPL Bonus2 Parte 1 Lista de exemplos Seguir para Este é o Ambiente Virtual de Aprendizagem da UFABC para apoio ao ensino presencial e semipresencial Esta plataforma permite que os usuários educadoresalunos possam criar cursos gerenciálos e participar de maneira colaborativa Informação Conheça a UFABC Conheça o NTI Conheça o Netel Contato Av dos Estados 5001 Bairro Bangu Santo André SP Brasil CEP 09210580 Siganos Universidade Federal do ABC Moodle 2023 Português Brasil ptbr English en Português Brasil ptbr Obter o aplicativo para dispositivos móveis DA2MCTA01813SA Programação Orientada a Objetos Paulo Henrique Pisani e Diogo Santana Martins 20232 Painel Meus cursos POO DA2MCTA01813SA 20232 Bônus 2 Bonus2 Parte 1 Lista de exemplos Descrição Enviar Editar Visualizar envios Bonus2 Parte 1 Lista de exemplos Data de entrega sexta 11 Ago 2023 2359 Arquivos requeridos ListaExemplosjava Baixar Tipo de trabalho Trabalho individual Parte 1 Lista de exemplos Nesta primeira parte do exercício deve ser implementada uma lista de exemplos A lista de exemplos neste exercício é um conjunto de dados formado por uma tabela Cada linha da tabela é um exemplo A figura a seguir mostra uma lista de exemplos a1 a2 a3 rótulo da classe 10 09 11 1 11 08 10 1 40 80 09 2 12 11 09 1 40 60 01 2 Nessa tabela cada linha é um exemplo Os atributos a1 a2 e a3 serão chamados de atributos de entrada e o último atributo última coluna será chamado de rótulo da classe Neste exercício todos os atributos de entrada são do tipo double e o rótulo da classe será representado por um número inteiro Esses dados da lista de exemplos serão usados em Bonus Parte 2 Algoritmo de classificação para que um algoritmo possa predizer o rótulo da classe ao receber novos valores dos atributos de entrada dados de teste Ordenação pela distância Conforme será descrito mais a frente uma funcionalidade que deverá ser implementada neste exercício é a ordenação dos exemplos pela distância com relação a um determinado conjunto de valores de atributos de entrada No caso deste exercício a distância utilizada será a distância Euclidiana que é calculada de acordo com a fórmula a seguir Σ xᵢ yᵢ² n i1 Cálculo da distância Euclidiana entre x121 e y309 13² 20² 19² 4 4 64 849 No caso da lista de exemplos é possível calcular a distância de cada exemplo na tabela com relação um determinado conjunto de valores de atributos de entrada o cálculo da distância considera apenas os atributos de entrada no caso a1 a2 e a3 A tabela a seguir mostra a distância entre cada exemplo na lista e os valores 5 7 1 a1 a2 a3 rótulo da classe distância 10 09 11 1 730 11 08 10 1 732 40 80 09 2 142 12 11 09 1 702 40 60 01 2 168 A partir das distâncias os exemplos podem ser ordenados pela distância ordem crescente conforme apresentado a seguir a1 a2 a3 rótulo da classe distância 40 80 09 2 142 40 60 01 2 168 12 11 09 1 702 10 09 11 1 730 11 08 10 1 732 Classes a serem implementadas Duas classes devem ser implementadas nesta parte 1 do exercício Exemplo e ListaExemplos as duas classes devem estar no pacote classificacao A seguir são apresentados os métodos necessários em cada uma das classes acesso package Classe Exemplo public Exemplodouble atributosEntrada int rotuloClasse construtor que inicializa o exemplo com os valores dos atributos de entrada e o rótulo da classe public double getAtributosEntrada retorna os valores dos atributos de entrada public int getRotuloClasse retorna o valor do rótulo da classe acesso public Classe ListaExemplos public ListaExemplosint maxQtd construtor que recebe como parâmetro a quantidade máxima maxQtd de exemplos que a lista pode possuir public void adicionarExemploExemplo exemplo adiciona um exemplo ao final da lista de exemplos public void ordenarPelaDistanciadouble atributosEntrada ordena os exemplos da lista em ordem crescente considerando a distância Euclidiana de cada exemplo com relação aos valores de atributos de entrada passados como parâmetro para o método Uma explicação mais detalhada sobre como essa ordenação deve ser realizada é apresentada neste enunciado na seção Ordenação pela distância public int getQtdExemplos retorna a quantidade de exemplos na lista public Exemplo getExemplos retorna todos os exemplos armazenados na lista public Exemplo getPrimeirosExemplosint n retorna os primeiros n exemplos na lista public Exemplo getUltimosExemplosint n retorna os últimos n exemplos na lista Observação Não é permitido o uso de funções de ordenação prontas por exemplo sort Implemente um algoritmo de ordenação Também não use o termo sort em nenhuma parte do código Importante Submeta apenas as classes Exemplo e ListaExemplos descritas no enunciado todas as classes devem estar no pacote classificacao As classes submetidas não podem realizar impressão de dados utilizar import e javautil Casos de teste Formato dos casos de teste que aparecem ao avaliar as classes no sistema de correção automática Entrada Sequência de operações no formato instanciarListaExemplos qtdMax lista índice lista adicionarExemplo qtdatributosentrada valores dos atributos de entrada rótulo da classe lista índice lista ordenarPelaDistancia qtdatributosentrada valores dos atributos de entrada rótulo da classe lista índice lista getExemplos lista índice lista getPrimeirosExemplos n lista índice lista getUltimosExemplos n Saída Operações executadas e saídas obtidas VPL CodigosAula07082023zip Seguir para Bonus2 Parte 2 Algoritmo de classificação Este é o Ambiente Virtual de Aprendizagem da UFABC para apoio ao ensino presencial e semipresencial Esta plataforma permite que os usuários educadoresalunos possam criar cursos gerenciálos e participar de maneira colaborativa Informação Conheça a UFABC Conheça o NTI Conheça o Netel Contato Av dos Estados 5001 Bairro Bangu Santo André SP Brasil CEP 09210580 Siganos Universidade Federal do ABC Moodle 2023 Português Brasil ptbr English en Português Brasil ptbr Obter o aplicativo para dispositivos móveis