{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Problema 2 - Conhecendo as flores Iris\n", "\n", "* Minicurso Machine Learning -- Hands on com Python\n", "* Samsung Ocean Manaus\n", "* Facilitadora: Elloá B. Guedes\n", "* Repositório: http://bit.ly/mlpython\n", "* Nome:\n", "* Email:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bibliotecas\n", "\n", "A célula a seguir está reservada para importação de bibliotecas" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Preparando os dados para treinamento\n", "\n", "1. Abra o dataset, visualize o cabeçalho\n", "2. Atribua a uma variável Y o atributo preditor 'species'\n", "3. Armazene os demais atributos em uma variável X\n", "4. Efetue uma partição do tipo Holdout 60/40" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.40)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Treinando Modelos - Árvore de Decisão\n", "\n", "1. Instancie uma árvore de decisão com parâmetros padrões\n", "2. Treine e árvore de decisão\n", "3. Se o pacote graphviz estiver disponível, exporte a árvore de decisão produzida e visualize-a" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Adicionar no cabeçalho: from sklearn import tree\n", "\n", "clf = tree.DecisionTreeClassifier()\n", "clf.fit(X_train, Y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Pacote graphviz para visualização da árvore de decisão produzida.\n", "# Saída disponível no arquivo iris-tree.pdf\n", "import graphviz \n", "dot_data = tree.export_graphviz(clf, out_file=None, \n", " feature_names=[\"sepalLength\",\"sepalWidth\",\"petalLength\",\"petalWidth\"], \n", " class_names=[\"setosa\",\"versicolor\",\"virginica\"], \n", " filled=True, rounded=True, \n", " special_characters=True) \n", "graph = graphviz.Source(dot_data) \n", "graph.render(\"iris-tree\") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Testando Modelos - Árvore de Decisão\n", "\n", "1. Obtenha as previsões desta árvore para o conjunto de testes\n", "2. Calcule a acurácia deste modelo\n", " 2.1 Da biblioteca sklearn.metrics efetue a importação do accuracy_score\n", "3. Obtenha a matriz de confusão destas previsões\n", " 3.1 Da biblioteca sklearn.metrics fetue a importação do confusion_matrix\n", "4. Obtenha uma visualização mais agradável desta matriz de confusão. \n", " 4.1 Visualize o arquivo iris-confusao.pdf" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Plotando matriz de confusão\n", "# a matriz de confusão deve estar numa variável matrizcf\n", "import matplotlib.pyplot as plt\n", "import itertools\n", "\n", "cm = matrizcf\n", "cmap=plt.cm.Blues\n", "normalize = False\n", "classes = [\"setosa\",\"versicolor\",\"virginica\"]\n", "plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", "plt.title('Matriz de confusao')\n", "plt.colorbar()\n", "tick_marks = np.arange(len(classes))\n", "plt.xticks(tick_marks, classes, rotation=45)\n", "plt.yticks(tick_marks, classes)\n", "\n", "fmt = '.2f' if normalize else 'd'\n", "thresh = cm.max() / 2.\n", "for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n", " plt.text(j, i, format(cm[i, j], fmt))\n", "\n", "plt.tight_layout()\n", "plt.ylabel('Rótulo real')\n", "plt.xlabel('Rótulo previsto')\n", "plt.savefig(\"iris-confusao.pdf\")\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Comparando Modelos - k-Vizinhos Mais Próximos\n", "\n", "1. Treine um classificador k-Vizinhos Mais Próximos para este problema, com vizinhança de 3\n", "2. Obtenha a acurácia deste modelo para o conjunto de testes\n", "3. Considerando esta métrica, qual modelo tem melhor desempenho nesta tarefa?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }