- knn.py - implementações do knn para classificação e regressão.
- Você pode adaptar o exemplo do seguinte link para tomar como base inicial para a sua implementação da regressão logística, que deve ter os métodos fit e predict. Explicação mais detalhada nos slides. No fit você faz o que for possível para melhorar o desempenho de forma genérica antes do predict. Exemplo: não é o caso nesta questão, mas no fit pode-se, por exemplo, contruir uma kd-tree para melhorar o desempenho do kNN na hora do predict. O objetivo do fit é reduzir ao máximo o trabalho do predict.
- Implemente as classes de acordo com as seguintes assinaturas:
- KNNClassifier(k=5, metric='minkowski', p=2)
- KNNRegressor(k=5, metric='minkowski', p=2)
- Agora avalie e compare sua implementação de KNNClassifier usando a distância euclidiana e a distância manhattan. Compare seus resultados com a implementação do scikit learn somente para a distância euclidiana.
- Agora avalie e compare sua implementação de KNNRegressor usando a distância euclidiana e a distância manhattan. Compare seus resultados com a implementação do scikit learn somente para a distância euclidiana.
Lista de Exercícios 07 (prazo final para entrega: 22/04/2018 - DOMINGO)
- Use K-Fold Cross Validation com k = 5 para resolver os seguintes problemas de machine learning:
- Regressão
- Dataset: boston house-prices dataset
- Aplicar Standardization nas features.
- Comparar os resultados dos seguintes algoritmos: Gradient Descent, Linear Regression, kNN, SVM.
- Usar as seguintes métricas: RMSE, MAE.
- Escolher a melhor técnica e criar um modelo final usando todo o dataset para treinar o modelo.
- Classificação
- Dataset: breast cancer wisconsin dataset
- Aplicar Normalization nas features.
- Comparar os resultados dos seguintes algoritmos: Logistic Regression, kNN, Naive Bayes, SVM.
- Mostrar a matriz de confusão.
- Usar as seguintes métricas: Accuracy, Precision, Recall, F1-Measure, AUC (Area Under the Curve).
- Plotar curva ROC dos diferentes algoritmos.
- Escolher a melhor técnica e criar um modelo final usando todo o dataset para treinar o modelo.
- Você pode usar as implementações do Scikit Learn.
- Preencha seus resultados de RMSE (para o problema de regressão) e Accuracy (para o problema de classificação) na seguinte planilha online.
- Nossa primeira competiçãozinha interna!!!
- Tentem melhorar os resultados.
Lista de Exercícios 08 (prazo final para entrega: 07/05/2018 - Segunda)
- Adicione à sua biblioteca Python as seguintes implementações. Tome por base as implementações que fornecemos já prontas nos Jupyter Notebooks da disciplina e que estão nos links entre parênteses a seguir (tarefa simples: é só copiar, colar e usar as classes em sua biblioteca Python).
- Desenhe o gráfico de região de decisão (plot_decision_regions) de cada um dos 3 algoritmos acima para os dados do dataset pima-indians-diabetes.csv.
- Veja exemplos de gráficos de região de decisão nos Jupyter Notebooks mencionados acima.
- Como o gráfico está limitado a 2 dimensões, sugiro a escolha das 2 features com maior correlação com o label (target).
- Use os dados das features standardizados.
- Use K-Fold Cross Validation Estratificada com k = 3 para obter a acurácia dos 3 algoritmos acima sobre o dataset pima-indians-diabetes.csv. Faça Standardization dos dados (fit para o conjunto de treino e transform para treino e teste).
- Compare também com as implementações de Logistic Regression, kNN, Naive Bayes e SVM do Scikit-Learn.
- Ajuste os algoritmos através de seus hiper-parâmetros para obter os melhores resultados possíveis em cada algoritmo.
- Explique as diferenças entre o Adaline com Gradiente Descendente em Batch e o Adaline com Gradiente Descendente Estocástico.
Lista de Exercícios 09 (prazo final para entrega: 14/05/2018 - Segunda)
- O dataset de renda de americanos dos Estados Unidos tem como rótulo se a pessoa ganha ou não mais de 50.000 dólares por ano.
- O dataset contém dados categóricos e valores faltando.
- Faça o melhor pre-processamento possível para tornar tal dataset adequado para uso em diversos algoritmos de aprendizagem de máquina.
- Faça atribuição da média da coluna para valores faltantes, caso o percentual de valores faltantes da coluna não seja muito grande.
- Transforme categorias usadas nas features e label em números. Categorias que não possuem uma ordem implícita devem ser transformadas em features binárias.
- Use 5-Fold Cross Validation Estratificada para obter a Accuracy através do uso dos seguintes algoritmos: Logistic Regression, kNN, Naive Bayes, SVM.
- Faça Standardization dos dados (fit para o conjunto de treino e transform para treino e teste).
- Escolha a melhor técnica e crie um modelo final usando todo o dataset para treinar o modelo.
Lista de Exercícios 10 (prazo final para entrega: 21/05/2018 - Segunda)
- Use o dataset do link a seguir para aplicar sobre ele o gradiente descendente estocástico.
- O label (target) do dataset é o atributo admit.
- Use 70% do dados para treino e 30% para teste sem validação cruzada, mas com estratificação.
- Obtenha e compare os coeficientes (coef_ e intercept_) usando modelos com diferentes penalidades / regularizações:
- Sem Regularização
- Com Reguralização L1
- Com Regularização L2
- Com Regularização Elastic Net
- Para os experimentos com Regularização, crie também modelos variando a força da regularização (alpha). Use alpha com os seguintes valores: 0.0001, 0.01, 1, 10, 100.
- Compare a acurácia dos modelos criados.
Lista de Exercícios 11 (prazo final para entrega: 04/06/2018 - Segunda)
- Complemente a Lista de Exercícios 7 para também avaliar o desempenho dos algoritmos DecisionTree, RandomForest e Gradient Boosting tanto no problema de regressão (DecisionTreeRegressor, RandomForestRegressor e GradientBoostingRegressor), como também no problema de classificação (DecisionTreeClassifier, RandomForestClassifier e GradientBoostingClassifier).
- Use um valor constante para o parâmetro random_state e teste os resultados com as seguintes combinações de hiper-parâmetros para RandomForest e Gradient Boosting:
- learning_rate: 0.1, 0.05, 0.01 (somente para o Gradient Boosting)
- n_estimators: 50, 100, 200
- max_depth: 3, 5, 7
- Mostre a importância das features de acordo com o melhor modelo de classificação e o melhor modelo de regressão encontrados dentre os 3 usados nesta lista de exercícios (DecisionTree, RandomForest e Gradient Boosting).
Lista de Exercícios 12 (prazo final para entrega: 11/06/2018 - Segunda)
- Faça a clusterização do dataset deste link usando o algoritmo k-means++.
- O dataset possui os seguintes dados de motoristas: a distância média dirigida por dia e a média percentual do tempo que um motorista estava 5mph acima do limite de velocidade.
- Portanto, agrupe os motoristas pela similaridade das features acima usando o algoritmo k-means++.
- Use o método do cotovelo (Elbow Method) e a análise de silhueta (Silhouette Analysis) para identificar o melhor valor de k.
- Mostre ambos graficamente.
- Na análise de silhueta, para o melhor valor encontrado para k, mostre: k-1, k e k+1.
- Para o mesmo valor de k obtido acima, execute o k-means original com inicialização totalmente randômica.
- Compare os resultados de k-means e k-means++ (1) graficamente, (2) tempo de execução e (3) número mínimo de iterações necessárias para chegar ao melhor resultado.