From 2e954d04f43d40f51ccdef24c97c535b4fb48b77 Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Tue, 12 Nov 2019 16:32:06 -0300 Subject: [PATCH 01/14] Created using Colaboratory --- notebooks/3_regression.ipynb | 3981 ++++++++++++++++++++++++++++++++++ 1 file changed, 3981 insertions(+) create mode 100644 notebooks/3_regression.ipynb diff --git a/notebooks/3_regression.ipynb b/notebooks/3_regression.ipynb new file mode 100644 index 0000000..8921f6a --- /dev/null +++ b/notebooks/3_regression.ipynb @@ -0,0 +1,3981 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "3_regression.ipynb", + "provenance": [], + "collapsed_sections": [ + "TsV0SiuwpZ7i", + "7cfguFoQp2_-", + "hDpjk2hPqBar", + "fB8cnF96qcQM", + "MyrmVTcFtw9L", + "Ood5PUZCtxsa", + "VUZAwJjMvh0r", + "KDcimzDmxxIo" + ], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EB3dPPlgQeVt", + "colab_type": "text" + }, + "source": [ + "#**Semana 3 - Modelos de Regressão**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TsV0SiuwpZ7i", + "colab_type": "text" + }, + "source": [ + "### Importando libs e funções:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k6l8c0olEHpN", + "colab_type": "text" + }, + "source": [ + "Importando libs" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i7FF5Glb_NrK", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import random\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.preprocessing import StandardScaler \n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import f1_score\n", + "from matplotlib.colors import ListedColormap" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L7RydZ0qEIl4", + "colab_type": "text" + }, + "source": [ + "Importando funções" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KxneBJZUEIz4", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função de escalonamento\n", + "def feature_scaling(data):\n", + " sc = StandardScaler()\n", + " return sc.fit_transform(data)\n", + "\n", + "# Função que gera o gráfico dos resultados de regressão\n", + "def plot_results_linear(X, y, regressor, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, regressor.predict(X), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + "\n", + "# Função que gera o gráfico dos resultados de regerssão polinomial\n", + "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show() \n", + " \n", + "# Função que gera o gráfico dos resultados de arvores\n", + "def plot_results_reg(X, y, regressor, title): \n", + " X_grid = np.arange(min(X), max(X), 0.01)\n", + " X_grid = X_grid.reshape((len(X_grid), 1))\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + " " + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QaGBc_KwpeVt", + "colab_type": "text" + }, + "source": [ + "### Etapa de exploração e tratamento dos **dados**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZfESkLx0EjB8", + "colab_type": "text" + }, + "source": [ + "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", + "\n", + "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yq6eIh3NJnuN", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = pd.read_csv('https://raw.githubusercontent.com/r4phael/ml-course/master/data/pricing_houses.csv')\n", + "\n", + "#Selecionando uma amostragem dos dados para uma melhor visualização\n", + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].sample(n=60, random_state=0, weights = 'SalePrice')" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g-LzSHX1Jpg1", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hpLEK45DJomb", + "colab_type": "code", + "outputId": "cc0eccc5-6bb5-4ead-a7b9-7596700a9280", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + } + }, + "source": [ + "df.describe()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea ... YearBuilt SalePrice\n", + "count 60.000000 60.0 ... 60.000000 60.000000\n", + "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", + "std 8099.879028 0.0 ... 30.522618 74910.507145\n", + "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", + "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", + "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", + "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", + "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", + "\n", + "[8 rows x 6 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tgh2pe9lJtr6", + "colab_type": "text" + }, + "source": [ + "Visualizando o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EvY28fJdJxey", + "colab_type": "code", + "outputId": "7ef0eb04-db39-4e20-bcd3-a2c266e5e15a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "789 12205 0 444 8 1966 RL 187500\n", + "1039 1477 0 286 4 1970 RM 80000\n", + "868 14762 0 672 6 1948 RL 169000\n", + "782 16285 0 605 5 2001 RL 187100\n", + "611 10395 0 564 6 1978 RL 148000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 5 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jiMAqVghJylz", + "colab_type": "text" + }, + "source": [ + "Preenchendo os valores númericos nulos (NA) com a mediana." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KFDodNK4JzlR", + "colab_type": "code", + "outputId": "ee2fbfca-21aa-4e0d-8410-502c6c747df6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = df.fillna(df.median())\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "789 12205 0 444 8 1966 RL 187500\n", + "1039 1477 0 286 4 1970 RM 80000\n", + "868 14762 0 672 6 1948 RL 169000\n", + "782 16285 0 605 5 2001 RL 187100\n", + "611 10395 0 564 6 1978 RL 148000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jXWksGyoJ0u3", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis independentes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lJ0y3JijJ1ii", + "colab_type": "code", + "outputId": "78f424a9-14e0-42ae-c0b1-5a9d20472a25", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", + "X[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[12205],\n", + " [ 1477],\n", + " [14762],\n", + " [16285],\n", + " [10395]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 7 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uISYBhKqUqpQ", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis dependentes." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "okQl0J1SUq9h", + "colab_type": "code", + "outputId": "fe5cbf44-fe44-4b28-9baf-a50ecf037b33", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", + "y[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[187500],\n", + " [ 80000],\n", + " [169000],\n", + " [187100],\n", + " [148000]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yzJ08rJ4J3CS", + "colab_type": "text" + }, + "source": [ + " Criando os subconjuntos de treinamento e testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "tVz1mTUOJ4Tb", + "colab_type": "code", + "outputId": "4f5b4396-f9c4-4d11-c71d-7227ea74ee4c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + } + }, + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)\n", + "\n", + "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", + "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", + "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Tamanho do Dataset. 60\n", + "Tamanho do Conjunto de Treinamento. 48\n", + "Tamanho do Conjunto de Testes. 12\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OcQtLvcXJ7NT", + "colab_type": "text" + }, + "source": [ + "Normalizando as features " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aXvlvQ9DJ7i3", + "colab_type": "code", + "colab": {} + }, + "source": [ + "#X_train = feature_scaling(X_train)\n", + "#X_test = feature_scaling(X_test)\n", + "\n", + "#X_train[:5]" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7cfguFoQp2_-", + "colab_type": "text" + }, + "source": [ + "### Modelo - Regressão Linear" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGXuG35WJ_Tj", + "colab_type": "text" + }, + "source": [ + "Importando e treinando o modelo de Regressao Linear com o Conjunto de Treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "xo9Q5lxsKAVB", + "colab_type": "code", + "outputId": "d60bc5b4-d05e-4e4e-da6b-e51867d2076c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + } + }, + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "\n", + "regressor = LinearRegression()\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "FUYWJqnaKBvh", + "colab_type": "text" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SFvsig4SKCiC", + "colab_type": "code", + "outputId": "a8b625a1-50b2-4b45-f4cf-c02a757b93ea", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 221 + } + }, + "source": [ + "y_pred = regressor.predict(X_test)\n", + "\n", + "y_pred" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[207117.08544721],\n", + " [183686.58545274],\n", + " [169299.32577351],\n", + " [179936.94922447],\n", + " [188476.03676953],\n", + " [191960.99279345],\n", + " [202201.59593788],\n", + " [465634.02218018],\n", + " [206688.55559255],\n", + " [176212.52063471],\n", + " [195653.91183507],\n", + " [185759.91372014]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 12 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kRjvN45RKFPq", + "colab_type": "text" + }, + "source": [ + "Avaliando o modelo com a métrica r²" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "I3_jQ8N5KH-6", + "colab_type": "code", + "outputId": "b6945795-2198-4faf-9dab-41d33ef3fa65", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "regressor.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-0.9506477517227611" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rTahZRcqKS2b", + "colab_type": "text" + }, + "source": [ + "Exibindo os resultados do conjunto de treinamento" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2EAqhxovKT9a", + "colab_type": "code", + "outputId": "64515476-b062-45cf-94f4-4c2933868406", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_linear(X_train, y_train, regressor, 'Regressão Linear (Conj. de Treinamento)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hwRwnq82KU2w", + "colab_type": "text" + }, + "source": [ + "Exibindo os resultados do conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uXKEZrWQKV9R", + "colab_type": "code", + "outputId": "6ac6a682-61d0-4171-852e-dfc66cf6fa0e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_linear(X_test, y_test, regressor, 'Regressão Linear (Conj. de Testes)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\nmVnF/X8AVoupKS8+XwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "hDpjk2hPqBar" + }, + "source": [ + "### Modelo - Regressão Polynomial" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "5ZQOFczoqBat" + }, + "source": [ + "Importando e treinando o modelo de Regressao Linear com o Conjunto de Treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "07250634-6377-453d-e7e3-ef60148b086e", + "id": "TARpu6xZqBat", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + } + }, + "source": [ + "regressor = LinearRegression()\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SAyttRhcqsz_", + "colab_type": "text" + }, + "source": [ + "Transformando as features na quarta ordem polinomial:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OZyCBmL2qs-X", + "colab_type": "code", + "outputId": "509a28e7-a7bb-4290-cd72-3851df815bdc", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + } + }, + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "\n", + "poly_reg = PolynomialFeatures(degree = 4)\n", + "X_poly = poly_reg.fit_transform(X)\n", + "poly_reg.fit(X_poly, y)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "PolynomialFeatures(degree=4, include_bias=True, interaction_only=False,\n", + " order='C')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "92IzIbgrrDdG", + "colab_type": "text" + }, + "source": [ + "Treinando o modelo de regressão polynomial com o conjunto de treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "AiAG4XSPrDy9", + "colab_type": "code", + "outputId": "0c220401-e443-4669-e878-a9025f1455cb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + } + }, + "source": [ + "lin_reg_poly = LinearRegression()\n", + "lin_reg_poly.fit(X_poly, y)\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "5Xy5SEAuqBaz" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "c16cdc19-73c9-4409-c400-ce89852480ca", + "id": "ySpZ9RyWqBa0", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "y_pred = lin_reg_poly.predict(X_poly)\n", + "\n", + "y_pred[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[210977.15912637],\n", + " [101264.45016613],\n", + " [231210.99529702],\n", + " [242927.64582841],\n", + " [195940.94028164]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 19 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wUrWgrvU0uTq", + "colab_type": "text" + }, + "source": [ + "Avaliando o modelo de regressão linear com a métrica r2:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lETAHBqw0uC5", + "colab_type": "code", + "outputId": "f7368a63-cfcc-49ae-bdde-f1664f40d0f6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "regressor.score(X, y)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.14645648066355865" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 23 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "f8hyc24cqBa7" + }, + "source": [ + "Avaliando o modelo de regressão polynomial com a métrica r2:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "b77eb92e-2960-4140-de80-b473142322e3", + "id": "HDXwQ0ddqBa9", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "lin_reg_poly.score(X_poly, y)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.2824360477057858" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 24 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "gaRZCCjKqBbC" + }, + "source": [ + "Visualizando os resultados da regressão linear:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "cd930c49-89d7-4214-ef23-73663647d20e", + "id": "GdApU1gYqBbD", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_linear(X, y, regressor, 'Regressão Linear')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n62UAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "LlX6EwYwqBbG" + }, + "source": [ + "Visualizando os resultados da regressão linear polinomial:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "6e05d3f9-7557-4788-f409-316133d351ae", + "id": "5GKwud8fqBbG", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_poly(X, y, lin_reg_poly, poly_reg, 'Regressão Polynomial')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "fB8cnF96qcQM" + }, + "source": [ + "### Modelo - Árvore de Decisão " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "sgo7wyZUqcQQ" + }, + "source": [ + "Treinando o modelo de Arvore de Decisão com o Conjunto de Treinamento" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "2f83d111-579f-4617-bbc7-4d1441914581", + "id": "-T3_UnXvqcQR", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "\n", + "regressor = DecisionTreeRegressor(random_state = 0)\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n", + " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", + " min_impurity_split=None, min_samples_leaf=1,\n", + " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", + " presort=False, random_state=0, splitter='best')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 27 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "isKict8VqcQW" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "dc307c8a-b1b9-4c8e-cb8e-f49e749e050d", + "id": "myt4FBHpqcQX", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + } + }, + "source": [ + "y_pred = regressor.predict(X_test)\n", + "\n", + "y_pred" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([195000., 115000., 94000., 216500., 139400., 113000., 214900.,\n", + " 402000., 195000., 150750., 148000., 215200.])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 28 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "y0HxOT1nqcQa" + }, + "source": [ + "Avaliando o modelo com a métrica r2" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "b802e761-2c5c-465b-ca55-f42f5e2fd0a5", + "id": "EXTaMCEuqcQb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "regressor.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-1.1563461633885121" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 29 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "-8m22r5SqcQd" + }, + "source": [ + "Exibindo os resultados do conjunto de treinamento" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "41bc6a12-484d-483c-8221-ed9b43f54116", + "id": "HTJnv_R9qcQe", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_reg(X_train, y_train, regressor, 'Arvore de Decisão (Conj. de Treinamento)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "XviIofWNqcQj" + }, + "source": [ + "Exibindo os resultados do conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "7c7c2439-349e-401f-d0bc-e9b58d2f1461", + "id": "57h8qL4EqcQk", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_reg(X_test, y_test, regressor, 'Arvore de Decisão (Conj. de Testes)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEWCAYAAACqitpwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO2de7xd45nHv78kchWSSCi5HSVVoUQE\n6VAiWkJp1KWDGKHatMrQ6gWjLS1pMUVr2tHGpYk6xHXIuEUGqXamQdwSoeqIhERI5CpCSPLMH++7\nc9bZ2Xuffc5Ze+9z9nm+n8/67LWe913v+661916/9bxXmRmO4ziOkyYdKl0Ax3Ecp/pwcXEcx3FS\nx8XFcRzHSR0XF8dxHCd1XFwcx3Gc1HFxcRzHcVLHxcVpk0iaKekblS5HNpLWSvp0EfFOl7RU0mGS\n7pO0bQvyPELSfc09v4l5PSxpfDPPvVTSrWmXqdJI2k/SzEqXo7Xh4tLOiQ/plZK6VLos5UBSjSSL\nIrBW0ruSHpD0pTTSN7OtzWx+EVFHASOBc4BlZra6BdlOBK7IHChwrqSXJH0gaZGkuyR9rgV5AGBm\nR5rZlJam0xQS39VaSZskfZg4HteCdGdJOrWl5TOzZ4BNaf2GqgUXl3aMpBrgC4ABX2kkbscU8+2U\nVlotoJeZbQ3sDcwA/kvS6eXK3MxON7P5ZvZVM/tmc9ORtB+wrZnNSph/A5wHnAv0AT4D3Ad8uSVl\nrhRRsLeO39ebwDEJW22lyxepBb5V6UK0Jlxc2jenAbOAyUCDqg5JkyVdL+khSR8AP5D0TlJkJH1V\n0py430XSryW9HbdfZ7whSaPi2/MFkt4B/hjtR0t6QdIqSf8naa98BZX0JUl/l7Ra0m8BZYV/XdIr\n0QubLmlwMTfAzN4xs98AlwJXSuoQ09tJ0j2Slkl6Q9K5ibw6Svo3Sa9Lel/Ss5IGxjCTtGvcP0rS\nyzHOYkk/iPbe0VtaFsv7gKQBifR3kjRN0gpJdZIKic+RwJ8T5w4BzgZONrPHzWy9ma0zs1ozuyLG\n2VbSLTH/hZJ+nLju0yX9VdKvYtnekHRkIv2iqyMl7Szpz/H6ZwB9s8JHxu99laQXJY0qJt0c+XSU\n9BNJ8yW9J6lWUq8Y1kPS1HgvV0l6Kt7/q4H9gBujB3R1jL+npMfjtb8i6dhEPmPjb/B9SW8lfxPA\nTOCINF/C2jxm5ls73YA64DvAvsAnwA6JsMnAauBAwktIV+B14EuJOHcBF8b9nxOEanugH/B/wGUx\nbBSwAbgS6AJ0A/YBlgIHAB0J4rYA6JKjnH2B94ETgK2A78X0vhHDx8Zr2R3oBPwY+L8811xD8NQ6\nZdk/He27x+t9Fvgp0DmGzQeOiHF/CMwFdiOI3N7AdjHMgF3j/hLgC3G/NzA87m8HHA90B3rG+3hf\noixPAv8Z7/kwYBkwOs/13AX8MHH8bWBhI9/7LcD9Me8a4B/AmTHs9Phb+Gb8Xs4C3gYUw2dm7nsR\nv6+/AdfE7/zg+B3eGsP6A8uBo+L9/lI87tdImguAL2bZLgD+AuwU79lk4I8x7Dzg7vib60QQlB4x\nbBZwaiKdbeJ3Ni5e+37AisT3uRzYP/Ed7pNVjo+Bz1T6f91atooXwLcKffFwUHyI9I3Hfwe+lwif\nDNySdc7lwM1xvyfwATA4Hr8OHJWIewSwIO6Pin+8ronw64nik7C9ChySo6ynAbMSxwIWUS8uD2ce\njvG4A7AuU7astGrILS5do/1AguC9mRV+UeKB9SowNs99TYrLm4Sqkm0a+S6GASvj/kBgI9AzEf5L\nYHKec2cA304cX5y8Vznid4zfxdCE7VvAzLh/OlCXCOser+lT8XgmRYgLMIjwAtAjYbuNenG5APhT\n1jnTgfGNpLuALcXlDeDAxPHO8fsX4eXpz8CeOdLKFpfxwIysOFOAC+L+UuCM5HeTFXez+PhmXi3W\njhkPPGpm78Xj28iqGgPeyjq+DTguVncdBzxnZgtj2E7AwkTchdGWYZmZfZQ4Hgx8P1ZVrJK0ivBg\nTZ6TYadkWSz8k5NlGwz8JpHOCsKDpX+OtPKRibsiprdTVtn+DdghxhlIENPGOJ7wZr4wVg99HkBS\nd0l/iFVSawieSq9YpbITsMLM3k+ks7DAtawkCH2G5cCOBcrUl+D9ZX9XyfTfyeyY2bq4u3WBNHOx\nE0EwP8jKJ8Ng4MSse3xQI2XfAkkifB8PJdJ5nvCCsR1wE0Fc7o5Vs78oUHU1GDg4q0zHJ8o0Nh6/\nGavO9ss6vyewqinlr2ZaQ8OqU2YkdQO+BnRUaAOBUHXRS9LeZvZitDWYMtvMXpa0kFDPfwpBbDK8\nTfhzzovHg6Jt8+lZxXgLmGhmE4so8hLCAyRTfiWPE2m1pHH3q4Q301eBXsAbZjYkT9y3gF2Alwol\naKEX0VhJWxF6hd0Zy/19QpXaAWb2jqRhhAeiCPesj6SeCYEZBCzOk80cQoN9hseA30kaYWazc8R/\nj+CxDgZeLiL95rIE6C2pR0JgBlH/O3iL4Lk0uzMDhBcNSYuB48zs2TzRfgr8VKGL+HTCb7SW3L/J\nR83smDx5/Q04WlJn4HzC738IgKRdgPUU99LRLnDPpX1yLKHqZSihSmYYoa3hL4QqqELcRqjHPphQ\n35/hduDHkvpJ6kv4Qxca03AD8G1JByjQQ9KXJfXMEfdBYA9Jxyn0NDsX+FQi/PfARZL2gM0N1ic2\nch3EuDtIOge4BLjIzDYBTwPvK3RA6BYbjPdMvKneCFwmaUgs+16StstKt7OkcZK2NbNPgDXAphjc\nE/gQWCWpT8wbADN7i9Be9UtJXRU6OZxJ/nv5EHBI4vzXCO01tyt0pOgc0zlJ0oVmtpEgchMl9VTo\n+HB+gfSbRfRoZwM/i2U4CEg+tG8FjlEYo9MxlnGUEh0bmsDvgStU36lie0nHxP0vShqq0GFhDaGq\nLvM9vEtoT8twH7CPpH+WtFUs90hJn4m/z5MkbUMQ5/cT6UD4DmbE++uAt7m0xw14BLg6h/1rhCqR\nToQ2l8tzxBlE+FM9mGXvClxHeGNdEve7xrBRwKIcaY0BniFUJSwhiFW++uwxhIbn1cBvCVUd30iE\n/wuhkX0N4Q305jzp1BDeWNcS2oyWEh7QY7Li7UQQzHcIVU+ziHX9hHaLHxPq+t+P1zAghhmwK6Ej\nwCPx3DUxzkGJtGfGMvyD0OaxuR0IGAA8QKiie51Em0qea3qG4AVljkV4AZhHaHtYDNwB7BHDexMe\n7svivfop0CGGnQ78NSv9ZDvSTOrbur4ArC1Qrk8TXljWEtqGfktsc4nhB8TvcUUsy4PAoEaudQFb\ntrl0JLThvBa/jzrgkhg2Pto/iN/l1YlrPSTGXQlcFW17xO/tvbj9T7T1AB5NfJ9PZd3zx4DDK/3f\nbk1bpgeI4zhtFEmHA98xs2MbjdzyvJ4EbjSzW0qdV1sherS/MrNDGo3cjnBxcRynKCR1J3haJ5vZ\nXypdHqd1420ujuM0iqTtCdVKfwb+WuHiOG0A91wcx3Gc1HHPxXEcx0mdko9ziQOWZgOLzexoSZMJ\nvTQys8CebmYvxLELvyEMOlsX7c/FNMYTeudA6ME0Jdr3JfRq6kbo8XOemVns3nkHoWfQAuBrZray\nUDn79u1rNTU1aVyy4zhOu+HZZ599z8z6ZdvLMYjyPOAVwrw9GX5oZndnxTuSMCBpCKGL4vXAAYlx\nACMIXSKflTQtisX1hDmQniJ2JyVMBXIh8JiZXSHpwnh8QaFC1tTUMHt2rjFnjuM4Tj7iwOotKGm1\nWBwQ9WXCoLPGGEuYy8osTB/eS9KOhDmqZpjZiigoM4AxMWwbM5tloeHoFsLgwExamTUnpiTsjuM4\nThkodZvLr4Ef0XAkK4TRwXMkXav6Rar603C+qEXRVsi+KIcdwuy+S+L+O9TPCdUASRMkzZY0e9my\nZU27MsdxHCcvJRMXSUcDS23L+X4uAj5LmM66D41UV7WU6NXk7BJnZpPMbISZjejXb4sqQ8dxHKeZ\nlNJzORD4iqQFwFRgtKRbzWxJrPpaT1g0av8YfzENJyMcEG2F7ANy2AHejdVmxM+laV6Y4ziOU5iS\niYuZXWRmA8ysBjgJeNzMTk089EVoC8nMLDsNOC1OBDgSWB2rtqYDhyusHtcbOByYHsPWxInlRJhw\n8f5EWpnp48cn7I7jOE4ZqMSU+7WS+hEm13uBsHIehN5eRxEmkltHWJQHM1sh6TLC5HwAPzezFXH/\nO9R3RX44bgBXAHdKOpOwhsTXSnlBjuM4TkN8hH5kxIgR5l2RHcdxmoakZ81sRLbdFwtzKsZzz8F9\n95U3z9GjYdSo8ubpOO0RFxenYkycCPfeC1J58jODRx+FWbPKk5/jtGd8bjGnYmzcCMOGwaZN5dmO\nOirk6ThO6XFxcRzHcVLHxcVxHMdJHRcXp2J4R0XHqV5cXBzHcZzUcXFxKkq5eoplcG/JccqDi4vT\nbii3kDlOe8bFxXEcx0kdFxenYngVleNULy4ujuM4Tuq4uDgVxRv0Hac6cXFxHMdxUsfFxakY5fYi\nvLeY45QPFxfHcRwndVxcnIri3oTjVCcuLo7jOE7quLg4FaMSPbe8t5jjlIeSi4ukjpKel/RAPN5Z\n0lOS6iTdIalztHeJx3UxvCaRxkXR/qqkIxL2MdFWJ+nChD1nHo7jOE55KMcyx+cBrwDbxOMrgWvN\nbKqk3wNnAtfHz5Vmtqukk2K8f5Y0FDgJ2APYCfgfSZ+Jaf0O+BKwCHhG0jQze7lAHk47xtt30ucr\nX/Flo6uBqVNh9Oh00yypuEgaAHwZmAicL0nAaOCUGGUKcCnhwT827gPcDfw2xh8LTDWz9cAbkuqA\n/WO8OjObH/OaCoyV9EqBPJxWhj/w2zYzZ0JNDRx0UKVL4rSEHXZIP81Sey6/Bn4E9IzH2wGrzGxD\nPF4E9I/7/YG3AMxsg6TVMX5/IPlulDznrSz7AY3k0QBJE4AJAIMGDWrG5TmO88UvwjXXVLoUTmuj\nZG0uko4GlprZs6XKo6WY2SQzG2FmI/r161fp4rQ7vHHdcaqXUnouBwJfkXQU0JXQ5vIboJekTtGz\nGAAsjvEXAwOBRZI6AdsCyxP2DMlzctmXF8jDaee4oDlOeSiZ52JmF5nZADOrITTIP25m44AngBNi\ntPHA/XF/Wjwmhj9uZhbtJ8XeZDsDQ4CngWeAIbFnWOeYx7R4Tr48nFaGt7m0bVysnXxUYpzLBYTG\n/TpC+8hN0X4TsF20nw9cCGBm84A7gZeBR4CzzWxj9ErOAaYTeqPdGeMWysNpx7iQOU75KEdXZMxs\nJjAz7s+nvrdXMs5HwIl5zp9I6HGWbX8IeCiHPWceTuvC33qrAxdtJxc+Qt9xHMdJHRcXx3EcJ3Vc\nXJyK4itROk51UpY2F6f18/HHMGdOePjW1EA5hv34g77t49+hkw/3XBwALr8c9tsP9t8fDjus0qUp\nDd7wXBr8vjq5cHFxAFi1Cnr0CFN5rF5d6dI4jtPWcXFxNtO5MwwcWN6qDn/rdZzqxMXFAbzu3HGc\ndHFxcRoglU9ofCXKto/fTycfLi7OZqq9iqrar69S+H11cuHi4gD1b6Dl9Fwcx6leXFyciuJvvY5T\nnbi4OJuRqr/NxXGc8uDi4gD+oHeah/9unHy4uDibKbfnUgmq+doqhVdtOrlwcXEqSjkfTP4QdJzy\n4eLiAN5bzHGcdHFxcTbj0987jpMWLi4O4J6L0zz8t+Lko2TiIqmrpKclvShpnqSfRftkSW9IeiFu\nw6Jdkq6TVCdpjqThibTGS3otbuMT9n0lzY3nXCeFd29JfSTNiPFnSOpdqut02hb+MEwfb8tyclFK\nz2U9MNrM9gaGAWMkjYxhPzSzYXF7IdqOBIbEbQJwPQShAC4BDgD2By5JiMX1wDcT542J9guBx8xs\nCPBYPHYaoRK9xfzB5DjVScnExQJr4+FWcSv02BoL3BLPmwX0krQjcAQww8xWmNlKYAZBqHYEtjGz\nWWZmwC3AsYm0psT9KQm7k4f2MImkC5njlI+StrlI6ijpBWApQSCeikETY9XXtZK6RFt/4K3E6Yui\nrZB9UQ47wA5mtiTuvwPskKd8EyTNljR72bJlzbvIKsPbXBzHSYOSiouZbTSzYcAAYH9JewIXAZ8F\n9gP6ABeUuAxGHo/JzCaZ2QgzG9GvHIvGt3L8zd5pKv4i4uSjLL3FzGwV8AQwxsyWxKqv9cAfCe0o\nAIuBgYnTBkRbIfuAHHaAd2O1GfFzabpXVH1UqreYC1rbx79DJxel7C3WT1KvuN8N+BLw98RDX4S2\nkJfiKdOA02KvsZHA6li1NR04XFLv2JB/ODA9hq2RNDKmdRpwfyKtTK+y8Qm704poD+08jtNe6VTC\ntHcEpkjqSBCxO83sAUmPS+oHCHgB+HaM/xBwFFAHrAPOADCzFZIuA56J8X5uZivi/neAyUA34OG4\nAVwB3CnpTGAh8LWSXWUV0R7mFnMcpzyUTFzMbA6wTw776DzxDTg7T9jNwM057LOBPXPYlwOHNbHI\n7Zr2IChefeM45cNH6DsNcM/FaQr+W3Hy4eLibKYSb/buTbR9/Dt0cuHi4gCV6S3mb72OU724uDjt\nChc0xykPLi7OZry3mOM4adGouEi6StI2kraS9JikZZJOLUfhnPLRHgTF2wbSpz38bpzmUYzncriZ\nrQGOBhYAuwI/LGWhnMpR7jYXf+C3ffw7dHJRjLhkxsJ8GbjLzFaXsDxOBfGHhOM4aVHMIMoHJP0d\n+BA4K46u/6i0xXLKja9E6ThOmjTquZjZhcA/ASPM7BPgA8J6KU6V0R48FxdOxykPxU7/shPwRUld\nE7ZbSlAep8L4rMhOU3CxdvLRqLhIugQYBQwlTC55JPBXXFyqivYwQ7ELWWnw++rkopgG/RMIk0C+\nY2ZnAHsD25a0VE5FyDwk/G3UcZyWUoy4fGhmm4ANkrYhLLw1sJFznDZGskHfcRynpRTT5jI7Lvp1\nA/AssBb4W0lL5VQU91wcx2kpxfQW+46ZrTKz3xNWkxwfq8ecclJbCzU10KFD+Kytpa4OzjwTnnmm\nsZOLIzP9S7moxCBKF07HKQ95PRdJwwuFmdlzpSmSswW1tTBhAqxbF44XLoQJE5h27Ge5+bZ9kWC/\n/VqWRfKhW60PYK/ySx+fZcHJR6FqsavjZ1dgBPAiYWnivYDZwOdLWzRnMxdfXC8sGdatY9NDjwD7\nsmlTeln5IErHcdIgb7WYmR1qZocCS4DhZjbCzPYlLF28uFwFdIA338xptlVhJp603hz9DdRxnLQo\nprfYbmY2N3NgZi8Buzd2kqSukp6W9KKkeZJ+Fu07S3pKUp2kOyR1jvYu8bguhtck0roo2l+VdETC\nPiba6iRdmLDnzKPNMmhQbnuvXqllUanFwlzQHKc6KUZc5ki6UdKouN0AzCnivPXAaDPbGxgGjJE0\nErgSuNbMdgVWAmfG+GcCK6P92hgPSUOBk4A9gDHAf0rqKKkj8DvCoM6hwMkxLgXyaJtMnAjduze0\nde+OjTmyMuVxHMdphGLE5QxgHnBe3F6OtoJYYG083CpuBowG7o72KcCxcX9sPCaGHyZJ0T7VzNab\n2RtAHbB/3OrMbL6ZfQxMBcbGc/Ll0TYZNw4mTYLBg8Or/uDBMGkSNmwfIN1qsWpvc6nma6sE7n06\n+Wh0nIuZfUTwJK5tauLRu3iWsAbM74DXgVVmtiFGWQT0j/v9gbdinhskrQa2i/ZZiWST57yVZT8g\nnpMvj+zyTQAmAAzKV/XUWhg3LmwJ7Ir0km8PD11/CDpO+ShmJcoDJc2Q9A9J8zNbMYmb2UYzGwYM\nIHgan21heVPFzCbFjgoj+vXrV+niNJs0H5rV7rk4jlMeihmhfxPwPYIHsrE5mZjZKklPELov95LU\nKXoWA6jvebaYMK3MIkmdCPOXLU/YMyTPyWVfXiCPqiJtEajEgEb3JhynOimmzWW1mT1sZkvNbHlm\na+wkSf3itDFI6kYY3f8K8ARhMkyA8cD9cX9aPCaGP25mFu0nxd5kOwNDgKeBZ4AhsWdYZ0Kj/7R4\nTr48qoo0xcUXC3McJ02K8VyekPTvwL2EHmAAFDFCf0dgSmx36QDcaWYPSHoZmCrpcuB5gmdE/PyT\npDpgBUEsMLN5ku4kdCTYAJxtZhsBJJ0DTAc6Ajeb2byY1gV58qhK/O2/eFw408W9TycfxYjLAfFz\nRMKW6fWVFzObQxhwmW2fT2h/ybZ/BJyYJ62JwMQc9ocIa8wUlUe1UYpqMfdcHMdJg2J6ix1ajoI4\nTacU1WLlpNxvvf6G7Tjlo5jeYjtIuknSw/F4qKS2PSixSsi3BstHH8Hpp8PMmU1P0z0Xx3HSoJgG\n/cmEdo2d4vE/gO+WqkBOy3n1VZgyBc4+u2nn+Zu90xz8d+Pkohhx6WtmdwKbIAxwpJldkp10yedh\nZOyrVjU9LfdcnKbgvxUnH8WIyweStiM04hPnB1td0lI5RZGvWsz/8Pnxe+M45aGY3mLnE8aa7CLp\nf4F+1I8hcSpIY55LU6srMr3FNm2CJ5+EnXaCXXdtWRkL4d1YHad6KbQS5VZm9omZPSfpEGA3wmJh\nr5rZJ2UroZOXDz4In2l4LplzevYMn4ccAt26wZo10KmYV5A2gAuZ45SPQtVii+NU+4cBG81snpm9\n5MLSOtiwAX71q7CfLSYt8VzOPTf0Mvv61+HDD0l1lUunOnHRdnJRSFx2J0yx8mPgLUm/ie0tTivg\nkwIS35J2ha5dg9eyyy4tT8txnPZLoWWOl5vZH+Igyv2B+cC1kl6XtMVoeae8FHroZ7yNprxRtodB\nlI7jlI9ieothZm8T5ue6Hngf+EYpC+U0TlIM0qwWy96vNs+l2q7HcVorBZtqJXUFjgFOBv4JeAS4\nEJhR+qI5uXjySfjtb2H9+vxxWtKg7ziOkwaFeovdBnwR+DNQC5wSJ5d0Ksitt8JddzW0peW5JKlG\nz8Wr4EqD31cnF4U8l0eAb5nZ++UqjFMcnTqF3mL5aK4gVGKxMKft4t+fU4i84mJmt5SzIE5xFPOH\nbo7nkp1uuTwXf+t1nOqkqAZ9p3XRIetby1ct5jiOU5DaWqipCQ+VmppwnBJVMva6/VBM9900e4tV\nGy68jhOprYUJE2DdunC8cGE4Bhg3rsXJF7OeS3dJP5F0QzweIunoFufsNJtixaUpNDZPmePko1pf\nRKqeiy+uF5YM69YFewoUUy32R2A98Pl4vBi4vLGTJA2U9ISklyXNk3RetF8qabGkF+J2VOKciyTV\nSXpV0hEJ+5hoq5N0YcK+s6Snov0OSZ2jvUs8rovhNUVcZ5sgl+dSimqxcjwwfCXKto2/eLRx3nyz\nafYmUoy47GJmVwGfAJjZOsIElo2xAfi+mQ0FRgJnSxoaw641s2FxewjCCpfAScAewBjgPyV1lNQR\n+B1wJDAUODmRzpUxrV2BlUBmhcwzgZXRfm2MVzVkt7lkk0a1WHZajuNUGYMGNc3eRIoRl48ldaN+\nPZddCJ5MQcxsiZk9F/ffB14B+hc4ZSww1czWm9kbQB1h2pn9gTozm29mHwNTgbGSBIwG7o7nTwGO\nTaQ1Je7fDRwW41cFpfBc8vUWcxynSpk4Ebp3b2jr3j3YU6AYcbmEMOZloKRa4DHgR03JJFZL7QM8\nFU3nSJoj6WZJvaOtP/BW4rRF0ZbPvh2wKq6MmbQ3SCuGr47x2zylbNAvlJbjOFXGuHEwaRIMHhwe\nFoMHh+MUGvOhiN5iZjZD0nOEqi0B55nZe8VmIGlr4B7gu2a2RtL1wGUET+gy4Grg680pfEuRNAGY\nADAoJVewHJSiQb+YdNOmUpNlOuniXm4bZty41MQkm0LTvwzPMi2Jn4MkDcpUeRVC0lYEYak1s3sB\nzOzdRPgNwAPxcDEwMHH6gGgjj3050EtSp+idJONn0lokqROwbYzfADObBEwCGDFiRJt47DSlQd8H\nUVYuL8dp7xTyXK6On12BEcCLBM9lL2A29b3HchLbOG4CXjGzaxL2Hc0sI1RfBV6K+9OA2yRdA+wE\nDAGejnkOkbQzQTROIsxzZpKeICy5PBUYD9yfSGs88LcY/rhZ9byzFtugD6Hr+ksvNQzv0QMOPrjx\ndBynENXzj3JKQaHpXw4FkHQvMNzM5sbjPYFLi0j7QOBfgLmSXoi2fyP09hpGqBZbAHwr5jdP0p3A\ny4SeZmeb2caY5znAdKAjcLOZzYvpXQBMlXQ58DxBzIiff5JUB6wgCFJV0JQ2F4CTToJZs7aM8+ST\n8IUvNLS1hyn3HccpD8WM0N8tIywAZvaSpN0bO8nM/kruLssPFThnIrBFV4XYXXmL88xsPqE3Wbb9\nI+DExsrYVmlKtdjatTBqFFx1VbD9/e9w2mmwcmXhNMqBC5fjVC/FiMscSTcCt8bjccCc0hXJaYym\neC5m0KcP7LdfOO7WLXx+/HFxeVSbAFTb9bQGvC3LyUUx4nIGcBZwXjx+krAipVMBmtoVOTt+587h\nM5e4VOIh4Q8mx6lOiumK/BFhlPu1pS+OUwyNzYr8VBxNVEhcfvjDhmOl3nwzTIqaoRo9FxeydKmm\n34aTPj4rchujKfNx7bUXzJ3bMP6gQXDOOfDOOw3jDh0KY8akV07Hcdo3Li5tkMYa9DN07hzCkp5O\nhw7wH/9RfB6lfDv1N1/HqV6KHukgaes42t6pIE1pczGDTZtad3VQay6bUxz+HTq5KGY9l89Jeh6Y\nB7ws6dk41sWpEMUOfrT77sdeew1Nu7/JK8xV6wPDvSXHKQ/FPKb+AJxvZoPNbBDwfeKUKU75KWb6\nF+bGYUnrPsAQWrc2rDDXjCVM/WHs5MN/G04hihGXHmb2RObAzGYCPUpWIqfF2BPh6zIUxAVr8gpz\n5VosrJxUqzfmOK2RYhr050v6CfCneHwqML90RXIao9FqsdVrNu9uFhdo1gpz/nbqOE5zKMZz+TrQ\nD7iXMMNxXyo0Rb5TZLXYttsEe9JzgSatMFeut3z3Jto+/h06uSjGc1lLWMMlsxKlijzPKRGNzoo8\navTm+aE3i0szV5hzz8VxnOZQjOfyJJDsgtwTmClpF0mfLU2xqpPbb4df/hI+/HDLsCuvhH33hREj\n4L778qdR1CDKPUNnPuu+ddBEQUYAABltSURBVBCXHj1SXWGuLeNimR5+L51CFOOBdDOz9zMHcTXJ\nGuB44JuEdVecIjjllPC5//5w2GGhjf2rX4Xly+Hll8MEk0uXwvTpcOyx+dPJFpfbbgveTL9+QaQy\n2JePxmaBDhscphttAj6I0nGcllCM5/KBpL0zB5L2Ad4ys6uoX5zLaQKbNoXPhQvh0UfD8ejRcOON\n0Lt34YduLs9l0ya45Ra4+uqQZvasyK25TtxXonSc6qQYz+W7wD2S3iasz/Ip4uJbZvaDEpatakmO\noAe44AL4538u/vxCD8lsYWmuuFTjxJVOaXDRdnJRzKzIz8TFwXaLplfN7JPSFqu6KfTAzsxknGZe\n/ud3HKfcNCoukroD5wODzeybkoZI2s3MHih98aqb5LorGRoTl8bEohKeixn84Q+wZEnT8li8GD71\nqaaXzWkduFfrFKKYarE/As8Cn4/Hi4G7ABeXZlLqP2Uy/XJMXPnuu3DWWc07d+jQdMvSGP5AdJzy\nUEyD/i6x8f4TADNbR2h7KYikgZKekPSypHmSzov2PpJmSHotfvaOdkm6TlKdpDmShifSGh/jvyZp\nfMK+r6S58Zzr4hicvHm0NqrFc8msannTTfV5FrtddVXTy+Y4TuunGHH5WFI3IDOIchdgfRHnbQC+\nb2ZDgZHA2ZKGAhcCj5nZEOCxeAxwJKFb8xBgAnEpZUl9gEuAA4D9gUsSYnE99d2hhwCZ5a7y5VE+\namvD0o4dOoTPxKSR5WpzaYm4NIWNG8NnsbM1VwpveyoNfl+dXBTzOLgEeAQYKKmW8LD+UWMnmdkS\nM3su7r8PvAL0B8YCU2K0KUBmRMdY4BYLzAJ6SdoROAKYYWYrzGwlMAMYE8O2MbNZcfaAW7LSypVH\neaitDbMQZ/oFL1wYjrPI5bk0RjGeSxpdkZviuWS6Vnfs2PR8HMepTgq2ucRqpr8DxxG8DxGmgnmv\nKZnEQZf7AE8BO5hZpun3HWCHuN8feCtx2qJoK2RflMNOgTyyyzWB4CUxqAnzbjXKxReHEZJJEsdp\neC7duuUe6Z/EPRenlHj7lVOIguJiZibpITP7HPBgczKIq1feA3w3ju7PTr+kP9FCeZjZJOLaNCNG\njEivHEXOPtxYm8uGDWE0/4IF9eErV8Luu4cs+vXLn2byuCWeSzG45+I4TjbFvGs+J2m/5iQuaSuC\nsNSa2b3R/G6s0iJ+Lo32xcDAxOkDoq2QfUAOe6E8ykMjXlCxb3zr1sHzz8Mee8CppwZvBcKDv2/f\nhnGTXkMm/Zdegg8+aJnnUkxZ25Ln4m/bjlMeinkcHADMkvR67MU1V9Kcxk6KVWo3Aa+Y2TWJoGlA\npsfXeOqnkJkGnBZ7jY0EVseqrenA4ZJ6x4b8w4HpMWyNpJExr9Oy0sqVR3mYODHMQpwkcXzuuXDM\n8EU8OeqnAOisb21u8E96LpnP446D666Dz3wmf5a52kgWLw7exN575z6nEO65OMXiDfpOLooZ53JE\nM9M+EPgXYK6kF6Lt34ArgDslnQksBL4Wwx4CjgLqgHXAGQBmtkLSZcAzMd7PzWxF3P8OMBnoBjwc\nNwrkUR4ysw9ffHGovxo0KAjOqcE8fz7MZwDvMzoYli3b3OAvjcv7dp35E+f6M3foUO9BAHTZaiPr\ntt8l5D9xEHSf2KxZkavJc/GHoOOUj7ziIqkr8G1gV2AucJOZbSg2YTP7K/nHwxyWI74BZ+dJ62bg\n5hz22cCeOezLc+VRVsaN2/JhfmrDQ4u3p+EyxPXnZLfJFHo4Zh7sZmDz5sEnu4ReatCwt1qRAuOe\ni9MYXsXoFKLQu+YUYARBWI4Eri5LiaqUXH9Ey9beN9/MWS2WLS75PJfNPPmX+tUnM2wWr5aX+733\novcVt0z/hdbuuTiOUz4KVYsNjb3EkHQT8HR5itR+aOC5AAwaVLArcrGeC2vW5I5UZC+2QixdCv37\nh55s2WQ3MzmO034pJC6bZz42sw3yCusWkUswNiUdx8wyxD/e8pxiqsWSYbbNNpBLX5owliffIMrl\ny4OwnHUWjBxZb+/RAw4+uOjkK4ZX5aSPPxqcXBQSl70lZR5RArrFYxGaSLYpeemqHOvSFdaD+vWD\na8MyxPpJ455LoWoxM+ALB6MHsxLJiFcLyTTeH3oonHhii5MrK/4QdJzykVdczMybZ1MkZ5vLPvvC\nLOCGG8KENWR5IM1s0GfoUJixAXYc3LC3WhN6i+XzXDLi4o33jnuBTiGK6YrspEBOcckzt1hLG/TN\ngI6dGg7tTwkXF8dxisHFpcS8/z7893/nfhjnEpzmNuhnexotrQLK57l4t2PHcYrBxaXETJkC//qv\nucPyzS2WL7yYarFS09Y9F6/KSR9vy3Jy4SMTSkyhmYszXsBmamthwRvYbbeFNWDuvrtBcLEN+mk8\nQL3NxXGcluDiUmK2EJAEDTyTuAaMNnwSxr8sXIh9/wf14RT2Tjpl+aCleptsy+Lib9iOUz68WqzE\nFCMuwOY1YJIj6y26PY016F9yCXTtChddlF61TyaPDz6AtWvr7Zn9tiguTrp4FaNTCBeXElPoD9jA\nc0mMnt9iWhgS8XJw6aVw7731x2n86bfaKnx+7nO5wzt3bnkejuNULy4uJaZoz2XQIFi4EGGbxWXz\n9DBFdEVOu7fYMceEaf7Xr98yrGfPsIiZ44BXNzq5cXEpMUW3uUycGGYuTq6O3K07JDoElPNP3LNn\n/l5ubRmvynGc8uDiUmIKiUuDsDh6Xqd3wjYIBg/GfvDv8K9Nm1ssrd5ijuM4LcF7i5WYoj0XCHOL\nDdkVO+FrsGABdtzxDcKLEZkMXlWxJX5P0sVfYpxCuLiUmKLbXIqgKSP0HcdxKomLS4kpynM5fXwY\nxFJTg9asatbcYrlG9jtOOXCP0MmFi0uJKSguq1eHnaXvBkVYuBC9/TYWuyVni0Qxf+K0eos5juO0\nhJKJi6SbJS2V9FLCdqmkxZJeiNtRibCLJNVJelXSEQn7mGirk3Rhwr6zpKei/Q5JnaO9Szyui+E1\npbrGbNavhwcfhP/6r7AtXNiIuCx9D6DhksS2CebNCyP242pcuvACqK1tUldkJzd+fxynPJTSc5kM\njMlhv9bMhsXtIQBJQ4GTgD3iOf8pqaOkjsDvgCOBocDJMS7AlTGtXYGVwJnRfiawMtqvjfHKwt13\nw9FHw3HHhe2MMxoRlxxrBQvD1n0IEyZgixcH24r3wtQwCxcUVQ5/gDrlwH9nTiFKJi5m9iSwosjo\nY4GpZrbezN4A6oD941ZnZvPN7GNgKjBWYc3l0UBmZscpwLGJtKbE/buBw1SmNZo/+CB8Tp8OBx4I\nTzwBV1+dP751CsPgk55L2BesW9cw8rp1aM6LedNKexBlNeL3xHHKRyXaXM6RNCdWm/WOtv7AW4k4\ni6Itn307YJWZbciyN0grhq+O8bdA0gRJsyXNXrZsWYsvLPNg32MP6NWr3n7yybnjb+rTL0ehOmyW\nms0j9KNF69ZuGd9xKoyLtpOLcovL9cAuwDBgCVDgvb70mNkkMxthZiP69cvxoG9yeuFTajiD8fe/\nnyf+1j1D/O23DycNHowG9se69QjhWXOM9esZ5mLp23fLtHwQpeM4rYmyiouZvWtmG81sE3ADodoL\nYDEwMBF1QLTlsy8HeknqlGVvkFYM3zbGLxtSw1mDs6fDz7BZBG69NTTOLFiAeveGobtD9+716WHQ\nvTv//h9deflluOee4srgOI5TKco6/YukHc1sSTz8KpDpSTYNuE3SNcBOwBDgaUDAEEk7E0TjJOAU\nMzNJTwAnENphxgP3J9IaD/wthj9uVp53+aTnkhSXzAzDheI3sPcfCN+bhF1wPSwGbbcd/GYSW407\nhd3z5O29xYpj9Wo4//xKl6I6+PjjSpfAac2UTFwk3Q6MAvpKWgRcAoySNAwwYAHwLQAzmyfpTuBl\nYANwtpltjOmcA0wHOgI3m9m8mMUFwFRJlwPPAzdF+03AnyTVEToUnFSqa8ymueKSRIr2cePgwHGw\nM/CrX8G4ppfDacjw4XDHHXDjjZUuSfXQp09oY3ScbEomLmaWqxn7phy2TPyJwMQc9oeAh3LY51Nf\nrZa0fwSc2KTCpkS+NpfGqsWyPZf//d/C4VtQW4vOnwFMxo79Kuz1S6TPNqXo7YJvfztsjuOUHp8V\nOUWSHkMxbS65xsAsWwYffbRlerm44QYY+Nrjcar+g4PxnSXw3uPQZWegS9FldxzHSROf/iVFclWL\ndejQ0IvJFz/D8cdvucpjPs/lG9+AI+74eoPlkQ1hGzbChx/mPslxHKcMuLikSFIsMu0snTtDlzwO\nRC5x6dCh3qMpqlossTxyEm3aWFyhHcdxSoBXi6VIUgy+9z3YcUfYffcwLuW+++Dpp+EXv9gyfpKk\nuBRFYnlkSIyNyecuOY7jlAF/ApUAKfSguewyOOWUYBs7Fs48s2G8VDyXiROhe/cGU8hYp60ajJNx\nHMcpN+65pEhT5/VqzHMpKr24PDLnPwJLwXbYEfY6FD3njfmO41QO91xSpDExyLZnRCRpl5pYLQZh\neeRb/xTKcPc98JndmpiA4zhOuri4pEhTBy+m4rmkUA7HcZy0cXFJkaZ6Lo21uTQFn3LfcZzWhItL\nS6ithZqaoAg1NdizzwH5H+zbbFO/P2hQ6TwXx3GcSuPi0lxqa8PI+IULgwosXBjaO8gvBn36wLvv\nwooV0KNHfs8FGk6dX4y4ZOL87W8wZ04zrsdxHCdFvLdYc7n44i1Xi/wkTBNbSAy2357NcfJ5LtD0\ndpPM4mQXXBA+e/fOH9dxHKfUuOfSXHKMjN+8cmQTuyLn8lw2bWqa5zJ8OMybB2edFY43+gB9x3Eq\niItLcxk0aAtTU8SlY8ewtgg0HEyfFJemIMHQofXF8h5jjuNUEq8Way4TJ8bZiOurxmyrLvBJceIy\ncSLMnBka+ffdt96eEZe994ZPPgn7TWnQ90XDHMdpDbi4NJfMyPiLLw5VZIMGYQccB3cWd/oxx4Qt\nm698BV58ETZsCMf/9E/whS8UX6zmttk4juOkiYtLSxg3rl5kAPsFcGfLug4PHQq33978891zcRyn\nNeBtLinSGsaluLg4jtMacHFJkdYgLl4t5jhOa6Bk4iLpZklLJb2UsPWRNEPSa/Gzd7RL0nWS6iTN\nkTQ8cc74GP81SeMT9n0lzY3nXCeFR3q+PMpJTnHJGs1PbW1J83ZxcRynkpTSc5kMjMmyXQg8ZmZD\ngMfiMcCRwJC4TQCuhyAUwCXAAcD+wCUJsbge+GbivDGN5FFy8nouOUbzM2FCSQTGPRfHcVoDJRMX\nM3sSWJFlHgtMiftTgGMT9lssMAvoJWlH4AhghpmtMLOVwAxgTAzbxsxmmZkBt2SllSuPkpNXXHKN\n5l+3LthTJpN3cya/dBzHSYtyt7nsYGZL4v47wA5xvz/wViLeomgrZF+Uw14ojy2QNEHSbEmzly1b\n1ozLaUhebyHPOvd57S3AJ7l0HKc1ULEG/ehxlLTyprE8zGySmY0wsxH9+vVLIb/wucUDPsdo/oL2\nFuDVYo7jtAbKLS7vxiot4ufSaF8MDEzEGxBthewDctgL5VESXnsNnnwybAsXBtsW4hLXuW9A9+7B\nnjJeLeY4Tmug3OIyDcj0+BoP3J+wnxZ7jY0EVseqrenA4ZJ6x4b8w4HpMWyNpJGxl9hpWWnlyqMk\n/PrXcMghYZs8GbbeOoe4jBsHkybB4MEhcPDgcJwYgJkWXi3mOE5roGQj9CXdDowC+kpaROj1dQVw\np6QzgYXA12L0h4CjgDpgHXAGgJmtkHQZ8EyM93Mzy3QS+A6hR1o34OG4USCPknDuuXD88fXHAwfm\niZg1mr9UeLWY4zitgZKJi5mdnCfosBxxDTg7Tzo3AzfnsM8G9sxhX54rj1Kx225hay245+I4TmvA\nR+hXGS4ujuO0BlxcqowO/o06jtMK8EdRleGei+M4rQEXlyrDPRfHcVoDvp5LlTF6dOiUtt9+lS6J\n4zjtGReXKmPgQLj11kqXwnGc9o5XojiO4zip4+LiOI7jpI6Li+M4jpM6Li6O4zhO6ri4OI7jOKnj\n4uI4juOkjouL4ziOkzouLo7jOE7qyHzhDwAkLSOs/9Ja6Qu8V+lCVJD2fv3g9wD8HkDruweDzWyL\ndeJdXNoIkmab2YhKl6NStPfrB78H4PcA2s498Goxx3EcJ3VcXBzHcZzUcXFpO0yqdAEqTHu/fvB7\nAH4PoI3cA29zcRzHcVLHPRfHcRwndVxcHMdxnNRxcSkjkm6WtFTSSwlbH0kzJL0WP3tHuyRdJ6lO\n0hxJwxPnjI/xX5M0PmHfV9LceM51klTeK2wcSQMlPSHpZUnzJJ0X7e3iPkjqKulpSS/G6/9ZtO8s\n6alY5jskdY72LvG4LobXJNK6KNpflXREwj4m2uokXVjuaywWSR0lPS/pgXjcru6BpAXxd/qCpNnR\nVj3/AzPzrUwbcDAwHHgpYbsKuDDuXwhcGfePAh4GBIwEnor2PsD8+Nk77veOYU/HuIrnHlnpa85x\nD3YEhsf9nsA/gKHt5T7EMm0d97cCnoplvRM4Kdp/D5wV978D/D7unwTcEfeHAi8CXYCdgdeBjnF7\nHfg00DnGGVrp685zL84HbgMeiMft6h4AC4C+Wbaq+R+451JGzOxJYEWWeSwwJe5PAY5N2G+xwCyg\nl6QdgSOAGWa2wsxWAjOAMTFsGzObZeGXdUsirVaDmS0xs+fi/vvAK0B/2sl9iNexNh5uFTcDRgN3\nR3v29Wfuy93AYfENdCww1czWm9kbQB2wf9zqzGy+mX0MTI1xWxWSBgBfBm6Mx6Kd3YM8VM3/wMWl\n8uxgZkvi/jvADnG/P/BWIt6iaCtkX5TD3mqJ1Rv7EN7e2819iNVBLwBLCQ+D14FVZrYhRkmWefN1\nxvDVwHY0/b60Nn4N/AjYFI+3o/3dAwMelfSspAnRVjX/g07lzMwpjJmZpHbRN1zS1sA9wHfNbE2y\nOrja74OZbQSGSeoF/Bfw2QoXqaxIOhpYambPShpV6fJUkIPMbLGk7YEZkv6eDGzr/wP3XCrPu9GF\nJX4ujfbFwMBEvAHRVsg+IIe91SFpK4Kw1JrZvdHc7u6Dma0CngA+T6jmyLzsJcu8+Tpj+LbAcpp+\nX1oTBwJfkbSAUGU1GvgN7eseYGaL4+dSwkvG/lTR/8DFpfJMAzI9PMYD9yfsp8VeIiOB1dFdng4c\nLql37ElyODA9hq2RNDLWR5+WSKvVEMt2E/CKmV2TCGoX90FSv+ixIKkb8CVCu9MTwAkxWvb1Z+7L\nCcDjsQ59GnBS7Em1MzCE0ID7DDAk9rzqTGgAn1b6KyseM7vIzAaYWQ2hfI+b2Tja0T2Q1ENSz8w+\n4ff7EtX0Pyhn74H2vgG3A0uATwh1oGcS6o4fA14D/gfoE+MK+B2hPn4uMCKRztcJjZd1wBkJ+wjC\nD/R14LfEGRha0wYcRKhrngO8ELej2st9APYCno/X/xLw02j/NOHBWAfcBXSJ9q7xuC6GfzqR1sXx\nGl8l0RMo3s9/xLCLK33NjdyPUdT3Fms39yBe64txm5cpYzX9D3z6F8dxHCd1vFrMcRzHSR0XF8dx\nHCd1XFwcx3Gc1HFxcRzHcVLHxcVxHMdJHRcXp10iabs4G+0Lkt6RtDhx3LnMZVmUGfuSQlp/lTSs\nFPElDZc0pvmlc9oTPv2L0y4xs+XAMABJlwJrzexXFS1U62c4sCfwSKUL4rR+3HNxnCwk/XecTHCe\npG9EWydJqyRdE+3TJR0g6c+S5ks6KsbbRdJfFNYpeVbSAdH+RUmPSbpXYZ2RW7Ky/W48Z46kz8Rz\n+kqaFm3/J2nPHGXtLukuSa9Iuocw4DATdqrCeh4vSfpFE66/m6Qp8dznJB0cZxP4KTAuencnSNpa\n0mSF9Wmel3RMU++1U724uDjOlow3s32B/YDz47QaEOa0etjM9gA+Bi4FDgNOBH4e4ywBvmRm+wDj\ngOsS6Q4HziGsQ7J7nMYjw7vxnBsJ65wAXEZYt2OvmNfkHGU9B1hpZrsDlxNmmc5MaX85cGi0Hagw\nYWQxnAusN7PPAf8C/AnYGK+x1syGmdndBLF5xMz2J8wPdrWkrvkSddoXLi6OsyXfk/Qi8DfChH+7\nRPuHZjYj7s8FZlqYAn4uUBPtXYCbFFYbnUoQkgyzzOxtC7Miv5A4ByAzgeezCftBhAc7ZvYosFOc\nhyrJwcCtMc7zhKlEAA4gzMH1npl9QliU6+Air/+gRJrzgLeBXXPEOxy4WGH5gCcIXtOgIvNwqhxv\nc3GcBJK+SHgIjzSzDyX9lfqqpo8TUTcB6xP7mf/S9wnra5xKWAhsbeKc9Yn9jTT8/63PY2/NCDjW\nzF6vdEGc1od7Lo7TkG2BFVFY9iBUjTX1/CUWJu0bT3gAN5e/EKrWMqK32Mw+yIrzJHBKjLM3sEe0\nPwUcGnvFdSLMDPznZuS7O2Fp6jrgfcLS1BmmA/+aOZC0T9FX5lQ9Li6O05AHge6SXia0WTzVxPN/\nC3wjVqvtTENvpan8FPi8pDmE9o4z8uS3naRXgJ8QZlzGzBbF45mEKrhZZvZgnnymx+7QiyTdDvwH\n0E3SXKAWOM3CcsGPA3vHxvsTgJ8BPWLD/zxCu5DjAPisyI7jOE76uOfiOI7jpI6Li+M4jpM6Li6O\n4zhO6ri4OI7jOKnj4uI4juOkjouL4ziOkzouLo7jOE7q/D/PIanCLzcwiAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "MyrmVTcFtw9L" + }, + "source": [ + "### Modelo - Random Forest" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "-qBwfwdatw9N" + }, + "source": [ + "Treinando o modelo de Random Forest com o Conjunto de Treinamento" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "d1891c7a-7e6c-4100-9d7d-0e3710b5f410", + "id": "2G9vzxcatw9N", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "from sklearn.ensemble import RandomForestRegressor\n", + "\n", + "regressor = DecisionTreeRegressor(random_state = 0)\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n", + " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", + " min_impurity_split=None, min_samples_leaf=1,\n", + " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", + " presort=False, random_state=0, splitter='best')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 32 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "fl4bh74Ttw9T" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "ce1fa1f1-cae6-4b89-d8c3-acbac1577ecc", + "id": "v4a4FEGktw9T", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "y_pred = regressor.predict(X_test)\n", + "\n", + "y_pred" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([195000., 115000., 94000., 216500., 139400., 113000., 214900.,\n", + " 402000., 195000., 150750., 148000., 215200.])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 33 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "avqChi46tw9W" + }, + "source": [ + "Avaliando o modelo com a métrica r2" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "8b77d5e2-6ccd-4026-e7af-f022d699efd3", + "id": "XCRy0Ekktw9X", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "regressor.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-1.1563461633885121" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 34 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "iykUlZD0tw9d" + }, + "source": [ + "Exibindo os resultados do conjunto de treinamento" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "e69ea18d-464a-4bae-85e6-01217c536f86", + "id": "QPK8C0Fgtw9e", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "plot_results_reg(X_train, y_train, regressor, 'Random Forest Regression (Conj. de Treinamento)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "frp-AsLstw9l" + }, + "source": [ + "Exibindo os resultados do conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "fd1587db-da4b-40d1-c3ea-3f1faad27bee", + "id": "hgES4om6tw9m", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "plot_results_reg(X_test, y_test, regressor, 'Random Forest Regression (Conj. de Testes)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Ood5PUZCtxsa" + }, + "source": [ + "### Modelo - SVR" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Nd_nx5-ju7Wh", + "colab_type": "text" + }, + "source": [ + "Normalização das features:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "isa4YR-Mu7gd", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X_train = feature_scaling(X_train)\n", + "X_test = feature_scaling(X_test)" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "TYZy4UgYtxsc" + }, + "source": [ + "Treinando o modelo SVR com o Conjunto de Treinamento" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "435c97fb-d4c5-446e-8738-6e10dd173e4f", + "id": "OSS7HBwstxsd", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "from sklearn.svm import SVR\n", + "\n", + "regressor = SVR(kernel = 'rbf')\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py:724: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " y = column_or_1d(y, warn=True)\n" + ], + "name": "stderr" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1,\n", + " gamma='auto_deprecated', kernel='rbf', max_iter=-1, shrinking=True,\n", + " tol=0.001, verbose=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 38 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pjZ3LL7jvCv2", + "colab_type": "text" + }, + "source": [ + "Prevendo os resultados com o conjunto de testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "1e4971fd-6234-47a4-f9df-50b66f96884b", + "id": "HvFjHJ76txsl", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "y_pred = regressor.predict(X_test)\n", + "\n", + "y_pred" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([194251.44370433, 194247.70187487, 194245.70018159, 194247.1367784 ,\n", + " 194248.45357491, 194249.01439172, 194250.67281124, 194249.47673342,\n", + " 194251.37775764, 194246.60246747, 194249.61450541, 194248.02383322])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 39 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "UnULaDnVtxsr" + }, + "source": [ + "Avaliando o modelo com a métrica r2" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "881ac17f-0128-4014-a6a9-4b04e0ce0c63", + "id": "ULsy2S4Htxsx", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "regressor.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-0.041556703288624375" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 40 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "T4L09wqRtxs2" + }, + "source": [ + "Exibindo os resultados do conjunto de treinamento" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "2ee9f048-a7a4-43e0-a204-46b9f25aeb40", + "id": "4dRGKOeXtxs4", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "plot_results_reg(X_train, y_train, regressor, 'SVR (Conj. de Treinamento)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEWCAYAAACqitpwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5hcdZ3n8feHXEgiRCDJsEhImoGM\nGh0J0AJenhkFxKAoOMvO4jSQYRizCuzi4o7CZhy8gKvzrCC6gkYRgvSADOqSARQzgKPuGKCjCARE\nW+SSGCAkXALBhCTf/eP3K3O6qKqu7q5bd39ez1NP1fme2686nfPtc343RQRmZmaNtEu7C2BmZmOP\nk4uZmTWck4uZmTWck4uZmTWck4uZmTWck4uZmTWck4uNKZKukXRCC84zR9LzkiYMc/+HJR3d6HIN\noxwfl/SVdpejmSQdIunH7S7HeOPkYk0j6a2S/l3Ss5I2Svp/kt4o6QhJL0jarcI+P5d0lqQuSZEv\n4M/ni/G5g5zvDcBBwA2F2D6SLpe0TtImSb+U9ElJrxjJd4uIRyNit4jYPpLjDIWknsLP40VJOwrL\nzw/nmBHx6Yj4YKPL2kySjpb0cL3bR8TPgBclHdu8Ulk5JxdrCknTgRuBLwF7AfsCnwS2RMRKYA1w\nYtk+rwfmA9cUwntExG55249LekeN0/4XoDdyz2BJewE/BaYCb4qI3YF3AHsAB4z4S7ZYRPTmhLYb\ncCzwu9Jyjg0gaWLrS9mxekm/H9YiTi7WLH8CEBHXRMT2iHgxIn4QEffk9cuAU8v2ORW4OSI2lB8s\nIvqA1cCCGuc8Fvi3wvI5wCbg5Ih4OB/nsYg4u1QOSW+WdFe+u7pL0ptLO0v6oaRP5zuuTZJ+IGlm\nXle6s6rrAi7pFEmPSNogaUnZul0knSvpN3n9dTkxDpmkNZL+TtK9wAs5NlvSdyWtl/RbSWcWtr9A\n0pX584H5O52aj7O+eLco6U2SVkp6Jt8JflHSpLxuYt73Q/l7bJJ0vqR5eZ/n8iPLSYXjvVfSL/Lx\nfpL/uCh+j3Mk3Zv/ba6RtKukVwL/ApQeSz4v6Y8kTcnlWSdpraSLJE0u/Gh+CLyjeH5rsojwy6+G\nv4DpwAZSEjkW2LNs/X7ANmC/vLwL6W7mhLzcBQQwMS8fAWwG3lflfK/I288qxFYCn6xRxr2Ap4FT\n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\nM7OG+/8rBrr9cW3qtAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "d91HUwEXtxs-" + }, + "source": [ + "Exibindo os resultados do conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "62ad4c35-8e5a-4f4b-ea1c-5fa2d896115e", + "id": "OoqXeIfBtxtA", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "plot_results_reg(X_test, y_test, regressor, 'Arvore de Decisão (Conj. de Testes)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\nk4uZmZXu/wP4AUFGM0WJIwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "VUZAwJjMvh0r" + }, + "source": [ + "### Modelo - Regressão Linear Múltipla" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZOIXAi6Wvpce", + "colab_type": "text" + }, + "source": [ + "Selecionando as principais features do dataset:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "et8CNkI1vpk2", + "colab_type": "code", + "outputId": "ce479ea9-3f72-4269-d0f0-ac7139dbe9ce", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].sample(n=60, random_state=0, weights = 'SalePrice')\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
66146589071171994RL402000
96411316051052002RL214900
89111184044051978RL172500
92611999065652003RL285000
137410625093652005FV250000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "661 46589 0 711 7 1994 RL 402000\n", + "964 11316 0 510 5 2002 RL 214900\n", + "891 11184 0 440 5 1978 RL 172500\n", + "926 11999 0 656 5 2003 RL 285000\n", + "1374 10625 0 936 5 2005 FV 250000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZjC2LJYh1SQ6", + "colab_type": "text" + }, + "source": [ + "Exibir os valores distintos da coluna MSZoning. **Segue legenda:**\n", + "FV-Residencial de Vila Flutuante, RH- Residencial de Densidade Alta, RL-Residencial de Densidade Baixa, RM-Residencial de Densidade Média." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SeWh_rpnYkLd", + "colab_type": "code", + "outputId": "3ab29a73-ecb7-4b37-efc1-b1f41db60644", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "df['MSZoning'].unique()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['RL', 'FV', 'RM', 'RH'], dtype=object)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eumBvAB8wbq-", + "colab_type": "text" + }, + "source": [ + "Codificando as variáveis Categóricos e evitando a armadilha da variável Dummy. **Obs:** Algumas técnicas de aprendizado de máquina exigem que você elimine uma dimensão da apresentação para evitar a dependência entre as variáveis. Isso pode ser feito através do parâmetro \"drop_first = True\"." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "rjT1ONG7wb9x", + "colab_type": "code", + "outputId": "26d1bcf1-6143-4e6c-a7b2-e7820292f635", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + } + }, + "source": [ + "df = pd.get_dummies(df , columns = ['MSZoning'], drop_first=True)\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePriceMSZoning_RHMSZoning_RLMSZoning_RM
66146589071171994402000010
96411316051052002214900010
89111184044051978172500010
92611999065652003285000010
137410625093652005250000000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea ... MSZoning_RH MSZoning_RL MSZoning_RM\n", + "661 46589 0 711 ... 0 1 0\n", + "964 11316 0 510 ... 0 1 0\n", + "891 11184 0 440 ... 0 1 0\n", + "926 11999 0 656 ... 0 1 0\n", + "1374 10625 0 936 ... 0 0 0\n", + "\n", + "[5 rows x 9 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 44 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "i9fs5x8MvpxV", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis indepedentes e dependentes e dividindo o dataset em conjunto de treinamento e testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "b9uRFW2vvp6b", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X = df[df.columns[~df.columns.isin(['SalePrice'])]].values\n", + "y = df['SalePrice'].values.reshape(-1,1)\n", + "\n", + "# Dividindo os dados\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "SMaN0iHNvh0t" + }, + "source": [ + "Importando e treinando o modelo de Regressao Linear Multipla com o Conjunto de Treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "6cbc7612-fa1d-4078-a14f-c2e943dcf113", + "id": "VuzaRxyuvh0u", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + } + }, + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "\n", + "regressor = LinearRegression()\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 46 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "zT6PUXkWvh0y" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "86f38ad3-ebc8-4b0a-9f8a-fccd2ce0fbd3", + "id": "JR-E180Fvh0y", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 221 + } + }, + "source": [ + "y_pred = regressor.predict(X_test)\n", + "\n", + "y_pred" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[376052.98497919],\n", + " [185871.16123409],\n", + " [230508.60986049],\n", + " [269278.25223188],\n", + " [153039.2404638 ],\n", + " [ 88676.03962536],\n", + " [210563.82989375],\n", + " [131945.37958412],\n", + " [204656.51558602],\n", + " [226768.14382706],\n", + " [229229.28285228],\n", + " [216857.75545174]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 47 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "PO6sGI3Gvh01" + }, + "source": [ + "Avaliando o modelo com a métrica r2" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "a5233703-1980-459b-f44f-526e66329bd4", + "id": "fQPgnd8dvh02", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "regressor.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.7460190735464488" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 48 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KDcimzDmxxIo", + "colab_type": "text" + }, + "source": [ + "### Estudo de Caso: Pipeline de Regressão" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g_qAJYI2x4DL", + "colab_type": "text" + }, + "source": [ + "**Descrição do Problema**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JoB6nJpox8AP", + "colab_type": "text" + }, + "source": [ + "Importando as packages" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "C9rs16Mzx8ec", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.tree import DecisionTreeRegressor\n", + "from sklearn.ensemble import RandomForestRegressor\n", + "from sklearn.svm import SVR\n", + "from sklearn.metrics import mean_squared_error, mean_squared_log_error" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VNaNeCy_yEet", + "colab_type": "text" + }, + "source": [ + "Importando os dados" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OCPXPwhNyEp2", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = pd.read_csv('https://raw.githubusercontent.com/r4phael/ml-course/master/data/pricing_houses.csv')\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "COuAxCI4yFCb", + "colab_type": "text" + }, + "source": [ + "Visualizando e descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Y-yKSlG_yFRs", + "colab_type": "code", + "outputId": "f6bb9000-88f4-45b1-9386-2ffeb4f5f31d", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } + }, + "source": [ + "df.info()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1460 entries, 0 to 1459\n", + "Data columns (total 81 columns):\n", + "Id 1460 non-null int64\n", + "MSSubClass 1460 non-null int64\n", + "MSZoning 1460 non-null object\n", + "LotFrontage 1201 non-null float64\n", + "LotArea 1460 non-null int64\n", + "Street 1460 non-null object\n", + "Alley 91 non-null object\n", + "LotShape 1460 non-null object\n", + "LandContour 1460 non-null object\n", + "Utilities 1460 non-null object\n", + "LotConfig 1460 non-null object\n", + "LandSlope 1460 non-null object\n", + "Neighborhood 1460 non-null object\n", + "Condition1 1460 non-null object\n", + "Condition2 1460 non-null object\n", + "BldgType 1460 non-null object\n", + "HouseStyle 1460 non-null object\n", + "OverallQual 1460 non-null int64\n", + "OverallCond 1460 non-null int64\n", + "YearBuilt 1460 non-null int64\n", + "YearRemodAdd 1460 non-null int64\n", + "RoofStyle 1460 non-null object\n", + "RoofMatl 1460 non-null object\n", + "Exterior1st 1460 non-null object\n", + "Exterior2nd 1460 non-null object\n", + "MasVnrType 1452 non-null object\n", + "MasVnrArea 1452 non-null float64\n", + "ExterQual 1460 non-null object\n", + "ExterCond 1460 non-null object\n", + "Foundation 1460 non-null object\n", + "BsmtQual 1423 non-null object\n", + "BsmtCond 1423 non-null object\n", + "BsmtExposure 1422 non-null object\n", + "BsmtFinType1 1423 non-null object\n", + "BsmtFinSF1 1460 non-null int64\n", + "BsmtFinType2 1422 non-null object\n", + "BsmtFinSF2 1460 non-null int64\n", + "BsmtUnfSF 1460 non-null int64\n", + "TotalBsmtSF 1460 non-null int64\n", + "Heating 1460 non-null object\n", + "HeatingQC 1460 non-null object\n", + "CentralAir 1460 non-null object\n", + "Electrical 1459 non-null object\n", + "1stFlrSF 1460 non-null int64\n", + "2ndFlrSF 1460 non-null int64\n", + "LowQualFinSF 1460 non-null int64\n", + "GrLivArea 1460 non-null int64\n", + "BsmtFullBath 1460 non-null int64\n", + "BsmtHalfBath 1460 non-null int64\n", + "FullBath 1460 non-null int64\n", + "HalfBath 1460 non-null int64\n", + "BedroomAbvGr 1460 non-null int64\n", + "KitchenAbvGr 1460 non-null int64\n", + "KitchenQual 1460 non-null object\n", + "TotRmsAbvGrd 1460 non-null int64\n", + "Functional 1460 non-null object\n", + "Fireplaces 1460 non-null int64\n", + "FireplaceQu 770 non-null object\n", + "GarageType 1379 non-null object\n", + "GarageYrBlt 1379 non-null float64\n", + "GarageFinish 1379 non-null object\n", + "GarageCars 1460 non-null int64\n", + "GarageArea 1460 non-null int64\n", + "GarageQual 1379 non-null object\n", + "GarageCond 1379 non-null object\n", + "PavedDrive 1460 non-null object\n", + "WoodDeckSF 1460 non-null int64\n", + "OpenPorchSF 1460 non-null int64\n", + "EnclosedPorch 1460 non-null int64\n", + "3SsnPorch 1460 non-null int64\n", + "ScreenPorch 1460 non-null int64\n", + "PoolArea 1460 non-null int64\n", + "PoolQC 7 non-null object\n", + "Fence 281 non-null object\n", + "MiscFeature 54 non-null object\n", + "MiscVal 1460 non-null int64\n", + "MoSold 1460 non-null int64\n", + "YrSold 1460 non-null int64\n", + "SaleType 1460 non-null object\n", + "SaleCondition 1460 non-null object\n", + "SalePrice 1460 non-null int64\n", + "dtypes: float64(3), int64(35), object(43)\n", + "memory usage: 924.0+ KB\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HxPPf4CPySYK", + "colab_type": "code", + "outputId": "63daec2c-cc09-44dc-bd13-6eff7d7727ce", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 253 + } + }, + "source": [ + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdMSSubClassMSZoningLotFrontageLotAreaStreetAlleyLotShapeLandContourUtilitiesLotConfigLandSlopeNeighborhoodCondition1Condition2BldgTypeHouseStyleOverallQualOverallCondYearBuiltYearRemodAddRoofStyleRoofMatlExterior1stExterior2ndMasVnrTypeMasVnrAreaExterQualExterCondFoundationBsmtQualBsmtCondBsmtExposureBsmtFinType1BsmtFinSF1BsmtFinType2BsmtFinSF2BsmtUnfSFTotalBsmtSFHeating...CentralAirElectrical1stFlrSF2ndFlrSFLowQualFinSFGrLivAreaBsmtFullBathBsmtHalfBathFullBathHalfBathBedroomAbvGrKitchenAbvGrKitchenQualTotRmsAbvGrdFunctionalFireplacesFireplaceQuGarageTypeGarageYrBltGarageFinishGarageCarsGarageAreaGarageQualGarageCondPavedDriveWoodDeckSFOpenPorchSFEnclosedPorch3SsnPorchScreenPorchPoolAreaPoolQCFenceMiscFeatureMiscValMoSoldYrSoldSaleTypeSaleConditionSalePrice
0160RL65.08450PaveNaNRegLvlAllPubInsideGtlCollgCrNormNorm1Fam2Story7520032003GableCompShgVinylSdVinylSdBrkFace196.0GdTAPConcGdTANoGLQ706Unf0150856GasA...YSBrkr85685401710102131Gd8Typ0NaNAttchd2003.0RFn2548TATAY0610000NaNNaNNaN022008WDNormal208500
1220RL80.09600PaveNaNRegLvlAllPubFR2GtlVeenkerFeedrNorm1Fam1Story6819761976GableCompShgMetalSdMetalSdNone0.0TATACBlockGdTAGdALQ978Unf02841262GasA...YSBrkr1262001262012031TA6Typ1TAAttchd1976.0RFn2460TATAY29800000NaNNaNNaN052007WDNormal181500
2360RL68.011250PaveNaNIR1LvlAllPubInsideGtlCollgCrNormNorm1Fam2Story7520012002GableCompShgVinylSdVinylSdBrkFace162.0GdTAPConcGdTAMnGLQ486Unf0434920GasA...YSBrkr92086601786102131Gd6Typ1TAAttchd2001.0RFn2608TATAY0420000NaNNaNNaN092008WDNormal223500
3470RL60.09550PaveNaNIR1LvlAllPubCornerGtlCrawforNormNorm1Fam2Story7519151970GableCompShgWd SdngWd ShngNone0.0TATABrkTilTAGdNoALQ216Unf0540756GasA...YSBrkr96175601717101031Gd7Typ1GdDetchd1998.0Unf3642TATAY035272000NaNNaNNaN022006WDAbnorml140000
4560RL84.014260PaveNaNIR1LvlAllPubFR2GtlNoRidgeNormNorm1Fam2Story8520002000GableCompShgVinylSdVinylSdBrkFace350.0GdTAPConcGdTAAvGLQ655Unf04901145GasA...YSBrkr1145105302198102141Gd9Typ1TAAttchd2000.0RFn3836TATAY192840000NaNNaNNaN0122008WDNormal250000
\n", + "

5 rows × 81 columns

\n", + "
" + ], + "text/plain": [ + " Id MSSubClass MSZoning ... SaleType SaleCondition SalePrice\n", + "0 1 60 RL ... WD Normal 208500\n", + "1 2 20 RL ... WD Normal 181500\n", + "2 3 60 RL ... WD Normal 223500\n", + "3 4 70 RL ... WD Abnorml 140000\n", + "4 5 60 RL ... WD Normal 250000\n", + "\n", + "[5 rows x 81 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 56 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TbazA1fRyFcB", + "colab_type": "text" + }, + "source": [ + "Selecionando apenas as features numericas" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BZt4EL9_yFmM", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = df.select_dtypes(include=['int64', 'float64'])" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-tG-F_aQyFtX", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0vDXGj1IyF3Z", + "colab_type": "code", + "outputId": "54e8cf94-1629-434b-b240-445a0a8cccb8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 317 + } + }, + "source": [ + "df.describe()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdMSSubClassLotFrontageLotAreaOverallQualOverallCondYearBuiltYearRemodAddMasVnrAreaBsmtFinSF1BsmtFinSF2BsmtUnfSFTotalBsmtSF1stFlrSF2ndFlrSFLowQualFinSFGrLivAreaBsmtFullBathBsmtHalfBathFullBathHalfBathBedroomAbvGrKitchenAbvGrTotRmsAbvGrdFireplacesGarageYrBltGarageCarsGarageAreaWoodDeckSFOpenPorchSFEnclosedPorch3SsnPorchScreenPorchPoolAreaMiscValMoSoldYrSoldSalePrice
count1460.0000001460.0000001201.0000001460.0000001460.0000001460.0000001460.0000001460.0000001452.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001379.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.000000
mean730.50000056.89726070.04995810516.8280826.0993155.5753421971.2678081984.865753103.685262443.63972646.549315567.2404111057.4294521162.626712346.9924665.8445211515.4636990.4253420.0575341.5650680.3828772.8664381.0465756.5178080.6130141978.5061641.767123472.98013794.24452146.66027421.9541103.40958915.0609592.75890443.4890416.3219182007.815753180921.195890
std421.61000942.30057124.2847529981.2649321.3829971.11279930.20290420.645407181.066207456.098091161.319273441.866955438.705324386.587738436.52843648.623081525.4803830.5189110.2387530.5509160.5028850.8157780.2203381.6253930.64466624.6897250.747315213.804841125.33879466.25602861.11914929.31733155.75741540.177307496.1230242.7036261.32809579442.502883
min1.00000020.00000021.0000001300.0000001.0000001.0000001872.0000001950.0000000.0000000.0000000.0000000.0000000.000000334.0000000.0000000.000000334.0000000.0000000.0000000.0000000.0000000.0000000.0000002.0000000.0000001900.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.0000002006.00000034900.000000
25%365.75000020.00000059.0000007553.5000005.0000005.0000001954.0000001967.0000000.0000000.0000000.000000223.000000795.750000882.0000000.0000000.0000001129.5000000.0000000.0000001.0000000.0000002.0000001.0000005.0000000.0000001961.0000001.000000334.5000000.0000000.0000000.0000000.0000000.0000000.0000000.0000005.0000002007.000000129975.000000
50%730.50000050.00000069.0000009478.5000006.0000005.0000001973.0000001994.0000000.000000383.5000000.000000477.500000991.5000001087.0000000.0000000.0000001464.0000000.0000000.0000002.0000000.0000003.0000001.0000006.0000001.0000001980.0000002.000000480.0000000.00000025.0000000.0000000.0000000.0000000.0000000.0000006.0000002008.000000163000.000000
75%1095.25000070.00000080.00000011601.5000007.0000006.0000002000.0000002004.000000166.000000712.2500000.000000808.0000001298.2500001391.250000728.0000000.0000001776.7500001.0000000.0000002.0000001.0000003.0000001.0000007.0000001.0000002002.0000002.000000576.000000168.00000068.0000000.0000000.0000000.0000000.0000000.0000008.0000002009.000000214000.000000
max1460.000000190.000000313.000000215245.00000010.0000009.0000002010.0000002010.0000001600.0000005644.0000001474.0000002336.0000006110.0000004692.0000002065.000000572.0000005642.0000003.0000002.0000003.0000002.0000008.0000003.00000014.0000003.0000002010.0000004.0000001418.000000857.000000547.000000552.000000508.000000480.000000738.00000015500.00000012.0000002010.000000755000.000000
\n", + "
" + ], + "text/plain": [ + " Id MSSubClass ... YrSold SalePrice\n", + "count 1460.000000 1460.000000 ... 1460.000000 1460.000000\n", + "mean 730.500000 56.897260 ... 2007.815753 180921.195890\n", + "std 421.610009 42.300571 ... 1.328095 79442.502883\n", + "min 1.000000 20.000000 ... 2006.000000 34900.000000\n", + "25% 365.750000 20.000000 ... 2007.000000 129975.000000\n", + "50% 730.500000 50.000000 ... 2008.000000 163000.000000\n", + "75% 1095.250000 70.000000 ... 2009.000000 214000.000000\n", + "max 1460.000000 190.000000 ... 2010.000000 755000.000000\n", + "\n", + "[8 rows x 38 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 58 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mEfXmKH1yGCr", + "colab_type": "text" + }, + "source": [ + "Preenchendo os valores númericos nulos (NA) com a mediana." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "U0KsZkMZyGnW", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = df.fillna(df.median())\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TNhEpIuJyG0C", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis indepedentes e dependentes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dB00tGUXyG84", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X = df.iloc[:, :37].values\n", + "y = df.iloc[:, -1].values.reshape(-1,1)\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GHvWZhwryHjv", + "colab_type": "text" + }, + "source": [ + "Dividindo o dataset em conjunto de treinamento e testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Li7E8Hz4yHuq", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hIH9DERgyHH3", + "colab_type": "text" + }, + "source": [ + "Criando o dicionário contendo todos os regressores" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "eNFfJ7XKyGU1", + "colab_type": "code", + "colab": {} + }, + "source": [ + "regressors = {'Linear Regression': LinearRegression(),\n", + " 'Decision Tree Reg:': DecisionTreeRegressor(random_state = 0),\n", + " 'Random Forest Reg': RandomForestRegressor(n_estimators = 10, random_state = 0),\n", + " 'SVR:': SVR(kernel = 'rbf')}" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Y2v9PGGqyhYX", + "colab_type": "text" + }, + "source": [ + "Criando dataframe que irá guardar os resultados finais dos regressores" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Dh5XDN5eyhgs", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df_results = pd.DataFrame(columns=['reg', 'rmse', 'rmse_log', 'r_2_score'])" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JliIuH-NylaA", + "colab_type": "text" + }, + "source": [ + "Percorrendo o dicionário e treinando e avaliando os modelos:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "1dRjpg9Mylkg", + "colab_type": "code", + "outputId": "4ce690cd-27c7-472b-9dc7-039d9149fec8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 139 + } + }, + "source": [ + "for name, reg in regressors.items():\n", + " \n", + " # Treinando os regressores com Conjunto de Treinamento\n", + " reg.fit(X_train, y_train)\n", + " \n", + " # Prevendo os resultados com o conjunto de testes\n", + " y_pred = reg.predict(X_test)\n", + " \n", + " df_results.loc[len(df_results), :] = [name, reg.score(X_test, y_test), \n", + " mean_squared_error(y_test, y_pred), mean_squared_log_error(y_test, y_pred)]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:4: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", + " after removing the cwd from sys.path.\n", + "/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py:724: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", + " y = column_or_1d(y, warn=True)\n", + "/usr/local/lib/python3.6/dist-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", + " \"avoid this warning.\", FutureWarning)\n" + ], + "name": "stderr" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jH-rHO9Cy0je", + "colab_type": "text" + }, + "source": [ + "Exibindo os resultados:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3kYKXzOHy0uG", + "colab_type": "code", + "outputId": "413713e5-0553-4a11-9ba5-63156b66b564", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 173 + } + }, + "source": [ + "df_results" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regrmsermse_logr_2_score
0Linear Regression0.8226781.36012e+090.0358379
1Decision Tree Reg:0.7906321.60592e+090.0453292
2Random Forest Reg0.8795139.24177e+080.0289542
3SVR:-0.02497327.86188e+090.186869
\n", + "
" + ], + "text/plain": [ + " reg rmse rmse_log r_2_score\n", + "0 Linear Regression 0.822678 1.36012e+09 0.0358379\n", + "1 Decision Tree Reg: 0.790632 1.60592e+09 0.0453292\n", + "2 Random Forest Reg 0.879513 9.24177e+08 0.0289542\n", + "3 SVR: -0.0249732 7.86188e+09 0.186869" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 65 + } + ] + } + ] +} \ No newline at end of file From ed748e1fbfa3c51210450bb51877bb235f60d70b Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Tue, 12 Nov 2019 16:32:40 -0300 Subject: [PATCH 02/14] Delete 3_regression.ipynb --- notebooks/3_regression.ipynb | 3981 ---------------------------------- 1 file changed, 3981 deletions(-) delete mode 100644 notebooks/3_regression.ipynb diff --git a/notebooks/3_regression.ipynb b/notebooks/3_regression.ipynb deleted file mode 100644 index 8921f6a..0000000 --- a/notebooks/3_regression.ipynb +++ /dev/null @@ -1,3981 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "3_regression.ipynb", - "provenance": [], - "collapsed_sections": [ - "TsV0SiuwpZ7i", - "7cfguFoQp2_-", - "hDpjk2hPqBar", - "fB8cnF96qcQM", - "MyrmVTcFtw9L", - "Ood5PUZCtxsa", - "VUZAwJjMvh0r", - "KDcimzDmxxIo" - ], - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EB3dPPlgQeVt", - "colab_type": "text" - }, - "source": [ - "#**Semana 3 - Modelos de Regressão**" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TsV0SiuwpZ7i", - "colab_type": "text" - }, - "source": [ - "### Importando libs e funções:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "k6l8c0olEHpN", - "colab_type": "text" - }, - "source": [ - "Importando libs" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i7FF5Glb_NrK", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "import random\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from sklearn.preprocessing import StandardScaler \n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import f1_score\n", - "from matplotlib.colors import ListedColormap" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "L7RydZ0qEIl4", - "colab_type": "text" - }, - "source": [ - "Importando funções" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KxneBJZUEIz4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função de escalonamento\n", - "def feature_scaling(data):\n", - " sc = StandardScaler()\n", - " return sc.fit_transform(data)\n", - "\n", - "# Função que gera o gráfico dos resultados de regressão\n", - "def plot_results_linear(X, y, regressor, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, regressor.predict(X), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - "\n", - "# Função que gera o gráfico dos resultados de regerssão polinomial\n", - "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show() \n", - " \n", - "# Função que gera o gráfico dos resultados de arvores\n", - "def plot_results_reg(X, y, regressor, title): \n", - " X_grid = np.arange(min(X), max(X), 0.01)\n", - " X_grid = X_grid.reshape((len(X_grid), 1))\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - " " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QaGBc_KwpeVt", - "colab_type": "text" - }, - "source": [ - "### Etapa de exploração e tratamento dos **dados**" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZfESkLx0EjB8", - "colab_type": "text" - }, - "source": [ - "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", - "\n", - "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Yq6eIh3NJnuN", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = pd.read_csv('https://raw.githubusercontent.com/r4phael/ml-course/master/data/pricing_houses.csv')\n", - "\n", - "#Selecionando uma amostragem dos dados para uma melhor visualização\n", - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].sample(n=60, random_state=0, weights = 'SalePrice')" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "g-LzSHX1Jpg1", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "hpLEK45DJomb", - "colab_type": "code", - "outputId": "cc0eccc5-6bb5-4ead-a7b9-7596700a9280", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 297 - } - }, - "source": [ - "df.describe()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea ... YearBuilt SalePrice\n", - "count 60.000000 60.0 ... 60.000000 60.000000\n", - "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", - "std 8099.879028 0.0 ... 30.522618 74910.507145\n", - "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", - "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", - "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", - "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", - "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", - "\n", - "[8 rows x 6 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 4 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tgh2pe9lJtr6", - "colab_type": "text" - }, - "source": [ - "Visualizando o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "EvY28fJdJxey", - "colab_type": "code", - "outputId": "7ef0eb04-db39-4e20-bcd3-a2c266e5e15a", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "789 12205 0 444 8 1966 RL 187500\n", - "1039 1477 0 286 4 1970 RM 80000\n", - "868 14762 0 672 6 1948 RL 169000\n", - "782 16285 0 605 5 2001 RL 187100\n", - "611 10395 0 564 6 1978 RL 148000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 5 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jiMAqVghJylz", - "colab_type": "text" - }, - "source": [ - "Preenchendo os valores númericos nulos (NA) com a mediana." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KFDodNK4JzlR", - "colab_type": "code", - "outputId": "ee2fbfca-21aa-4e0d-8410-502c6c747df6", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = df.fillna(df.median())\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "789 12205 0 444 8 1966 RL 187500\n", - "1039 1477 0 286 4 1970 RM 80000\n", - "868 14762 0 672 6 1948 RL 169000\n", - "782 16285 0 605 5 2001 RL 187100\n", - "611 10395 0 564 6 1978 RL 148000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 6 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jXWksGyoJ0u3", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis independentes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lJ0y3JijJ1ii", - "colab_type": "code", - "outputId": "78f424a9-14e0-42ae-c0b1-5a9d20472a25", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", - "X[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[12205],\n", - " [ 1477],\n", - " [14762],\n", - " [16285],\n", - " [10395]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 7 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uISYBhKqUqpQ", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis dependentes." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "okQl0J1SUq9h", - "colab_type": "code", - "outputId": "fe5cbf44-fe44-4b28-9baf-a50ecf037b33", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", - "y[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[187500],\n", - " [ 80000],\n", - " [169000],\n", - " [187100],\n", - " [148000]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 8 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yzJ08rJ4J3CS", - "colab_type": "text" - }, - "source": [ - " Criando os subconjuntos de treinamento e testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "tVz1mTUOJ4Tb", - "colab_type": "code", - "outputId": "4f5b4396-f9c4-4d11-c71d-7227ea74ee4c", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 68 - } - }, - "source": [ - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)\n", - "\n", - "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", - "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", - "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Tamanho do Dataset. 60\n", - "Tamanho do Conjunto de Treinamento. 48\n", - "Tamanho do Conjunto de Testes. 12\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OcQtLvcXJ7NT", - "colab_type": "text" - }, - "source": [ - "Normalizando as features " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "aXvlvQ9DJ7i3", - "colab_type": "code", - "colab": {} - }, - "source": [ - "#X_train = feature_scaling(X_train)\n", - "#X_test = feature_scaling(X_test)\n", - "\n", - "#X_train[:5]" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7cfguFoQp2_-", - "colab_type": "text" - }, - "source": [ - "### Modelo - Regressão Linear" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jGXuG35WJ_Tj", - "colab_type": "text" - }, - "source": [ - "Importando e treinando o modelo de Regressao Linear com o Conjunto de Treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "xo9Q5lxsKAVB", - "colab_type": "code", - "outputId": "d60bc5b4-d05e-4e4e-da6b-e51867d2076c", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 54 - } - }, - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "\n", - "regressor = LinearRegression()\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 11 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "FUYWJqnaKBvh", - "colab_type": "text" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "SFvsig4SKCiC", - "colab_type": "code", - "outputId": "a8b625a1-50b2-4b45-f4cf-c02a757b93ea", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 221 - } - }, - "source": [ - "y_pred = regressor.predict(X_test)\n", - "\n", - "y_pred" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[207117.08544721],\n", - " [183686.58545274],\n", - " [169299.32577351],\n", - " [179936.94922447],\n", - " [188476.03676953],\n", - " [191960.99279345],\n", - " [202201.59593788],\n", - " [465634.02218018],\n", - " [206688.55559255],\n", - " [176212.52063471],\n", - " [195653.91183507],\n", - " [185759.91372014]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 12 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kRjvN45RKFPq", - "colab_type": "text" - }, - "source": [ - "Avaliando o modelo com a métrica r²" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "I3_jQ8N5KH-6", - "colab_type": "code", - "outputId": "b6945795-2198-4faf-9dab-41d33ef3fa65", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "regressor.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "-0.9506477517227611" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 13 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "rTahZRcqKS2b", - "colab_type": "text" - }, - "source": [ - "Exibindo os resultados do conjunto de treinamento" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "2EAqhxovKT9a", - "colab_type": "code", - "outputId": "64515476-b062-45cf-94f4-4c2933868406", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_linear(X_train, y_train, regressor, 'Regressão Linear (Conj. de Treinamento)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "hwRwnq82KU2w", - "colab_type": "text" - }, - "source": [ - "Exibindo os resultados do conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "uXKEZrWQKV9R", - "colab_type": "code", - "outputId": "6ac6a682-61d0-4171-852e-dfc66cf6fa0e", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_linear(X_test, y_test, regressor, 'Regressão Linear (Conj. de Testes)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nmVnF/X8AVoupKS8+XwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "hDpjk2hPqBar" - }, - "source": [ - "### Modelo - Regressão Polynomial" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "5ZQOFczoqBat" - }, - "source": [ - "Importando e treinando o modelo de Regressao Linear com o Conjunto de Treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "07250634-6377-453d-e7e3-ef60148b086e", - "id": "TARpu6xZqBat", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 54 - } - }, - "source": [ - "regressor = LinearRegression()\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 16 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SAyttRhcqsz_", - "colab_type": "text" - }, - "source": [ - "Transformando as features na quarta ordem polinomial:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "OZyCBmL2qs-X", - "colab_type": "code", - "outputId": "509a28e7-a7bb-4290-cd72-3851df815bdc", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - } - }, - "source": [ - "from sklearn.preprocessing import PolynomialFeatures\n", - "\n", - "poly_reg = PolynomialFeatures(degree = 4)\n", - "X_poly = poly_reg.fit_transform(X)\n", - "poly_reg.fit(X_poly, y)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "PolynomialFeatures(degree=4, include_bias=True, interaction_only=False,\n", - " order='C')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 17 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "92IzIbgrrDdG", - "colab_type": "text" - }, - "source": [ - "Treinando o modelo de regressão polynomial com o conjunto de treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "AiAG4XSPrDy9", - "colab_type": "code", - "outputId": "0c220401-e443-4669-e878-a9025f1455cb", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 54 - } - }, - "source": [ - "lin_reg_poly = LinearRegression()\n", - "lin_reg_poly.fit(X_poly, y)\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 18 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "5Xy5SEAuqBaz" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "c16cdc19-73c9-4409-c400-ce89852480ca", - "id": "ySpZ9RyWqBa0", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "y_pred = lin_reg_poly.predict(X_poly)\n", - "\n", - "y_pred[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[210977.15912637],\n", - " [101264.45016613],\n", - " [231210.99529702],\n", - " [242927.64582841],\n", - " [195940.94028164]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 19 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "wUrWgrvU0uTq", - "colab_type": "text" - }, - "source": [ - "Avaliando o modelo de regressão linear com a métrica r2:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lETAHBqw0uC5", - "colab_type": "code", - "outputId": "f7368a63-cfcc-49ae-bdde-f1664f40d0f6", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "regressor.score(X, y)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.14645648066355865" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 23 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "f8hyc24cqBa7" - }, - "source": [ - "Avaliando o modelo de regressão polynomial com a métrica r2:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "b77eb92e-2960-4140-de80-b473142322e3", - "id": "HDXwQ0ddqBa9", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "lin_reg_poly.score(X_poly, y)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.2824360477057858" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 24 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "gaRZCCjKqBbC" - }, - "source": [ - "Visualizando os resultados da regressão linear:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "cd930c49-89d7-4214-ef23-73663647d20e", - "id": "GdApU1gYqBbD", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_linear(X, y, regressor, 'Regressão Linear')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n62UAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "LlX6EwYwqBbG" - }, - "source": [ - "Visualizando os resultados da regressão linear polinomial:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "6e05d3f9-7557-4788-f409-316133d351ae", - "id": "5GKwud8fqBbG", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_poly(X, y, lin_reg_poly, poly_reg, 'Regressão Polynomial')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "fB8cnF96qcQM" - }, - "source": [ - "### Modelo - Árvore de Decisão " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "sgo7wyZUqcQQ" - }, - "source": [ - "Treinando o modelo de Arvore de Decisão com o Conjunto de Treinamento" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "2f83d111-579f-4617-bbc7-4d1441914581", - "id": "-T3_UnXvqcQR", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "from sklearn.tree import DecisionTreeRegressor\n", - "\n", - "regressor = DecisionTreeRegressor(random_state = 0)\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n", - " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", - " min_impurity_split=None, min_samples_leaf=1,\n", - " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", - " presort=False, random_state=0, splitter='best')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 27 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "isKict8VqcQW" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "dc307c8a-b1b9-4c8e-cb8e-f49e749e050d", - "id": "myt4FBHpqcQX", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - } - }, - "source": [ - "y_pred = regressor.predict(X_test)\n", - "\n", - "y_pred" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([195000., 115000., 94000., 216500., 139400., 113000., 214900.,\n", - " 402000., 195000., 150750., 148000., 215200.])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 28 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "y0HxOT1nqcQa" - }, - "source": [ - "Avaliando o modelo com a métrica r2" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "b802e761-2c5c-465b-ca55-f42f5e2fd0a5", - "id": "EXTaMCEuqcQb", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "regressor.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "-1.1563461633885121" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 29 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "-8m22r5SqcQd" - }, - "source": [ - "Exibindo os resultados do conjunto de treinamento" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "41bc6a12-484d-483c-8221-ed9b43f54116", - "id": "HTJnv_R9qcQe", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_reg(X_train, y_train, regressor, 'Arvore de Decisão (Conj. de Treinamento)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "XviIofWNqcQj" - }, - "source": [ - "Exibindo os resultados do conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "7c7c2439-349e-401f-d0bc-e9b58d2f1461", - "id": "57h8qL4EqcQk", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_reg(X_test, y_test, regressor, 'Arvore de Decisão (Conj. de Testes)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "MyrmVTcFtw9L" - }, - "source": [ - "### Modelo - Random Forest" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "-qBwfwdatw9N" - }, - "source": [ - "Treinando o modelo de Random Forest com o Conjunto de Treinamento" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "d1891c7a-7e6c-4100-9d7d-0e3710b5f410", - "id": "2G9vzxcatw9N", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "from sklearn.ensemble import RandomForestRegressor\n", - "\n", - "regressor = DecisionTreeRegressor(random_state = 0)\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,\n", - " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", - " min_impurity_split=None, min_samples_leaf=1,\n", - " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", - " presort=False, random_state=0, splitter='best')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 32 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "fl4bh74Ttw9T" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "ce1fa1f1-cae6-4b89-d8c3-acbac1577ecc", - "id": "v4a4FEGktw9T", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "y_pred = regressor.predict(X_test)\n", - "\n", - "y_pred" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([195000., 115000., 94000., 216500., 139400., 113000., 214900.,\n", - " 402000., 195000., 150750., 148000., 215200.])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 33 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "avqChi46tw9W" - }, - "source": [ - "Avaliando o modelo com a métrica r2" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "8b77d5e2-6ccd-4026-e7af-f022d699efd3", - "id": "XCRy0Ekktw9X", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "regressor.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "-1.1563461633885121" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 34 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "iykUlZD0tw9d" - }, - "source": [ - "Exibindo os resultados do conjunto de treinamento" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "e69ea18d-464a-4bae-85e6-01217c536f86", - "id": "QPK8C0Fgtw9e", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "plot_results_reg(X_train, y_train, regressor, 'Random Forest Regression (Conj. de Treinamento)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "frp-AsLstw9l" - }, - "source": [ - "Exibindo os resultados do conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "fd1587db-da4b-40d1-c3ea-3f1faad27bee", - "id": "hgES4om6tw9m", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "plot_results_reg(X_test, y_test, regressor, 'Random Forest Regression (Conj. de Testes)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "Ood5PUZCtxsa" - }, - "source": [ - "### Modelo - SVR" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Nd_nx5-ju7Wh", - "colab_type": "text" - }, - "source": [ - "Normalização das features:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "isa4YR-Mu7gd", - "colab_type": "code", - "colab": {} - }, - "source": [ - "X_train = feature_scaling(X_train)\n", - "X_test = feature_scaling(X_test)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "TYZy4UgYtxsc" - }, - "source": [ - "Treinando o modelo SVR com o Conjunto de Treinamento" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "435c97fb-d4c5-446e-8738-6e10dd173e4f", - "id": "OSS7HBwstxsd", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "from sklearn.svm import SVR\n", - "\n", - "regressor = SVR(kernel = 'rbf')\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py:724: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - " y = column_or_1d(y, warn=True)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1,\n", - " gamma='auto_deprecated', kernel='rbf', max_iter=-1, shrinking=True,\n", - " tol=0.001, verbose=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 38 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pjZ3LL7jvCv2", - "colab_type": "text" - }, - "source": [ - "Prevendo os resultados com o conjunto de testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "1e4971fd-6234-47a4-f9df-50b66f96884b", - "id": "HvFjHJ76txsl", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "y_pred = regressor.predict(X_test)\n", - "\n", - "y_pred" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([194251.44370433, 194247.70187487, 194245.70018159, 194247.1367784 ,\n", - " 194248.45357491, 194249.01439172, 194250.67281124, 194249.47673342,\n", - " 194251.37775764, 194246.60246747, 194249.61450541, 194248.02383322])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 39 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "UnULaDnVtxsr" - }, - "source": [ - "Avaliando o modelo com a métrica r2" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "881ac17f-0128-4014-a6a9-4b04e0ce0c63", - "id": "ULsy2S4Htxsx", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "regressor.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "-0.041556703288624375" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 40 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "T4L09wqRtxs2" - }, - "source": [ - "Exibindo os resultados do conjunto de treinamento" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "2ee9f048-a7a4-43e0-a204-46b9f25aeb40", - "id": "4dRGKOeXtxs4", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "plot_results_reg(X_train, y_train, regressor, 'SVR (Conj. de Treinamento)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEWCAYAAACqitpwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5hcdZ3n8feHXEgiRCDJsEhImoGM\nGh0J0AJenhkFxKAoOMvO4jSQYRizCuzi4o7CZhy8gKvzrCC6gkYRgvSADOqSARQzgKPuGKCjCARE\nW+SSGCAkXALBhCTf/eP3K3O6qKqu7q5bd39ez1NP1fme2686nfPtc343RQRmZmaNtEu7C2BmZmOP\nk4uZmTWck4uZmTWck4uZmTWck4uZmTWck4uZmTWck4uNKZKukXRCC84zR9LzkiYMc/+HJR3d6HIN\noxwfl/SVdpejmSQdIunH7S7HeOPkYk0j6a2S/l3Ss5I2Svp/kt4o6QhJL0jarcI+P5d0lqQuSZEv\n4M/ni/G5g5zvDcBBwA2F2D6SLpe0TtImSb+U9ElJrxjJd4uIRyNit4jYPpLjDIWknsLP40VJOwrL\nzw/nmBHx6Yj4YKPL2kySjpb0cL3bR8TPgBclHdu8Ulk5JxdrCknTgRuBLwF7AfsCnwS2RMRKYA1w\nYtk+rwfmA9cUwntExG55249LekeN0/4XoDdyz2BJewE/BaYCb4qI3YF3AHsAB4z4S7ZYRPTmhLYb\ncCzwu9Jyjg0gaWLrS9mxekm/H9YiTi7WLH8CEBHXRMT2iHgxIn4QEffk9cuAU8v2ORW4OSI2lB8s\nIvqA1cCCGuc8Fvi3wvI5wCbg5Ih4OB/nsYg4u1QOSW+WdFe+u7pL0ptLO0v6oaRP5zuuTZJ+IGlm\nXle6s6rrAi7pFEmPSNogaUnZul0knSvpN3n9dTkxDpmkNZL+TtK9wAs5NlvSdyWtl/RbSWcWtr9A\n0pX584H5O52aj7O+eLco6U2SVkp6Jt8JflHSpLxuYt73Q/l7bJJ0vqR5eZ/n8iPLSYXjvVfSL/Lx\nfpL/uCh+j3Mk3Zv/ba6RtKukVwL/ApQeSz4v6Y8kTcnlWSdpraSLJE0u/Gh+CLyjeH5rsojwy6+G\nv4DpwAZSEjkW2LNs/X7ANmC/vLwL6W7mhLzcBQQwMS8fAWwG3lflfK/I288qxFYCn6xRxr2Ap4FT\n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\nM7OG+/8rBrr9cW3qtAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "d91HUwEXtxs-" - }, - "source": [ - "Exibindo os resultados do conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "62ad4c35-8e5a-4f4b-ea1c-5fa2d896115e", - "id": "OoqXeIfBtxtA", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "plot_results_reg(X_test, y_test, regressor, 'Arvore de Decisão (Conj. de Testes)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nk4uZmZXu/wP4AUFGM0WJIwAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "VUZAwJjMvh0r" - }, - "source": [ - "### Modelo - Regressão Linear Múltipla" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZOIXAi6Wvpce", - "colab_type": "text" - }, - "source": [ - "Selecionando as principais features do dataset:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "et8CNkI1vpk2", - "colab_type": "code", - "outputId": "ce479ea9-3f72-4269-d0f0-ac7139dbe9ce", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].sample(n=60, random_state=0, weights = 'SalePrice')\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
66146589071171994RL402000
96411316051052002RL214900
89111184044051978RL172500
92611999065652003RL285000
137410625093652005FV250000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "661 46589 0 711 7 1994 RL 402000\n", - "964 11316 0 510 5 2002 RL 214900\n", - "891 11184 0 440 5 1978 RL 172500\n", - "926 11999 0 656 5 2003 RL 285000\n", - "1374 10625 0 936 5 2005 FV 250000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 6 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZjC2LJYh1SQ6", - "colab_type": "text" - }, - "source": [ - "Exibir os valores distintos da coluna MSZoning. **Segue legenda:**\n", - "FV-Residencial de Vila Flutuante, RH- Residencial de Densidade Alta, RL-Residencial de Densidade Baixa, RM-Residencial de Densidade Média." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "SeWh_rpnYkLd", - "colab_type": "code", - "outputId": "3ab29a73-ecb7-4b37-efc1-b1f41db60644", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "df['MSZoning'].unique()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array(['RL', 'FV', 'RM', 'RH'], dtype=object)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 8 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "eumBvAB8wbq-", - "colab_type": "text" - }, - "source": [ - "Codificando as variáveis Categóricos e evitando a armadilha da variável Dummy. **Obs:** Algumas técnicas de aprendizado de máquina exigem que você elimine uma dimensão da apresentação para evitar a dependência entre as variáveis. Isso pode ser feito através do parâmetro \"drop_first = True\"." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "rjT1ONG7wb9x", - "colab_type": "code", - "outputId": "26d1bcf1-6143-4e6c-a7b2-e7820292f635", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 224 - } - }, - "source": [ - "df = pd.get_dummies(df , columns = ['MSZoning'], drop_first=True)\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePriceMSZoning_RHMSZoning_RLMSZoning_RM
66146589071171994402000010
96411316051052002214900010
89111184044051978172500010
92611999065652003285000010
137410625093652005250000000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea ... MSZoning_RH MSZoning_RL MSZoning_RM\n", - "661 46589 0 711 ... 0 1 0\n", - "964 11316 0 510 ... 0 1 0\n", - "891 11184 0 440 ... 0 1 0\n", - "926 11999 0 656 ... 0 1 0\n", - "1374 10625 0 936 ... 0 0 0\n", - "\n", - "[5 rows x 9 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 44 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "i9fs5x8MvpxV", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis indepedentes e dependentes e dividindo o dataset em conjunto de treinamento e testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "b9uRFW2vvp6b", - "colab_type": "code", - "colab": {} - }, - "source": [ - "X = df[df.columns[~df.columns.isin(['SalePrice'])]].values\n", - "y = df['SalePrice'].values.reshape(-1,1)\n", - "\n", - "# Dividindo os dados\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "SMaN0iHNvh0t" - }, - "source": [ - "Importando e treinando o modelo de Regressao Linear Multipla com o Conjunto de Treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "6cbc7612-fa1d-4078-a14f-c2e943dcf113", - "id": "VuzaRxyuvh0u", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 54 - } - }, - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "\n", - "regressor = LinearRegression()\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 46 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "zT6PUXkWvh0y" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "86f38ad3-ebc8-4b0a-9f8a-fccd2ce0fbd3", - "id": "JR-E180Fvh0y", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 221 - } - }, - "source": [ - "y_pred = regressor.predict(X_test)\n", - "\n", - "y_pred" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[376052.98497919],\n", - " [185871.16123409],\n", - " [230508.60986049],\n", - " [269278.25223188],\n", - " [153039.2404638 ],\n", - " [ 88676.03962536],\n", - " [210563.82989375],\n", - " [131945.37958412],\n", - " [204656.51558602],\n", - " [226768.14382706],\n", - " [229229.28285228],\n", - " [216857.75545174]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 47 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "PO6sGI3Gvh01" - }, - "source": [ - "Avaliando o modelo com a métrica r2" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "a5233703-1980-459b-f44f-526e66329bd4", - "id": "fQPgnd8dvh02", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "regressor.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.7460190735464488" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 48 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KDcimzDmxxIo", - "colab_type": "text" - }, - "source": [ - "### Estudo de Caso: Pipeline de Regressão" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "g_qAJYI2x4DL", - "colab_type": "text" - }, - "source": [ - "**Descrição do Problema**" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "JoB6nJpox8AP", - "colab_type": "text" - }, - "source": [ - "Importando as packages" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "C9rs16Mzx8ec", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.tree import DecisionTreeRegressor\n", - "from sklearn.ensemble import RandomForestRegressor\n", - "from sklearn.svm import SVR\n", - "from sklearn.metrics import mean_squared_error, mean_squared_log_error" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VNaNeCy_yEet", - "colab_type": "text" - }, - "source": [ - "Importando os dados" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "OCPXPwhNyEp2", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = pd.read_csv('https://raw.githubusercontent.com/r4phael/ml-course/master/data/pricing_houses.csv')\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "COuAxCI4yFCb", - "colab_type": "text" - }, - "source": [ - "Visualizando e descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Y-yKSlG_yFRs", - "colab_type": "code", - "outputId": "f6bb9000-88f4-45b1-9386-2ffeb4f5f31d", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - } - }, - "source": [ - "df.info()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 1460 entries, 0 to 1459\n", - "Data columns (total 81 columns):\n", - "Id 1460 non-null int64\n", - "MSSubClass 1460 non-null int64\n", - "MSZoning 1460 non-null object\n", - "LotFrontage 1201 non-null float64\n", - "LotArea 1460 non-null int64\n", - "Street 1460 non-null object\n", - "Alley 91 non-null object\n", - "LotShape 1460 non-null object\n", - "LandContour 1460 non-null object\n", - "Utilities 1460 non-null object\n", - "LotConfig 1460 non-null object\n", - "LandSlope 1460 non-null object\n", - "Neighborhood 1460 non-null object\n", - "Condition1 1460 non-null object\n", - "Condition2 1460 non-null object\n", - "BldgType 1460 non-null object\n", - "HouseStyle 1460 non-null object\n", - "OverallQual 1460 non-null int64\n", - "OverallCond 1460 non-null int64\n", - "YearBuilt 1460 non-null int64\n", - "YearRemodAdd 1460 non-null int64\n", - "RoofStyle 1460 non-null object\n", - "RoofMatl 1460 non-null object\n", - "Exterior1st 1460 non-null object\n", - "Exterior2nd 1460 non-null object\n", - "MasVnrType 1452 non-null object\n", - "MasVnrArea 1452 non-null float64\n", - "ExterQual 1460 non-null object\n", - "ExterCond 1460 non-null object\n", - "Foundation 1460 non-null object\n", - "BsmtQual 1423 non-null object\n", - "BsmtCond 1423 non-null object\n", - "BsmtExposure 1422 non-null object\n", - "BsmtFinType1 1423 non-null object\n", - "BsmtFinSF1 1460 non-null int64\n", - "BsmtFinType2 1422 non-null object\n", - "BsmtFinSF2 1460 non-null int64\n", - "BsmtUnfSF 1460 non-null int64\n", - "TotalBsmtSF 1460 non-null int64\n", - "Heating 1460 non-null object\n", - "HeatingQC 1460 non-null object\n", - "CentralAir 1460 non-null object\n", - "Electrical 1459 non-null object\n", - "1stFlrSF 1460 non-null int64\n", - "2ndFlrSF 1460 non-null int64\n", - "LowQualFinSF 1460 non-null int64\n", - "GrLivArea 1460 non-null int64\n", - "BsmtFullBath 1460 non-null int64\n", - "BsmtHalfBath 1460 non-null int64\n", - "FullBath 1460 non-null int64\n", - "HalfBath 1460 non-null int64\n", - "BedroomAbvGr 1460 non-null int64\n", - "KitchenAbvGr 1460 non-null int64\n", - "KitchenQual 1460 non-null object\n", - "TotRmsAbvGrd 1460 non-null int64\n", - "Functional 1460 non-null object\n", - "Fireplaces 1460 non-null int64\n", - "FireplaceQu 770 non-null object\n", - "GarageType 1379 non-null object\n", - "GarageYrBlt 1379 non-null float64\n", - "GarageFinish 1379 non-null object\n", - "GarageCars 1460 non-null int64\n", - "GarageArea 1460 non-null int64\n", - "GarageQual 1379 non-null object\n", - "GarageCond 1379 non-null object\n", - "PavedDrive 1460 non-null object\n", - "WoodDeckSF 1460 non-null int64\n", - "OpenPorchSF 1460 non-null int64\n", - "EnclosedPorch 1460 non-null int64\n", - "3SsnPorch 1460 non-null int64\n", - "ScreenPorch 1460 non-null int64\n", - "PoolArea 1460 non-null int64\n", - "PoolQC 7 non-null object\n", - "Fence 281 non-null object\n", - "MiscFeature 54 non-null object\n", - "MiscVal 1460 non-null int64\n", - "MoSold 1460 non-null int64\n", - "YrSold 1460 non-null int64\n", - "SaleType 1460 non-null object\n", - "SaleCondition 1460 non-null object\n", - "SalePrice 1460 non-null int64\n", - "dtypes: float64(3), int64(35), object(43)\n", - "memory usage: 924.0+ KB\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "HxPPf4CPySYK", - "colab_type": "code", - "outputId": "63daec2c-cc09-44dc-bd13-6eff7d7727ce", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 253 - } - }, - "source": [ - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IdMSSubClassMSZoningLotFrontageLotAreaStreetAlleyLotShapeLandContourUtilitiesLotConfigLandSlopeNeighborhoodCondition1Condition2BldgTypeHouseStyleOverallQualOverallCondYearBuiltYearRemodAddRoofStyleRoofMatlExterior1stExterior2ndMasVnrTypeMasVnrAreaExterQualExterCondFoundationBsmtQualBsmtCondBsmtExposureBsmtFinType1BsmtFinSF1BsmtFinType2BsmtFinSF2BsmtUnfSFTotalBsmtSFHeating...CentralAirElectrical1stFlrSF2ndFlrSFLowQualFinSFGrLivAreaBsmtFullBathBsmtHalfBathFullBathHalfBathBedroomAbvGrKitchenAbvGrKitchenQualTotRmsAbvGrdFunctionalFireplacesFireplaceQuGarageTypeGarageYrBltGarageFinishGarageCarsGarageAreaGarageQualGarageCondPavedDriveWoodDeckSFOpenPorchSFEnclosedPorch3SsnPorchScreenPorchPoolAreaPoolQCFenceMiscFeatureMiscValMoSoldYrSoldSaleTypeSaleConditionSalePrice
0160RL65.08450PaveNaNRegLvlAllPubInsideGtlCollgCrNormNorm1Fam2Story7520032003GableCompShgVinylSdVinylSdBrkFace196.0GdTAPConcGdTANoGLQ706Unf0150856GasA...YSBrkr85685401710102131Gd8Typ0NaNAttchd2003.0RFn2548TATAY0610000NaNNaNNaN022008WDNormal208500
1220RL80.09600PaveNaNRegLvlAllPubFR2GtlVeenkerFeedrNorm1Fam1Story6819761976GableCompShgMetalSdMetalSdNone0.0TATACBlockGdTAGdALQ978Unf02841262GasA...YSBrkr1262001262012031TA6Typ1TAAttchd1976.0RFn2460TATAY29800000NaNNaNNaN052007WDNormal181500
2360RL68.011250PaveNaNIR1LvlAllPubInsideGtlCollgCrNormNorm1Fam2Story7520012002GableCompShgVinylSdVinylSdBrkFace162.0GdTAPConcGdTAMnGLQ486Unf0434920GasA...YSBrkr92086601786102131Gd6Typ1TAAttchd2001.0RFn2608TATAY0420000NaNNaNNaN092008WDNormal223500
3470RL60.09550PaveNaNIR1LvlAllPubCornerGtlCrawforNormNorm1Fam2Story7519151970GableCompShgWd SdngWd ShngNone0.0TATABrkTilTAGdNoALQ216Unf0540756GasA...YSBrkr96175601717101031Gd7Typ1GdDetchd1998.0Unf3642TATAY035272000NaNNaNNaN022006WDAbnorml140000
4560RL84.014260PaveNaNIR1LvlAllPubFR2GtlNoRidgeNormNorm1Fam2Story8520002000GableCompShgVinylSdVinylSdBrkFace350.0GdTAPConcGdTAAvGLQ655Unf04901145GasA...YSBrkr1145105302198102141Gd9Typ1TAAttchd2000.0RFn3836TATAY192840000NaNNaNNaN0122008WDNormal250000
\n", - "

5 rows × 81 columns

\n", - "
" - ], - "text/plain": [ - " Id MSSubClass MSZoning ... SaleType SaleCondition SalePrice\n", - "0 1 60 RL ... WD Normal 208500\n", - "1 2 20 RL ... WD Normal 181500\n", - "2 3 60 RL ... WD Normal 223500\n", - "3 4 70 RL ... WD Abnorml 140000\n", - "4 5 60 RL ... WD Normal 250000\n", - "\n", - "[5 rows x 81 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 56 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TbazA1fRyFcB", - "colab_type": "text" - }, - "source": [ - "Selecionando apenas as features numericas" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "BZt4EL9_yFmM", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = df.select_dtypes(include=['int64', 'float64'])" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-tG-F_aQyFtX", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "0vDXGj1IyF3Z", - "colab_type": "code", - "outputId": "54e8cf94-1629-434b-b240-445a0a8cccb8", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 317 - } - }, - "source": [ - "df.describe()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
IdMSSubClassLotFrontageLotAreaOverallQualOverallCondYearBuiltYearRemodAddMasVnrAreaBsmtFinSF1BsmtFinSF2BsmtUnfSFTotalBsmtSF1stFlrSF2ndFlrSFLowQualFinSFGrLivAreaBsmtFullBathBsmtHalfBathFullBathHalfBathBedroomAbvGrKitchenAbvGrTotRmsAbvGrdFireplacesGarageYrBltGarageCarsGarageAreaWoodDeckSFOpenPorchSFEnclosedPorch3SsnPorchScreenPorchPoolAreaMiscValMoSoldYrSoldSalePrice
count1460.0000001460.0000001201.0000001460.0000001460.0000001460.0000001460.0000001460.0000001452.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001379.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.0000001460.000000
mean730.50000056.89726070.04995810516.8280826.0993155.5753421971.2678081984.865753103.685262443.63972646.549315567.2404111057.4294521162.626712346.9924665.8445211515.4636990.4253420.0575341.5650680.3828772.8664381.0465756.5178080.6130141978.5061641.767123472.98013794.24452146.66027421.9541103.40958915.0609592.75890443.4890416.3219182007.815753180921.195890
std421.61000942.30057124.2847529981.2649321.3829971.11279930.20290420.645407181.066207456.098091161.319273441.866955438.705324386.587738436.52843648.623081525.4803830.5189110.2387530.5509160.5028850.8157780.2203381.6253930.64466624.6897250.747315213.804841125.33879466.25602861.11914929.31733155.75741540.177307496.1230242.7036261.32809579442.502883
min1.00000020.00000021.0000001300.0000001.0000001.0000001872.0000001950.0000000.0000000.0000000.0000000.0000000.000000334.0000000.0000000.000000334.0000000.0000000.0000000.0000000.0000000.0000000.0000002.0000000.0000001900.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.0000002006.00000034900.000000
25%365.75000020.00000059.0000007553.5000005.0000005.0000001954.0000001967.0000000.0000000.0000000.000000223.000000795.750000882.0000000.0000000.0000001129.5000000.0000000.0000001.0000000.0000002.0000001.0000005.0000000.0000001961.0000001.000000334.5000000.0000000.0000000.0000000.0000000.0000000.0000000.0000005.0000002007.000000129975.000000
50%730.50000050.00000069.0000009478.5000006.0000005.0000001973.0000001994.0000000.000000383.5000000.000000477.500000991.5000001087.0000000.0000000.0000001464.0000000.0000000.0000002.0000000.0000003.0000001.0000006.0000001.0000001980.0000002.000000480.0000000.00000025.0000000.0000000.0000000.0000000.0000000.0000006.0000002008.000000163000.000000
75%1095.25000070.00000080.00000011601.5000007.0000006.0000002000.0000002004.000000166.000000712.2500000.000000808.0000001298.2500001391.250000728.0000000.0000001776.7500001.0000000.0000002.0000001.0000003.0000001.0000007.0000001.0000002002.0000002.000000576.000000168.00000068.0000000.0000000.0000000.0000000.0000000.0000008.0000002009.000000214000.000000
max1460.000000190.000000313.000000215245.00000010.0000009.0000002010.0000002010.0000001600.0000005644.0000001474.0000002336.0000006110.0000004692.0000002065.000000572.0000005642.0000003.0000002.0000003.0000002.0000008.0000003.00000014.0000003.0000002010.0000004.0000001418.000000857.000000547.000000552.000000508.000000480.000000738.00000015500.00000012.0000002010.000000755000.000000
\n", - "
" - ], - "text/plain": [ - " Id MSSubClass ... YrSold SalePrice\n", - "count 1460.000000 1460.000000 ... 1460.000000 1460.000000\n", - "mean 730.500000 56.897260 ... 2007.815753 180921.195890\n", - "std 421.610009 42.300571 ... 1.328095 79442.502883\n", - "min 1.000000 20.000000 ... 2006.000000 34900.000000\n", - "25% 365.750000 20.000000 ... 2007.000000 129975.000000\n", - "50% 730.500000 50.000000 ... 2008.000000 163000.000000\n", - "75% 1095.250000 70.000000 ... 2009.000000 214000.000000\n", - "max 1460.000000 190.000000 ... 2010.000000 755000.000000\n", - "\n", - "[8 rows x 38 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 58 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "mEfXmKH1yGCr", - "colab_type": "text" - }, - "source": [ - "Preenchendo os valores númericos nulos (NA) com a mediana." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "U0KsZkMZyGnW", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = df.fillna(df.median())\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TNhEpIuJyG0C", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis indepedentes e dependentes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "dB00tGUXyG84", - "colab_type": "code", - "colab": {} - }, - "source": [ - "X = df.iloc[:, :37].values\n", - "y = df.iloc[:, -1].values.reshape(-1,1)\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "GHvWZhwryHjv", - "colab_type": "text" - }, - "source": [ - "Dividindo o dataset em conjunto de treinamento e testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Li7E8Hz4yHuq", - "colab_type": "code", - "colab": {} - }, - "source": [ - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "hIH9DERgyHH3", - "colab_type": "text" - }, - "source": [ - "Criando o dicionário contendo todos os regressores" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "eNFfJ7XKyGU1", - "colab_type": "code", - "colab": {} - }, - "source": [ - "regressors = {'Linear Regression': LinearRegression(),\n", - " 'Decision Tree Reg:': DecisionTreeRegressor(random_state = 0),\n", - " 'Random Forest Reg': RandomForestRegressor(n_estimators = 10, random_state = 0),\n", - " 'SVR:': SVR(kernel = 'rbf')}" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Y2v9PGGqyhYX", - "colab_type": "text" - }, - "source": [ - "Criando dataframe que irá guardar os resultados finais dos regressores" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Dh5XDN5eyhgs", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df_results = pd.DataFrame(columns=['reg', 'rmse', 'rmse_log', 'r_2_score'])" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "JliIuH-NylaA", - "colab_type": "text" - }, - "source": [ - "Percorrendo o dicionário e treinando e avaliando os modelos:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "1dRjpg9Mylkg", - "colab_type": "code", - "outputId": "4ce690cd-27c7-472b-9dc7-039d9149fec8", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 139 - } - }, - "source": [ - "for name, reg in regressors.items():\n", - " \n", - " # Treinando os regressores com Conjunto de Treinamento\n", - " reg.fit(X_train, y_train)\n", - " \n", - " # Prevendo os resultados com o conjunto de testes\n", - " y_pred = reg.predict(X_test)\n", - " \n", - " df_results.loc[len(df_results), :] = [name, reg.score(X_test, y_test), \n", - " mean_squared_error(y_test, y_pred), mean_squared_log_error(y_test, y_pred)]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:4: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " after removing the cwd from sys.path.\n", - "/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py:724: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - " y = column_or_1d(y, warn=True)\n", - "/usr/local/lib/python3.6/dist-packages/sklearn/svm/base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n", - " \"avoid this warning.\", FutureWarning)\n" - ], - "name": "stderr" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jH-rHO9Cy0je", - "colab_type": "text" - }, - "source": [ - "Exibindo os resultados:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "3kYKXzOHy0uG", - "colab_type": "code", - "outputId": "413713e5-0553-4a11-9ba5-63156b66b564", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 173 - } - }, - "source": [ - "df_results" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
regrmsermse_logr_2_score
0Linear Regression0.8226781.36012e+090.0358379
1Decision Tree Reg:0.7906321.60592e+090.0453292
2Random Forest Reg0.8795139.24177e+080.0289542
3SVR:-0.02497327.86188e+090.186869
\n", - "
" - ], - "text/plain": [ - " reg rmse rmse_log r_2_score\n", - "0 Linear Regression 0.822678 1.36012e+09 0.0358379\n", - "1 Decision Tree Reg: 0.790632 1.60592e+09 0.0453292\n", - "2 Random Forest Reg 0.879513 9.24177e+08 0.0289542\n", - "3 SVR: -0.0249732 7.86188e+09 0.186869" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 65 - } - ] - } - ] -} \ No newline at end of file From a24c8e7ba900d5df66c021bd3f3917708565e25e Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 01:47:58 -0300 Subject: [PATCH 03/14] Created using Colaboratory --- .../treinamento_testes_validacao.ipynb | 1071 +++++++++++++++++ 1 file changed, 1071 insertions(+) create mode 100644 notebooks/1_introducao/treinamento_testes_validacao.ipynb diff --git a/notebooks/1_introducao/treinamento_testes_validacao.ipynb b/notebooks/1_introducao/treinamento_testes_validacao.ipynb new file mode 100644 index 0000000..1711f87 --- /dev/null +++ b/notebooks/1_introducao/treinamento_testes_validacao.ipynb @@ -0,0 +1,1071 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "treinamento_testes_validacao.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "w-RUHj0kHSFa", + "colab_type": "text" + }, + "source": [ + "# Semana 1 - Aprendizagem Supervisonada\n", + "---\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YfzjpU8DEBKk", + "colab_type": "text" + }, + "source": [ + "## Divisão dos dados e Avaliação" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fKb9Z7ynHEjA", + "colab_type": "text" + }, + "source": [ + "### Importando as bibliotecas" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ml7cyyo3abml", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import random\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.model_selection import KFold\n", + "\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "74OGEe-tHc9r", + "colab_type": "text" + }, + "source": [ + "### Importando os dados" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "XhtrtAb9EvT7", + "colab_type": "code", + "outputId": "530fc497-50e0-4ef4-c35d-9fba49237d55", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 359 + } + }, + "source": [ + "data_url = 'https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/preprocessing_data.csv'\n", + "\n", + "df = pd.read_csv(data_url)\n", + "\n", + "df.head(10)" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CityAgeSalarySexAcquired
0Paraiba42.06500.0MNo
1Sao Paulo21.04300.0FYes
2Brasilia28.04900.0FNo
3Recife35.05400.0FNo
4Maceio38.0NaNMYes
5Sao Paulo33.05200.0MYes
6Belo HorizonteNaN4700.0FNo
7Sao Paulo45.07100.0MYes
8Paraiba51.07500.0FNo
9Fortaleza39.06000.0MYes
\n", + "
" + ], + "text/plain": [ + " City Age Salary Sex Acquired\n", + "0 Paraiba 42.0 6500.0 M No\n", + "1 Sao Paulo 21.0 4300.0 F Yes\n", + "2 Brasilia 28.0 4900.0 F No\n", + "3 Recife 35.0 5400.0 F No\n", + "4 Maceio 38.0 NaN M Yes\n", + "5 Sao Paulo 33.0 5200.0 M Yes\n", + "6 Belo Horizonte NaN 4700.0 F No\n", + "7 Sao Paulo 45.0 7100.0 M Yes\n", + "8 Paraiba 51.0 7500.0 F No\n", + "9 Fortaleza 39.0 6000.0 M Yes" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 3 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "G2M6D7WTALj1", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "yNgIaT9EALvx", + "colab_type": "code", + "outputId": "6158244f-34de-4fa9-93b4-21621af2ae27", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 187 + } + }, + "source": [ + "df.info()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 10 entries, 0 to 9\n", + "Data columns (total 5 columns):\n", + "City 10 non-null object\n", + "Age 9 non-null float64\n", + "Salary 9 non-null float64\n", + "Sex 10 non-null object\n", + "Acquired 10 non-null object\n", + "dtypes: float64(2), object(3)\n", + "memory usage: 528.0+ bytes\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BLxBSWlxuPMs", + "colab_type": "text" + }, + "source": [ + "Preenchendo os registros nuḿericos que não possuem valores com a média." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "q5eiqJbywBLL", + "colab_type": "code", + "outputId": "7b8afeba-7dbc-48ae-8730-d8d97d722381", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 359 + } + }, + "source": [ + "df = df.fillna(df.mean())\n", + "\n", + "df" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CityAgeSalarySexAcquired
0Paraiba42.0000006500.000000MNo
1Sao Paulo21.0000004300.000000FYes
2Brasilia28.0000004900.000000FNo
3Recife35.0000005400.000000FNo
4Maceio38.0000005733.333333MYes
5Sao Paulo33.0000005200.000000MYes
6Belo Horizonte36.8888894700.000000FNo
7Sao Paulo45.0000007100.000000MYes
8Paraiba51.0000007500.000000FNo
9Fortaleza39.0000006000.000000MYes
\n", + "
" + ], + "text/plain": [ + " City Age Salary Sex Acquired\n", + "0 Paraiba 42.000000 6500.000000 M No\n", + "1 Sao Paulo 21.000000 4300.000000 F Yes\n", + "2 Brasilia 28.000000 4900.000000 F No\n", + "3 Recife 35.000000 5400.000000 F No\n", + "4 Maceio 38.000000 5733.333333 M Yes\n", + "5 Sao Paulo 33.000000 5200.000000 M Yes\n", + "6 Belo Horizonte 36.888889 4700.000000 F No\n", + "7 Sao Paulo 45.000000 7100.000000 M Yes\n", + "8 Paraiba 51.000000 7500.000000 F No\n", + "9 Fortaleza 39.000000 6000.000000 M Yes" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KosHK6EKEwIO", + "colab_type": "text" + }, + "source": [ + "Definindos as variáveis independentes (X) e dependente (y)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dyTqObUCEwQc", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X = df.iloc[:, :-1].values" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "9S0CTHw7kULG", + "colab_type": "code", + "outputId": "beecf767-293e-4922-a16a-013fc90016e8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + } + }, + "source": [ + "y = df.iloc[:, 4].values\n", + "y" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes'],\n", + " dtype=object)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ecRq9DQdDlg6", + "colab_type": "text" + }, + "source": [ + "## Efetividade na Classificação" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zD4tGNnryE1V", + "colab_type": "text" + }, + "source": [ + "Criando as funções que calculam as diferentes métricas de efetividade:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "68pzp-TcE8IC" + }, + "source": [ + "### Cálculo das Medidas de Efetividade" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1-5WDv4uBsI9", + "colab_type": "text" + }, + "source": [ + "Definindo as funções de efetividade e importando bibliotecas:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-dAa8zihyEP6", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função que calcula os reais positivos\n", + "def rp(tp, fn):\n", + " return tp + fn\n", + "\n", + "# Função que calcula os reais negativos \n", + "def rn(fp, tn):\n", + " return fp + tn\n", + "\n", + "# Função que calcula as predições positivas \n", + "def pp(tp, fp):\n", + " return tp + fp\n", + "\n", + "# Função que calcula as predições negativas \n", + "def pn(fn, tn):\n", + " return fn + tn\n", + "\n", + "# Função que calcula Acurácia do modelo\n", + "def accuracy (tp, fp, fn, tn):\n", + " accuracy = ((tp + tn) / (tp + tn + fp + fn))\n", + " return (accuracy)\n", + " \n", + "# Função que calcula a Precisão \n", + "def precision (tp, fp):\n", + " precision = (tp / (tp + fp)) #predições positivas\n", + " return precision\n", + "\n", + "# Função que calcula o Recall ou Taxa de True Positive (TTP)\n", + "def recall(tp, fn):\n", + " recall = (tp / (tp + fn)) # reais positivos\n", + " return recall\n", + "\n", + "## Função que calcula o f-measure (media harmonica entre Precision e Recall)\n", + "def f_measure(tp, fp, fn):\n", + " f_measure = (2 * precision(tp, fp) * recall(tp, fn)) / (recall(tp, fn) + precision(tp, fp))\n", + " return f_measure\n", + " \n", + "# Função que calcula o Informedness \n", + "def informedness(tp, fp, fn, tn):\n", + " inform = ((tp/rp(tp, fn)) - (fp/rn(fp, tn)))\n", + " return inform\n", + "\n", + "# Função que calcula o Markedness\n", + "def markdness(tp, fp, fn, tn): \n", + " mark = ((tp/pp(tp,fp)) - (fn/pn(fn,tn)))\n", + " return mark\n", + "\n", + "# Função que calcula a taxa de False Positive (TFP)\n", + "def tfp(fp, tn):\n", + " tfp = (fp / (tn + fp))\n", + " return tfp" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nnfyAWe60hcM", + "colab_type": "text" + }, + "source": [ + "Definido os valores da Matriz de Confusão" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "WJOtHg660hnL", + "colab_type": "code", + "colab": {} + }, + "source": [ + "tp, fp, fn, tn = [1,1,1,2]" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cBnCTrcs0h75", + "colab_type": "text" + }, + "source": [ + "Calculando a Acurácia:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JrDXlhEp0iD_", + "colab_type": "code", + "outputId": "869cef36-b9f9-4c10-d0bd-723ac3b704be", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "accuracy (tp, fp, fn, tn)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.6" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "S1EgduK_0iMN", + "colab_type": "text" + }, + "source": [ + "Calculando a Precision:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aL86q9YP0iTa", + "colab_type": "code", + "outputId": "5a02aa2a-a423-4f23-8391-7dab6a1693dd", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "precision (tp, fp)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 12 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RISuvABl1QRM", + "colab_type": "text" + }, + "source": [ + "Calculando o Recall:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JHbboPE-1OBa", + "colab_type": "code", + "outputId": "cfb49698-1f83-4521-afbc-09931309e33b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + " recall(tp, fn)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "D1Z-POVy1NzX", + "colab_type": "text" + }, + "source": [ + "Calculando o Informedness: " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_wmrvULM1TiK", + "colab_type": "code", + "outputId": "6583e214-baa5-4a0a-a566-c92efb81b4b2", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "informedness(tp, fp, fn, tn)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.16666666666666669" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SaQbezyD1OVs", + "colab_type": "text" + }, + "source": [ + "Calculando o Markedness:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "LRJSJy_n1oLZ", + "colab_type": "code", + "outputId": "e246edb4-d9b9-4e24-f300-6299b83cba41", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "markdness(tp, fp, fn, tn)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.16666666666666669" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sOaWuY7dE84q", + "colab_type": "text" + }, + "source": [ + "## Treinamento e Testes de Modelos de Predição" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PS0qgPh6ywSY", + "colab_type": "text" + }, + "source": [ + "### Divisão do Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "D115SXB4GJGC", + "colab_type": "text" + }, + "source": [ + "Dividindo o dataset no conjunto de treinamento e testes. Normalmente o conjunto de testes equivale a 1/3 do dataset total:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "QImAPykOGMOz", + "colab_type": "code", + "outputId": "5cc77020-2fb9-4beb-e3e3-af5847d36070", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + } + }, + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3, random_state = 42)\n", + "\n", + "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", + "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", + "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Tamanho do Dataset. 10\n", + "Tamanho do Conjunto de Treinamento. 6\n", + "Tamanho do Conjunto de Testes. 4\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bWSSELsxIpJz", + "colab_type": "text" + }, + "source": [ + "### Validação Cruzada\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "W_gdmirlF12c", + "colab_type": "text" + }, + "source": [ + "Criando uma função para definir os índices de uma validação cruzada:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zjwKGpKry2nv", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função que retorna os indices do validação cruzada em k folds\n", + "def get_folds(indexes, k = 5, seed = 42):\n", + " \n", + " \"\"\"Função que retorna os indices do validação cruzada em k folds\n", + "\n", + " Parâmetros\n", + " ----------\n", + " \n", + " indexes : array\n", + " Indices do dataframe\n", + " \n", + " k : int, optional, default=5\n", + " Numero de folds. Deve ser pelo menos 2.\n", + " \n", + " seed : int, optional, default=42\n", + " È o valor usado pelo gerador de números aleatórios;\n", + " \"\"\" \n", + " \n", + " size = len(indexes)\n", + " subset_size = round(size / k)\n", + " random.Random(seed).shuffle(indexes)\n", + " subsets = [indexes[x:x+subset_size] for x in range(0, len(indexes), subset_size)]\n", + " kfolds = []\n", + " for i in range(k):\n", + " test = subsets[i]\n", + " train = []\n", + " for subset in subsets:\n", + " if subset != test:\n", + " train.extend(subset)\n", + " kfolds.append((train, test))\n", + " return kfolds\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ielGePYV0DoA", + "colab_type": "text" + }, + "source": [ + "Utilizando a função criada para definir os índices de treinamento e testes a serem utilizados usando 5 folds:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "GFCur9iMslil", + "colab_type": "code", + "outputId": "ca374f2d-d8db-4186-9b6c-a92c2a7fa2ce", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "instances = list(df.index.values)\n", + "instances" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 22 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vQRhOlU3JOdY", + "colab_type": "text" + }, + "source": [ + "Visualizando a tupla com os índices da validação cruzada através da função criada:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UQzzYUAFJOmz", + "colab_type": "code", + "outputId": "9f512dd6-e941-4ac9-adb6-eb14c083f86d", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "get_folds(list(df.index.values))" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[([2, 8, 5, 6, 9, 4, 0, 1], [7, 3]),\n", + " ([7, 3, 5, 6, 9, 4, 0, 1], [2, 8]),\n", + " ([7, 3, 2, 8, 9, 4, 0, 1], [5, 6]),\n", + " ([7, 3, 2, 8, 5, 6, 0, 1], [9, 4]),\n", + " ([7, 3, 2, 8, 5, 6, 9, 4], [0, 1])]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 23 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "FWvLV6ZjF2Ak", + "colab_type": "code", + "outputId": "f79ecfb3-34c8-4d4a-b20d-2828247fc05e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "# Pecorrendo a lista que contém as tuplas com os índices de treinamento e testes.\n", + "for fold in get_folds(list(df.index.values)):\n", + " print(\"Indices de Treinamento:\", fold[0], \"Indices de Testes:\", fold[1])" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Indices de Treinamento: [2, 8, 5, 6, 9, 4, 0, 1] Indices de Testes: [7, 3]\n", + "Indices de Treinamento: [7, 3, 5, 6, 9, 4, 0, 1] Indices de Testes: [2, 8]\n", + "Indices de Treinamento: [7, 3, 2, 8, 9, 4, 0, 1] Indices de Testes: [5, 6]\n", + "Indices de Treinamento: [7, 3, 2, 8, 5, 6, 0, 1] Indices de Testes: [9, 4]\n", + "Indices de Treinamento: [7, 3, 2, 8, 5, 6, 9, 4] Indices de Testes: [0, 1]\n" + ], + "name": "stdout" + } + ] + } + ] +} \ No newline at end of file From 034ce1b9a5b19e072ffc1b6fb141e24c8b61582d Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 01:48:44 -0300 Subject: [PATCH 04/14] Delete treinamento_testes_validacao.ipynb --- .../treinamento_testes_validacao.ipynb | 1071 ----------------- 1 file changed, 1071 deletions(-) delete mode 100644 notebooks/1_introducao/treinamento_testes_validacao.ipynb diff --git a/notebooks/1_introducao/treinamento_testes_validacao.ipynb b/notebooks/1_introducao/treinamento_testes_validacao.ipynb deleted file mode 100644 index 1711f87..0000000 --- a/notebooks/1_introducao/treinamento_testes_validacao.ipynb +++ /dev/null @@ -1,1071 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "treinamento_testes_validacao.ipynb", - "provenance": [], - "collapsed_sections": [], - "toc_visible": true, - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "w-RUHj0kHSFa", - "colab_type": "text" - }, - "source": [ - "# Semana 1 - Aprendizagem Supervisonada\n", - "---\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YfzjpU8DEBKk", - "colab_type": "text" - }, - "source": [ - "## Divisão dos dados e Avaliação" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fKb9Z7ynHEjA", - "colab_type": "text" - }, - "source": [ - "### Importando as bibliotecas" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Ml7cyyo3abml", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "import random\n", - "import numpy as np\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.model_selection import KFold\n", - "\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "74OGEe-tHc9r", - "colab_type": "text" - }, - "source": [ - "### Importando os dados" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "XhtrtAb9EvT7", - "colab_type": "code", - "outputId": "530fc497-50e0-4ef4-c35d-9fba49237d55", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 359 - } - }, - "source": [ - "data_url = 'https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/preprocessing_data.csv'\n", - "\n", - "df = pd.read_csv(data_url)\n", - "\n", - "df.head(10)" - ], - "execution_count": 3, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
CityAgeSalarySexAcquired
0Paraiba42.06500.0MNo
1Sao Paulo21.04300.0FYes
2Brasilia28.04900.0FNo
3Recife35.05400.0FNo
4Maceio38.0NaNMYes
5Sao Paulo33.05200.0MYes
6Belo HorizonteNaN4700.0FNo
7Sao Paulo45.07100.0MYes
8Paraiba51.07500.0FNo
9Fortaleza39.06000.0MYes
\n", - "
" - ], - "text/plain": [ - " City Age Salary Sex Acquired\n", - "0 Paraiba 42.0 6500.0 M No\n", - "1 Sao Paulo 21.0 4300.0 F Yes\n", - "2 Brasilia 28.0 4900.0 F No\n", - "3 Recife 35.0 5400.0 F No\n", - "4 Maceio 38.0 NaN M Yes\n", - "5 Sao Paulo 33.0 5200.0 M Yes\n", - "6 Belo Horizonte NaN 4700.0 F No\n", - "7 Sao Paulo 45.0 7100.0 M Yes\n", - "8 Paraiba 51.0 7500.0 F No\n", - "9 Fortaleza 39.0 6000.0 M Yes" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 3 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "G2M6D7WTALj1", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "yNgIaT9EALvx", - "colab_type": "code", - "outputId": "6158244f-34de-4fa9-93b4-21621af2ae27", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 187 - } - }, - "source": [ - "df.info()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 10 entries, 0 to 9\n", - "Data columns (total 5 columns):\n", - "City 10 non-null object\n", - "Age 9 non-null float64\n", - "Salary 9 non-null float64\n", - "Sex 10 non-null object\n", - "Acquired 10 non-null object\n", - "dtypes: float64(2), object(3)\n", - "memory usage: 528.0+ bytes\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "BLxBSWlxuPMs", - "colab_type": "text" - }, - "source": [ - "Preenchendo os registros nuḿericos que não possuem valores com a média." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "q5eiqJbywBLL", - "colab_type": "code", - "outputId": "7b8afeba-7dbc-48ae-8730-d8d97d722381", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 359 - } - }, - "source": [ - "df = df.fillna(df.mean())\n", - "\n", - "df" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
CityAgeSalarySexAcquired
0Paraiba42.0000006500.000000MNo
1Sao Paulo21.0000004300.000000FYes
2Brasilia28.0000004900.000000FNo
3Recife35.0000005400.000000FNo
4Maceio38.0000005733.333333MYes
5Sao Paulo33.0000005200.000000MYes
6Belo Horizonte36.8888894700.000000FNo
7Sao Paulo45.0000007100.000000MYes
8Paraiba51.0000007500.000000FNo
9Fortaleza39.0000006000.000000MYes
\n", - "
" - ], - "text/plain": [ - " City Age Salary Sex Acquired\n", - "0 Paraiba 42.000000 6500.000000 M No\n", - "1 Sao Paulo 21.000000 4300.000000 F Yes\n", - "2 Brasilia 28.000000 4900.000000 F No\n", - "3 Recife 35.000000 5400.000000 F No\n", - "4 Maceio 38.000000 5733.333333 M Yes\n", - "5 Sao Paulo 33.000000 5200.000000 M Yes\n", - "6 Belo Horizonte 36.888889 4700.000000 F No\n", - "7 Sao Paulo 45.000000 7100.000000 M Yes\n", - "8 Paraiba 51.000000 7500.000000 F No\n", - "9 Fortaleza 39.000000 6000.000000 M Yes" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 6 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KosHK6EKEwIO", - "colab_type": "text" - }, - "source": [ - "Definindos as variáveis independentes (X) e dependente (y)." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "dyTqObUCEwQc", - "colab_type": "code", - "colab": {} - }, - "source": [ - "X = df.iloc[:, :-1].values" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "9S0CTHw7kULG", - "colab_type": "code", - "outputId": "beecf767-293e-4922-a16a-013fc90016e8", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - } - }, - "source": [ - "y = df.iloc[:, 4].values\n", - "y" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array(['No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes'],\n", - " dtype=object)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 8 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ecRq9DQdDlg6", - "colab_type": "text" - }, - "source": [ - "## Efetividade na Classificação" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "zD4tGNnryE1V", - "colab_type": "text" - }, - "source": [ - "Criando as funções que calculam as diferentes métricas de efetividade:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "68pzp-TcE8IC" - }, - "source": [ - "### Cálculo das Medidas de Efetividade" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "1-5WDv4uBsI9", - "colab_type": "text" - }, - "source": [ - "Definindo as funções de efetividade e importando bibliotecas:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "-dAa8zihyEP6", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função que calcula os reais positivos\n", - "def rp(tp, fn):\n", - " return tp + fn\n", - "\n", - "# Função que calcula os reais negativos \n", - "def rn(fp, tn):\n", - " return fp + tn\n", - "\n", - "# Função que calcula as predições positivas \n", - "def pp(tp, fp):\n", - " return tp + fp\n", - "\n", - "# Função que calcula as predições negativas \n", - "def pn(fn, tn):\n", - " return fn + tn\n", - "\n", - "# Função que calcula Acurácia do modelo\n", - "def accuracy (tp, fp, fn, tn):\n", - " accuracy = ((tp + tn) / (tp + tn + fp + fn))\n", - " return (accuracy)\n", - " \n", - "# Função que calcula a Precisão \n", - "def precision (tp, fp):\n", - " precision = (tp / (tp + fp)) #predições positivas\n", - " return precision\n", - "\n", - "# Função que calcula o Recall ou Taxa de True Positive (TTP)\n", - "def recall(tp, fn):\n", - " recall = (tp / (tp + fn)) # reais positivos\n", - " return recall\n", - "\n", - "## Função que calcula o f-measure (media harmonica entre Precision e Recall)\n", - "def f_measure(tp, fp, fn):\n", - " f_measure = (2 * precision(tp, fp) * recall(tp, fn)) / (recall(tp, fn) + precision(tp, fp))\n", - " return f_measure\n", - " \n", - "# Função que calcula o Informedness \n", - "def informedness(tp, fp, fn, tn):\n", - " inform = ((tp/rp(tp, fn)) - (fp/rn(fp, tn)))\n", - " return inform\n", - "\n", - "# Função que calcula o Markedness\n", - "def markdness(tp, fp, fn, tn): \n", - " mark = ((tp/pp(tp,fp)) - (fn/pn(fn,tn)))\n", - " return mark\n", - "\n", - "# Função que calcula a taxa de False Positive (TFP)\n", - "def tfp(fp, tn):\n", - " tfp = (fp / (tn + fp))\n", - " return tfp" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "nnfyAWe60hcM", - "colab_type": "text" - }, - "source": [ - "Definido os valores da Matriz de Confusão" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "WJOtHg660hnL", - "colab_type": "code", - "colab": {} - }, - "source": [ - "tp, fp, fn, tn = [1,1,1,2]" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "cBnCTrcs0h75", - "colab_type": "text" - }, - "source": [ - "Calculando a Acurácia:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "JrDXlhEp0iD_", - "colab_type": "code", - "outputId": "869cef36-b9f9-4c10-d0bd-723ac3b704be", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "accuracy (tp, fp, fn, tn)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.6" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 11 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "S1EgduK_0iMN", - "colab_type": "text" - }, - "source": [ - "Calculando a Precision:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "aL86q9YP0iTa", - "colab_type": "code", - "outputId": "5a02aa2a-a423-4f23-8391-7dab6a1693dd", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "precision (tp, fp)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.5" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 12 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "RISuvABl1QRM", - "colab_type": "text" - }, - "source": [ - "Calculando o Recall:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "JHbboPE-1OBa", - "colab_type": "code", - "outputId": "cfb49698-1f83-4521-afbc-09931309e33b", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - " recall(tp, fn)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.5" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 13 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "D1Z-POVy1NzX", - "colab_type": "text" - }, - "source": [ - "Calculando o Informedness: " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "_wmrvULM1TiK", - "colab_type": "code", - "outputId": "6583e214-baa5-4a0a-a566-c92efb81b4b2", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "informedness(tp, fp, fn, tn)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.16666666666666669" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 14 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SaQbezyD1OVs", - "colab_type": "text" - }, - "source": [ - "Calculando o Markedness:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "LRJSJy_n1oLZ", - "colab_type": "code", - "outputId": "e246edb4-d9b9-4e24-f300-6299b83cba41", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "markdness(tp, fp, fn, tn)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.16666666666666669" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 15 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "sOaWuY7dE84q", - "colab_type": "text" - }, - "source": [ - "## Treinamento e Testes de Modelos de Predição" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "PS0qgPh6ywSY", - "colab_type": "text" - }, - "source": [ - "### Divisão do Dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "D115SXB4GJGC", - "colab_type": "text" - }, - "source": [ - "Dividindo o dataset no conjunto de treinamento e testes. Normalmente o conjunto de testes equivale a 1/3 do dataset total:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "QImAPykOGMOz", - "colab_type": "code", - "outputId": "5cc77020-2fb9-4beb-e3e3-af5847d36070", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 68 - } - }, - "source": [ - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3, random_state = 42)\n", - "\n", - "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", - "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", - "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Tamanho do Dataset. 10\n", - "Tamanho do Conjunto de Treinamento. 6\n", - "Tamanho do Conjunto de Testes. 4\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "bWSSELsxIpJz", - "colab_type": "text" - }, - "source": [ - "### Validação Cruzada\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "W_gdmirlF12c", - "colab_type": "text" - }, - "source": [ - "Criando uma função para definir os índices de uma validação cruzada:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "zjwKGpKry2nv", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função que retorna os indices do validação cruzada em k folds\n", - "def get_folds(indexes, k = 5, seed = 42):\n", - " \n", - " \"\"\"Função que retorna os indices do validação cruzada em k folds\n", - "\n", - " Parâmetros\n", - " ----------\n", - " \n", - " indexes : array\n", - " Indices do dataframe\n", - " \n", - " k : int, optional, default=5\n", - " Numero de folds. Deve ser pelo menos 2.\n", - " \n", - " seed : int, optional, default=42\n", - " È o valor usado pelo gerador de números aleatórios;\n", - " \"\"\" \n", - " \n", - " size = len(indexes)\n", - " subset_size = round(size / k)\n", - " random.Random(seed).shuffle(indexes)\n", - " subsets = [indexes[x:x+subset_size] for x in range(0, len(indexes), subset_size)]\n", - " kfolds = []\n", - " for i in range(k):\n", - " test = subsets[i]\n", - " train = []\n", - " for subset in subsets:\n", - " if subset != test:\n", - " train.extend(subset)\n", - " kfolds.append((train, test))\n", - " return kfolds\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ielGePYV0DoA", - "colab_type": "text" - }, - "source": [ - "Utilizando a função criada para definir os índices de treinamento e testes a serem utilizados usando 5 folds:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "GFCur9iMslil", - "colab_type": "code", - "outputId": "ca374f2d-d8db-4186-9b6c-a92c2a7fa2ce", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "instances = list(df.index.values)\n", - "instances" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 22 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "vQRhOlU3JOdY", - "colab_type": "text" - }, - "source": [ - "Visualizando a tupla com os índices da validação cruzada através da função criada:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "UQzzYUAFJOmz", - "colab_type": "code", - "outputId": "9f512dd6-e941-4ac9-adb6-eb14c083f86d", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "get_folds(list(df.index.values))" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "[([2, 8, 5, 6, 9, 4, 0, 1], [7, 3]),\n", - " ([7, 3, 5, 6, 9, 4, 0, 1], [2, 8]),\n", - " ([7, 3, 2, 8, 9, 4, 0, 1], [5, 6]),\n", - " ([7, 3, 2, 8, 5, 6, 0, 1], [9, 4]),\n", - " ([7, 3, 2, 8, 5, 6, 9, 4], [0, 1])]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 23 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "FWvLV6ZjF2Ak", - "colab_type": "code", - "outputId": "f79ecfb3-34c8-4d4a-b20d-2828247fc05e", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "# Pecorrendo a lista que contém as tuplas com os índices de treinamento e testes.\n", - "for fold in get_folds(list(df.index.values)):\n", - " print(\"Indices de Treinamento:\", fold[0], \"Indices de Testes:\", fold[1])" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Indices de Treinamento: [2, 8, 5, 6, 9, 4, 0, 1] Indices de Testes: [7, 3]\n", - "Indices de Treinamento: [7, 3, 5, 6, 9, 4, 0, 1] Indices de Testes: [2, 8]\n", - "Indices de Treinamento: [7, 3, 2, 8, 9, 4, 0, 1] Indices de Testes: [5, 6]\n", - "Indices de Treinamento: [7, 3, 2, 8, 5, 6, 0, 1] Indices de Testes: [9, 4]\n", - "Indices de Treinamento: [7, 3, 2, 8, 5, 6, 9, 4] Indices de Testes: [0, 1]\n" - ], - "name": "stdout" - } - ] - } - ] -} \ No newline at end of file From 5ce95734013632cff11ea265acf15e94502122dd Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:05:44 -0300 Subject: [PATCH 05/14] Created using Colaboratory --- notebooks/2_semana/Regressao_Logistica.ipynb | 1287 ++++++++++++++++++ 1 file changed, 1287 insertions(+) create mode 100644 notebooks/2_semana/Regressao_Logistica.ipynb diff --git a/notebooks/2_semana/Regressao_Logistica.ipynb b/notebooks/2_semana/Regressao_Logistica.ipynb new file mode 100644 index 0000000..81ecf4f --- /dev/null +++ b/notebooks/2_semana/Regressao_Logistica.ipynb @@ -0,0 +1,1287 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Regressao_Logistica.ipynb", + "provenance": [], + "collapsed_sections": [ + "0KkcOxCxjptF", + "8CLZyvMlh_Qj", + "gIqtlsYGmOYq" + ], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EB3dPPlgQeVt", + "colab_type": "text" + }, + "source": [ + "#Modelos de Classificação : Regressão Logística" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0KkcOxCxjptF", + "colab_type": "text" + }, + "source": [ + "### Importando libs e funções" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k6l8c0olEHpN", + "colab_type": "text" + }, + "source": [ + "Importando libs" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i7FF5Glb_NrK", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import random\n", + "import numpy as np\n", + "from sklearn.preprocessing import StandardScaler \n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import f1_score\n", + "from matplotlib.colors import ListedColormap\n", + "from sklearn.metrics import confusion_matrix\n", + "\n", + "# Importando libs de visualização de dados\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns; sns.set()" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L7RydZ0qEIl4", + "colab_type": "text" + }, + "source": [ + "Importando funções" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KxneBJZUEIz4", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função que calcula os reais positivos\n", + "def rp(tp, fn):\n", + " return tp + fn\n", + "\n", + "# Função que calcula os reais negativos \n", + "def rn(fp, tn):\n", + " return fp + tn\n", + "\n", + "# Função que calcula as predicoes positivas \n", + "def pp(tp, fp):\n", + " return tp + fp\n", + "\n", + "# Função que calcula as predicoes negativas \n", + "def pn(fn, tn):\n", + " return fn + tn\n", + "\n", + "# Função que calcula acurácia do modelo\n", + "def accuracy (tp, fp, fn, tn):\n", + " accuracy = ((tp + tn) / (tp + tn + fp + fn))\n", + " return (accuracy)\n", + " \n", + "# Função que calcula a precisão \n", + "def precision (tp, fp):\n", + " precision = (tp / (tp + fp)) #predições positivas\n", + " return precision\n", + "\n", + "# Função que calcula o recall\n", + "def recall(tp, fn):\n", + " recall = (tp / (tp + fn)) # reais positivos\n", + " return recall\n", + "\n", + "## Função que calcula o f-measure (media harmonica entre precision e recall)\n", + "def f_measure(tp, fp, fn):\n", + " f_measure = (2 * precision(tp, fp) * recall(tp, fn)) / (recall(tp, fn) + precision(tp, fp))\n", + " return f_measure\n", + " \n", + "# Função que calcula o Informedness \n", + "def informedness(tp, fp, fn, tn):\n", + " inform = ((tp/rp(tp, fn)) - (fp/rn(fp, tn)))\n", + " return inform\n", + "\n", + "# Função que calcula o Markedness\n", + "def markdness(tp, fp, fn, tn): \n", + " mark = ((tp/pp(tp,fp)) - (fn/pn(fn,tn)))\n", + " return mark\n", + "\n", + "# Função de escalonamento\n", + "def feature_scaling(data):\n", + " sc = StandardScaler()\n", + " return sc.fit_transform(data)\n", + "\n", + "# Função que gera o gráfico dos resultados de classificação\n", + "def plot_results_class(X, y, classifier, title):\n", + " X_set, y_set = X, y\n", + " X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),\n", + " np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))\n", + " plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),\n", + " alpha = 0.75, cmap = ListedColormap(('red', 'green')))\n", + " plt.xlim(X1.min(), X1.max())\n", + " plt.ylim(X2.min(), X2.max())\n", + " for i, j in enumerate(np.unique(y_set)):\n", + " plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],\n", + " c = ListedColormap(('red', 'green'))(i), label = j)\n", + " plt.title(title)\n", + " plt.xlabel('Idade')\n", + " plt.ylabel('Tarifa')\n", + " plt.legend()\n", + " plt.show()" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8CLZyvMlh_Qj", + "colab_type": "text" + }, + "source": [ + "### Etapa de exploração e tratamento dos dados" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZfESkLx0EjB8", + "colab_type": "text" + }, + "source": [ + "Importando os dados dos passageiros do titanic e selecionando uma amostragem dos dados para uma melhor visualização. O objetivo dessa tarefa de classificação é prever os passageiros sobreviventes com base nas suas informações pessoais.\n", + "\n", + "Fonte: [Kaggle](https://www.kaggle.com/c/titanic/data)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yq6eIh3NJnuN", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", + "df = df.sample(n=100, random_state=0, replace = True)" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g-LzSHX1Jpg1", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hpLEK45DJomb", + "colab_type": "code", + "outputId": "6f217547-c6ba-4f14-ae3a-da80b4096355", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + } + }, + "source": [ + "# Exporando o dataset\n", + "df.info()" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 100 entries, 44 to 20\n", + "Data columns (total 8 columns):\n", + "Unnamed: 0 100 non-null int64\n", + "LotArea 100 non-null int64\n", + "PoolArea 100 non-null int64\n", + "GarageArea 100 non-null int64\n", + "OverallCond 100 non-null int64\n", + "YearBuilt 100 non-null int64\n", + "MSZoning 100 non-null object\n", + "SalePrice 100 non-null int64\n", + "dtypes: int64(7), object(1)\n", + "memory usage: 7.0+ KB\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HQOuXFFIi8OZ", + "colab_type": "code", + "outputId": "d621591a-6226-4107-8eca-39e26ee223c7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + } + }, + "source": [ + "# Visualizando o sumário das colunas numéricas do dataset\n", + "df.describe()" + ], + "execution_count": 13, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count100.000000100.000000100.0100.000000100.000000100.000000100.000000
mean775.81000010898.0900000.0522.9300005.8900001970.320000199800.560000
std394.2436746259.6402080.0233.0492321.30186331.13829776041.565893
min26.0000001477.0000000.00.0000003.0000001875.00000080000.000000
25%546.7500008381.2500000.0440.0000005.0000001950.000000148375.000000
50%802.00000010760.5000000.0551.0000005.0000001976.000000195000.000000
75%1039.00000012068.7500000.0616.5000007.0000002002.000000235032.000000
max1442.00000046589.0000000.01014.0000009.0000002009.000000437154.000000
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 LotArea ... YearBuilt SalePrice\n", + "count 100.000000 100.000000 ... 100.000000 100.000000\n", + "mean 775.810000 10898.090000 ... 1970.320000 199800.560000\n", + "std 394.243674 6259.640208 ... 31.138297 76041.565893\n", + "min 26.000000 1477.000000 ... 1875.000000 80000.000000\n", + "25% 546.750000 8381.250000 ... 1950.000000 148375.000000\n", + "50% 802.000000 10760.500000 ... 1976.000000 195000.000000\n", + "75% 1039.000000 12068.750000 ... 2002.000000 235032.000000\n", + "max 1442.000000 46589.000000 ... 2009.000000 437154.000000\n", + "\n", + "[8 rows x 7 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tgh2pe9lJtr6", + "colab_type": "text" + }, + "source": [ + "Visualizando o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EvY28fJdJxey", + "colab_type": "code", + "outputId": "fb164251-d4c9-4c14-e780-bde3b35799f8", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
49549603Yousseff, Mr. GeriousmaleNaN00262714.4583NaNC
64864903Willey, Mr. EdwardmaleNaN00S.O./P.P. 7517.5500NaNS
27827903Rice, Master. Ericmale7.04138265229.1250NaNQ
313211Spencer, Mrs. William Augustus (Marie Eugenie)femaleNaN10PC 17569146.5208B78C
25525613Touma, Mrs. Darwis (Hanne Youssef Razi)female29.002265015.2458NaNC
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass ... Fare Cabin Embarked\n", + "495 496 0 3 ... 14.4583 NaN C\n", + "648 649 0 3 ... 7.5500 NaN S\n", + "278 279 0 3 ... 29.1250 NaN Q\n", + "31 32 1 1 ... 146.5208 B78 C\n", + "255 256 1 3 ... 15.2458 NaN C\n", + "\n", + "[5 rows x 12 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jiMAqVghJylz", + "colab_type": "text" + }, + "source": [ + "Preenchendo os valores númericos nulos (NA) com a mediana." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KFDodNK4JzlR", + "colab_type": "code", + "outputId": "705d845a-fa8d-4291-9e72-41ce575bf8ee", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "df = df.fillna(df.median())\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
49549603Yousseff, Mr. Geriousmale26.000262714.4583NaNC
64864903Willey, Mr. Edwardmale26.000S.O./P.P. 7517.5500NaNS
27827903Rice, Master. Ericmale7.04138265229.1250NaNQ
313211Spencer, Mrs. William Augustus (Marie Eugenie)female26.010PC 17569146.5208B78C
25525613Touma, Mrs. Darwis (Hanne Youssef Razi)female29.002265015.2458NaNC
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass ... Fare Cabin Embarked\n", + "495 496 0 3 ... 14.4583 NaN C\n", + "648 649 0 3 ... 7.5500 NaN S\n", + "278 279 0 3 ... 29.1250 NaN Q\n", + "31 32 1 1 ... 146.5208 B78 C\n", + "255 256 1 3 ... 15.2458 NaN C\n", + "\n", + "[5 rows x 12 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 7 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jXWksGyoJ0u3", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis independentes e visualizando as 5 primeiras:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lJ0y3JijJ1ii", + "colab_type": "code", + "outputId": "0187a2d8-9a56-42f8-f315-176ec59a1219", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X = df.iloc[:, [5, 9]].values\n", + "X[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 26. , 14.4583],\n", + " [ 26. , 7.55 ],\n", + " [ 7. , 29.125 ],\n", + " [ 26. , 146.5208],\n", + " [ 29. , 15.2458]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uISYBhKqUqpQ", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis dependentes e visualizando as 5 primeiras:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "okQl0J1SUq9h", + "colab_type": "code", + "outputId": "42cd730b-3886-48a1-e117-54da7663f8db", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "y = df.iloc[:, 1].values\n", + "y[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0, 0, 0, 1, 1])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 9 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yzJ08rJ4J3CS", + "colab_type": "text" + }, + "source": [ + " Criando os subconjuntos de treinamento e testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "tVz1mTUOJ4Tb", + "colab_type": "code", + "outputId": "c97d6fa7-10ea-4bec-c1d6-a67ad0a0b8c7", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .2, random_state = 42)\n", + "\n", + "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", + "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", + "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Tamanho do Dataset. 100\n", + "Tamanho do Conjunto de Treinamento. 80\n", + "Tamanho do Conjunto de Testes. 20\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OcQtLvcXJ7NT", + "colab_type": "text" + }, + "source": [ + "Normalizando as features e exibindo as 5 primeiras:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aXvlvQ9DJ7i3", + "colab_type": "code", + "outputId": "1bbd577a-6f18-4d0b-c924-4f4d0baa371e", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X_train = feature_scaling(X_train)\n", + "X_test = feature_scaling(X_test)\n", + "\n", + "X_train[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[-0.2233842 , 0.62589282],\n", + " [ 0.50330481, -0.63776468],\n", + " [ 0.35796701, -0.68999987],\n", + " [-0.0780464 , -0.55753246],\n", + " [-0.58672871, -0.2466326 ]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGXuG35WJ_Tj", + "colab_type": "text" + }, + "source": [ + "Treinando o modelo de Árvore de Decisão com o Conjunto de Treinamento" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "gIqtlsYGmOYq" + }, + "source": [ + "### Etapa de Treinamento e Validação do Modelo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "oF9z-OwymOYs" + }, + "source": [ + "Importando e treinando o modelo com o conjunto de treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "8d5f3b06-3372-42a4-fe53-7affbad191ba", + "id": "G1uuhHzumOYt", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 136 + } + }, + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "classifier = LogisticRegression(random_state = 0)\n", + "classifier.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", + " FutureWarning)\n" + ], + "name": "stderr" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", + " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", + " multi_class='warn', n_jobs=None, penalty='l2',\n", + " random_state=0, solver='warn', tol=0.0001, verbose=0,\n", + " warm_start=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 12 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "sKGRDMbWmOY1" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "10be0e36-54f6-4530-8378-9c4b2f72ff8e", + "id": "FAvYq8NemOY3", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "y_pred = classifier.predict(X_test)\n", + "\n", + "y_pred" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "2qVdkDyzmOY_" + }, + "source": [ + "Criando e exibindo os valores da matriz de confusão com o conjunto de testes " + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "412d2fd2-d655-4a5c-c8c0-b906049447ec", + "id": "dzm-N1R7mOZD", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + } + }, + "source": [ + "tn, fp, fn, tp = confusion_matrix(y_test, y_pred).ravel()\n", + "\n", + "confusion_matrix(y_test, y_pred)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[14, 1],\n", + " [ 3, 2]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Vl2JrA-cmOZI" + }, + "source": [ + "Visualizando a matriz de confusão" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "b66d506b-fa33-4666-a495-c5587d614bf7", + "id": "o8x_wA2CmOZJ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + } + }, + "source": [ + "mat = confusion_matrix(y_test, y_pred)\n", + "sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False)\n", + "plt.xlabel('true label')\n", + "plt.ylabel('predicted label');" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "y6TAt9MomOZL" + }, + "source": [ + "Visualizando a métrica de **acurácia** utilizando as funções criadas e a bibilioteca sklearn:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "680fcd92-32f2-4554-b847-0b75b5942e39", + "id": "rMMCqczomOZM", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "accuracy(tp, fp, fn, tn)\n", + "classifier.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.8" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "rAL1ztqJmOZP" + }, + "source": [ + "Exibindo a medida **f-measure**:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "60cff7ee-505a-4dc2-eb59-73785668ef2f", + "id": "dcg2oWJImOZQ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "f_measure(tp, fp, fn)\n", + "f1_score(y_test, y_pred) " + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "6SG8SzeXmOZS" + }, + "source": [ + "Exibindo os resultados do conjunto de treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "8e82d219-2e85-4201-a88e-b4cbecb69c00", + "id": "_xENnpTxmOZU", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 355 + } + }, + "source": [ + "plot_results_class(X_train, y_train, classifier, 'Regressão Logística (Conj. de Treinamento)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\ncgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "QwmncO8mmOZa" + }, + "source": [ + "Exibindo os resultados do conjunto de testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "62772bbd-82e5-4f3a-fe3c-2f1f92430914", + "id": "tA-DeHAMmOZb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 355 + } + }, + "source": [ + "plot_results_class(X_test, y_test, classifier, 'Regressão Logística (Conj. de Testes)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + } + ] +} \ No newline at end of file From 575c0d8c9df5bede3e9933fcc59c16aec7a03ada Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:05:55 -0300 Subject: [PATCH 06/14] Created using Colaboratory --- notebooks/2_semana/Regressao_Multipla.ipynb | 1219 +++++++++++++++++++ 1 file changed, 1219 insertions(+) create mode 100644 notebooks/2_semana/Regressao_Multipla.ipynb diff --git a/notebooks/2_semana/Regressao_Multipla.ipynb b/notebooks/2_semana/Regressao_Multipla.ipynb new file mode 100644 index 0000000..093cfa3 --- /dev/null +++ b/notebooks/2_semana/Regressao_Multipla.ipynb @@ -0,0 +1,1219 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Regressao_Multipla.ipynb", + "provenance": [], + "collapsed_sections": [ + "TsV0SiuwpZ7i", + "QaGBc_KwpeVt", + "VUZAwJjMvh0r" + ], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EB3dPPlgQeVt", + "colab_type": "text" + }, + "source": [ + "# Modelos de Regressão: Regressão Linear Múltipla" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TsV0SiuwpZ7i", + "colab_type": "text" + }, + "source": [ + "### Importando libs e funções:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k6l8c0olEHpN", + "colab_type": "text" + }, + "source": [ + "Importando libs" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i7FF5Glb_NrK", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import random\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.preprocessing import StandardScaler \n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import f1_score\n", + "from matplotlib.colors import ListedColormap" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L7RydZ0qEIl4", + "colab_type": "text" + }, + "source": [ + "Importando funções" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KxneBJZUEIz4", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função de escalonamento\n", + "def feature_scaling(data):\n", + " sc = StandardScaler()\n", + " return sc.fit_transform(data)\n", + "\n", + "# Função que gera o gráfico dos resultados de regressão\n", + "def plot_results_linear(X, y, regressor, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, regressor.predict(X), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + "\n", + "# Função que gera o gráfico dos resultados de regerssão polinomial\n", + "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show() \n", + " \n", + "# Função que gera o gráfico dos resultados de arvores\n", + "def plot_results_reg(X, y, regressor, title): \n", + " X_grid = np.arange(min(X), max(X), 0.01)\n", + " X_grid = X_grid.reshape((len(X_grid), 1))\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + " " + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QaGBc_KwpeVt", + "colab_type": "text" + }, + "source": [ + "### Etapa de exploração e tratamento dos **dados**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZfESkLx0EjB8", + "colab_type": "text" + }, + "source": [ + "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", + "\n", + "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yq6eIh3NJnuN", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", + "\n", + "#Selecionando uma amostragem dos dados para uma melhor visualização\n", + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']]" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g-LzSHX1Jpg1", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hpLEK45DJomb", + "colab_type": "code", + "outputId": "bcace5e2-035f-4e8b-ed04-d21036a25367", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + } + }, + "source": [ + "df.describe()" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea ... YearBuilt SalePrice\n", + "count 60.000000 60.0 ... 60.000000 60.000000\n", + "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", + "std 8099.879028 0.0 ... 30.522618 74910.507145\n", + "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", + "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", + "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", + "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", + "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", + "\n", + "[8 rows x 6 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 5 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tgh2pe9lJtr6", + "colab_type": "text" + }, + "source": [ + "Visualizando o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EvY28fJdJxey", + "colab_type": "code", + "outputId": "b06300d2-add2-4c00-f192-52a2e732edf8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "0 8450 0 548 5 2003 RL 208500\n", + "1 9600 0 460 8 1976 RL 181500\n", + "2 11250 0 608 5 2001 RL 223500\n", + "3 9550 0 642 5 1915 RL 140000\n", + "4 14260 0 836 5 2000 RL 250000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 237 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jiMAqVghJylz", + "colab_type": "text" + }, + "source": [ + "Preenchendo os valores númericos nulos (NA) com a mediana." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KFDodNK4JzlR", + "colab_type": "code", + "outputId": "11e16af0-7111-42a8-fa5a-b813693d64df", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = df.fillna(df.median())\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "0 8450 0 548 5 2003 RL 208500\n", + "1 9600 0 460 8 1976 RL 181500\n", + "2 11250 0 608 5 2001 RL 223500\n", + "3 9550 0 642 5 1915 RL 140000\n", + "4 14260 0 836 5 2000 RL 250000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 238 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jXWksGyoJ0u3", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis independentes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lJ0y3JijJ1ii", + "colab_type": "code", + "outputId": "fc0ba041-626e-403f-f36e-a0b3fbfe3415", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", + "X[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 8450],\n", + " [ 9600],\n", + " [11250],\n", + " [ 9550],\n", + " [14260]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 239 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uISYBhKqUqpQ", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis dependentes." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "okQl0J1SUq9h", + "colab_type": "code", + "outputId": "d7c38a52-ee55-478a-9f50-af39542fe538", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", + "y[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[208500],\n", + " [181500],\n", + " [223500],\n", + " [140000],\n", + " [250000]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 240 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "VUZAwJjMvh0r" + }, + "source": [ + "### Etapa de Classificação e Validação do Modelo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZOIXAi6Wvpce", + "colab_type": "text" + }, + "source": [ + "Selecionando as principais features do dataset:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "et8CNkI1vpk2", + "colab_type": "code", + "outputId": "5b82c6a2-0346-4de7-f897-68ec246fd933", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].reindex()\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "0 8450 0 548 5 2003 RL 208500\n", + "1 9600 0 460 8 1976 RL 181500\n", + "2 11250 0 608 5 2001 RL 223500\n", + "3 9550 0 642 5 1915 RL 140000\n", + "4 14260 0 836 5 2000 RL 250000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 241 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZjC2LJYh1SQ6", + "colab_type": "text" + }, + "source": [ + "Exibir os valores distintos da coluna MSZoning. **Segue legenda:**\n", + "FV-Residencial de Vila Flutuante, RH- Residencial de Densidade Alta, RL-Residencial de Densidade Baixa, RM-Residencial de Densidade Média." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SeWh_rpnYkLd", + "colab_type": "code", + "outputId": "58ec4049-ab3a-4c72-be4c-921620731399", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "df['MSZoning'].unique()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['RL', 'RM', 'C (all)', 'FV', 'RH'], dtype=object)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 242 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eumBvAB8wbq-", + "colab_type": "text" + }, + "source": [ + "Codificando as variáveis Categóricos e evitando a armadilha da variável Dummy. **Obs:** Algumas técnicas de aprendizado de máquina exigem que você elimine uma dimensão da apresentação para evitar a dependência entre as variáveis. Isso pode ser feito através do parâmetro \"drop_first = True\"." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "rjT1ONG7wb9x", + "colab_type": "code", + "outputId": "cd492757-3b55-42bc-feb6-43de14ff9341", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = pd.get_dummies(df , columns = ['MSZoning'], drop_first=True)\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePriceMSZoning_FVMSZoning_RHMSZoning_RLMSZoning_RM
084500548520032085000010
196000460819761815000010
2112500608520012235000010
395500642519151400000010
4142600836520002500000010
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea ... MSZoning_RH MSZoning_RL MSZoning_RM\n", + "0 8450 0 548 ... 0 1 0\n", + "1 9600 0 460 ... 0 1 0\n", + "2 11250 0 608 ... 0 1 0\n", + "3 9550 0 642 ... 0 1 0\n", + "4 14260 0 836 ... 0 1 0\n", + "\n", + "[5 rows x 10 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 243 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "i9fs5x8MvpxV", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis indepedentes e dependentes e dividindo o dataset em conjunto de treinamento e testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "b9uRFW2vvp6b", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X = df[df.columns[~df.columns.isin(['SalePrice'])]].values\n", + "y = df['SalePrice'].values.reshape(-1,1)\n", + "\n", + "# Dividindo os dados\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OcQtLvcXJ7NT", + "colab_type": "text" + }, + "source": [ + "Normalizando as features " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aXvlvQ9DJ7i3", + "colab_type": "code", + "outputId": "8fa737f1-578b-4644-de0f-b1ee66fcc7d0", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 187 + } + }, + "source": [ + "X_train = feature_scaling(X_train)\n", + "X_test = feature_scaling(X_test)\n", + "\n", + "X_train[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[-0.21289571, -0.07099284, -0.86383727, 0.3722173 , -0.45546896,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.26524463, -0.07099284, -0.45626397, 1.26860866, 0.71860895,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.17784146, -0.07099284, -2.25716927, 1.26860866, -1.98829291,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.32447422, -0.07099284, -1.11975539, 1.26860866, -1.10773447,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.52903482, -0.07099284, -0.79748813, 0.3722173 , -1.53170705,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 245 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "SMaN0iHNvh0t" + }, + "source": [ + "Importando e treinando o modelo de Regressao Linear Multipla com o Conjunto de Treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "0ce99d9c-c744-4034-fec4-7cdc01565225", + "id": "VuzaRxyuvh0u", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "\n", + "regressor = LinearRegression()\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 246 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "zT6PUXkWvh0y" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "1da72340-52a8-4022-a2e5-363eb7f76251", + "id": "JR-E180Fvh0y", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "y_pred = regressor.predict(X_test)\n", + "\n", + "y_pred[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[162102.94940288],\n", + " [241746.81922749],\n", + " [119733.72469521],\n", + " [147800.757112 ],\n", + " [285853.71056469]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 247 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "PO6sGI3Gvh01" + }, + "source": [ + "Avaliando o modelo com a métrica r2" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "6f12ba33-16a7-4559-de51-fb0201398258", + "id": "fQPgnd8dvh02", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "regressor.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5043465841755175" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 248 + } + ] + } + ] +} \ No newline at end of file From b908b7cdc19d44fe6a074f2fc46923de2f21ccd6 Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:06:08 -0300 Subject: [PATCH 07/14] Created using Colaboratory --- .../Regress\303\243o_Polynomial.ipynb" | 1087 +++++++++++++++++ 1 file changed, 1087 insertions(+) create mode 100644 "notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" diff --git "a/notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" "b/notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" new file mode 100644 index 0000000..8e0d84d --- /dev/null +++ "b/notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" @@ -0,0 +1,1087 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Regressão_Polynomial.ipynb", + "provenance": [], + "collapsed_sections": [ + "TsV0SiuwpZ7i", + "QaGBc_KwpeVt", + "hDpjk2hPqBar" + ], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EB3dPPlgQeVt", + "colab_type": "text" + }, + "source": [ + "# Modelos de Regressão: Regressão Polynomial" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TsV0SiuwpZ7i", + "colab_type": "text" + }, + "source": [ + "### Importando libs e funções:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k6l8c0olEHpN", + "colab_type": "text" + }, + "source": [ + "Importando libs" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i7FF5Glb_NrK", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import random\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.preprocessing import StandardScaler \n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import f1_score\n", + "from matplotlib.colors import ListedColormap" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L7RydZ0qEIl4", + "colab_type": "text" + }, + "source": [ + "Importando funções" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KxneBJZUEIz4", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função de escalonamento\n", + "def feature_scaling(data):\n", + " sc = StandardScaler()\n", + " return sc.fit_transform(data)\n", + "\n", + "# Função que gera o gráfico dos resultados de regressão\n", + "def plot_results_linear(X, y, regressor, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, regressor.predict(X), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + "\n", + "# Função que gera o gráfico dos resultados de regerssão polinomial\n", + "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show() \n", + " \n", + "# Função que gera o gráfico dos resultados de arvores\n", + "def plot_results_reg(X, y, regressor, title): \n", + " X_grid = np.arange(min(X), max(X), 0.01)\n", + " X_grid = X_grid.reshape((len(X_grid), 1))\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + " " + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QaGBc_KwpeVt", + "colab_type": "text" + }, + "source": [ + "### Etapa de exploração e tratamento dos **dados**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZfESkLx0EjB8", + "colab_type": "text" + }, + "source": [ + "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", + "\n", + "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yq6eIh3NJnuN", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", + "\n", + "#Selecionando uma amostragem dos dados para uma melhor visualização\n", + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].sample(n=60, random_state=0, weights = 'SalePrice')" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g-LzSHX1Jpg1", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hpLEK45DJomb", + "colab_type": "code", + "outputId": "68b7c2d6-e1ce-4fbd-fcce-e66c30090c23", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + } + }, + "source": [ + "df.describe()" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea ... YearBuilt SalePrice\n", + "count 60.000000 60.0 ... 60.000000 60.000000\n", + "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", + "std 8099.879028 0.0 ... 30.522618 74910.507145\n", + "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", + "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", + "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", + "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", + "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", + "\n", + "[8 rows x 6 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tgh2pe9lJtr6", + "colab_type": "text" + }, + "source": [ + "Visualizando o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EvY28fJdJxey", + "colab_type": "code", + "outputId": "a128e029-1ad2-43e2-f720-98f9f3cd5670", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "789 12205 0 444 8 1966 RL 187500\n", + "1039 1477 0 286 4 1970 RM 80000\n", + "868 14762 0 672 6 1948 RL 169000\n", + "782 16285 0 605 5 2001 RL 187100\n", + "611 10395 0 564 6 1978 RL 148000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 5 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jiMAqVghJylz", + "colab_type": "text" + }, + "source": [ + "Preenchendo os valores númericos nulos (NA) com a mediana." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KFDodNK4JzlR", + "colab_type": "code", + "outputId": "10db24ec-8525-476b-d43b-0ea991658a50", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "df = df.fillna(df.median())\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "789 12205 0 444 8 1966 RL 187500\n", + "1039 1477 0 286 4 1970 RM 80000\n", + "868 14762 0 672 6 1948 RL 169000\n", + "782 16285 0 605 5 2001 RL 187100\n", + "611 10395 0 564 6 1978 RL 148000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jXWksGyoJ0u3", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis independentes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lJ0y3JijJ1ii", + "colab_type": "code", + "outputId": "77cc56c0-93f3-4e2b-f18f-a891e73ccd0d", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", + "X[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[12205],\n", + " [ 1477],\n", + " [14762],\n", + " [16285],\n", + " [10395]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 7 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uISYBhKqUqpQ", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis dependentes." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "okQl0J1SUq9h", + "colab_type": "code", + "outputId": "24fde24a-67e1-4cc1-e510-cf6b82248f43", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", + "y[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[187500],\n", + " [ 80000],\n", + " [169000],\n", + " [187100],\n", + " [148000]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yzJ08rJ4J3CS", + "colab_type": "text" + }, + "source": [ + " Criando os subconjuntos de treinamento e testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "tVz1mTUOJ4Tb", + "colab_type": "code", + "outputId": "e6abb0df-30fc-4bf8-9248-002ebcaa7ec9", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)\n", + "\n", + "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", + "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", + "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Tamanho do Dataset. 60\n", + "Tamanho do Conjunto de Treinamento. 48\n", + "Tamanho do Conjunto de Testes. 12\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OcQtLvcXJ7NT", + "colab_type": "text" + }, + "source": [ + "Normalizando as features " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aXvlvQ9DJ7i3", + "colab_type": "code", + "colab": {} + }, + "source": [ + "#X_train = feature_scaling(X_train)\n", + "#X_test = feature_scaling(X_test)\n", + "\n", + "#X_train[:5]" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "hDpjk2hPqBar" + }, + "source": [ + "### Etapa de Treinamento e Validação do Modelo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "5ZQOFczoqBat" + }, + "source": [ + "Importando e treinando o modelo de Regressao Linear com o Conjunto de Treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "84f2ff8a-ab60-4eda-a181-7505c2771d27", + "id": "TARpu6xZqBat", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "\n", + "regressor = LinearRegression()\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SAyttRhcqsz_", + "colab_type": "text" + }, + "source": [ + "Transformando as features na quarta ordem polinomial:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OZyCBmL2qs-X", + "colab_type": "code", + "outputId": "a171e5f2-8798-4ae4-ae51-f25c6094ac5a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + } + }, + "source": [ + "from sklearn.preprocessing import PolynomialFeatures\n", + "\n", + "poly_reg = PolynomialFeatures(degree = 4)\n", + "X_poly = poly_reg.fit_transform(X)\n", + "poly_reg.fit(X_poly, y)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "PolynomialFeatures(degree=4, include_bias=True, interaction_only=False,\n", + " order='C')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "92IzIbgrrDdG", + "colab_type": "text" + }, + "source": [ + "Treinando o modelo de regressão polynomial com o conjunto de treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "AiAG4XSPrDy9", + "colab_type": "code", + "outputId": "2c6ea955-7780-45e6-a656-ccc9d73a5040", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "lin_reg_poly = LinearRegression()\n", + "lin_reg_poly.fit(X_poly, y)\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "5Xy5SEAuqBaz" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "3849351d-be10-4909-dab5-d433d530c716", + "id": "ySpZ9RyWqBa0", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "y_pred = lin_reg_poly.predict(X_poly)\n", + "\n", + "y_pred[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[210977.15912637],\n", + " [101264.45016613],\n", + " [231210.99529702],\n", + " [242927.64582841],\n", + " [195940.94028164]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wUrWgrvU0uTq", + "colab_type": "text" + }, + "source": [ + "Avaliando o modelo de regressão linear com a métrica r2:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lETAHBqw0uC5", + "colab_type": "code", + "outputId": "5e6b148c-5b36-47cd-a50c-0169ef1f2082", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "regressor.score(X, y)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.14645648066355865" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "f8hyc24cqBa7" + }, + "source": [ + "Avaliando o modelo de regressão polynomial com a métrica r2:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "056cb5e0-7c27-4758-f3da-32562a9d737a", + "id": "HDXwQ0ddqBa9", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "lin_reg_poly.score(X_poly, y)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.2824360477057858" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "gaRZCCjKqBbC" + }, + "source": [ + "Visualizando os resultados da regressão linear:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "20b55d18-dc2d-46a7-ca33-d5336a6f027f", + "id": "GdApU1gYqBbD", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_linear(X, y, regressor, 'Regressão Linear')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n62UAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "LlX6EwYwqBbG" + }, + "source": [ + "Visualizando os resultados da regressão linear polinomial:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "a8a22b70-a788-4185-f249-733db49e81e9", + "id": "5GKwud8fqBbG", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + } + }, + "source": [ + "plot_results_poly(X, y, lin_reg_poly, poly_reg, 'Regressão Polynomial')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + } + ] +} \ No newline at end of file From a0a2adb38ebde3ecd88fc0d04d8153f309c6b066 Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:06:48 -0300 Subject: [PATCH 08/14] Delete Regressao_Logistica.ipynb --- notebooks/2_semana/Regressao_Logistica.ipynb | 1287 ------------------ 1 file changed, 1287 deletions(-) delete mode 100644 notebooks/2_semana/Regressao_Logistica.ipynb diff --git a/notebooks/2_semana/Regressao_Logistica.ipynb b/notebooks/2_semana/Regressao_Logistica.ipynb deleted file mode 100644 index 81ecf4f..0000000 --- a/notebooks/2_semana/Regressao_Logistica.ipynb +++ /dev/null @@ -1,1287 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Regressao_Logistica.ipynb", - "provenance": [], - "collapsed_sections": [ - "0KkcOxCxjptF", - "8CLZyvMlh_Qj", - "gIqtlsYGmOYq" - ], - "toc_visible": true, - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EB3dPPlgQeVt", - "colab_type": "text" - }, - "source": [ - "#Modelos de Classificação : Regressão Logística" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "0KkcOxCxjptF", - "colab_type": "text" - }, - "source": [ - "### Importando libs e funções" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "k6l8c0olEHpN", - "colab_type": "text" - }, - "source": [ - "Importando libs" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i7FF5Glb_NrK", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "import random\n", - "import numpy as np\n", - "from sklearn.preprocessing import StandardScaler \n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import f1_score\n", - "from matplotlib.colors import ListedColormap\n", - "from sklearn.metrics import confusion_matrix\n", - "\n", - "# Importando libs de visualização de dados\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns; sns.set()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "L7RydZ0qEIl4", - "colab_type": "text" - }, - "source": [ - "Importando funções" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KxneBJZUEIz4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função que calcula os reais positivos\n", - "def rp(tp, fn):\n", - " return tp + fn\n", - "\n", - "# Função que calcula os reais negativos \n", - "def rn(fp, tn):\n", - " return fp + tn\n", - "\n", - "# Função que calcula as predicoes positivas \n", - "def pp(tp, fp):\n", - " return tp + fp\n", - "\n", - "# Função que calcula as predicoes negativas \n", - "def pn(fn, tn):\n", - " return fn + tn\n", - "\n", - "# Função que calcula acurácia do modelo\n", - "def accuracy (tp, fp, fn, tn):\n", - " accuracy = ((tp + tn) / (tp + tn + fp + fn))\n", - " return (accuracy)\n", - " \n", - "# Função que calcula a precisão \n", - "def precision (tp, fp):\n", - " precision = (tp / (tp + fp)) #predições positivas\n", - " return precision\n", - "\n", - "# Função que calcula o recall\n", - "def recall(tp, fn):\n", - " recall = (tp / (tp + fn)) # reais positivos\n", - " return recall\n", - "\n", - "## Função que calcula o f-measure (media harmonica entre precision e recall)\n", - "def f_measure(tp, fp, fn):\n", - " f_measure = (2 * precision(tp, fp) * recall(tp, fn)) / (recall(tp, fn) + precision(tp, fp))\n", - " return f_measure\n", - " \n", - "# Função que calcula o Informedness \n", - "def informedness(tp, fp, fn, tn):\n", - " inform = ((tp/rp(tp, fn)) - (fp/rn(fp, tn)))\n", - " return inform\n", - "\n", - "# Função que calcula o Markedness\n", - "def markdness(tp, fp, fn, tn): \n", - " mark = ((tp/pp(tp,fp)) - (fn/pn(fn,tn)))\n", - " return mark\n", - "\n", - "# Função de escalonamento\n", - "def feature_scaling(data):\n", - " sc = StandardScaler()\n", - " return sc.fit_transform(data)\n", - "\n", - "# Função que gera o gráfico dos resultados de classificação\n", - "def plot_results_class(X, y, classifier, title):\n", - " X_set, y_set = X, y\n", - " X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),\n", - " np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))\n", - " plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),\n", - " alpha = 0.75, cmap = ListedColormap(('red', 'green')))\n", - " plt.xlim(X1.min(), X1.max())\n", - " plt.ylim(X2.min(), X2.max())\n", - " for i, j in enumerate(np.unique(y_set)):\n", - " plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],\n", - " c = ListedColormap(('red', 'green'))(i), label = j)\n", - " plt.title(title)\n", - " plt.xlabel('Idade')\n", - " plt.ylabel('Tarifa')\n", - " plt.legend()\n", - " plt.show()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "8CLZyvMlh_Qj", - "colab_type": "text" - }, - "source": [ - "### Etapa de exploração e tratamento dos dados" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZfESkLx0EjB8", - "colab_type": "text" - }, - "source": [ - "Importando os dados dos passageiros do titanic e selecionando uma amostragem dos dados para uma melhor visualização. O objetivo dessa tarefa de classificação é prever os passageiros sobreviventes com base nas suas informações pessoais.\n", - "\n", - "Fonte: [Kaggle](https://www.kaggle.com/c/titanic/data)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Yq6eIh3NJnuN", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", - "df = df.sample(n=100, random_state=0, replace = True)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "g-LzSHX1Jpg1", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "hpLEK45DJomb", - "colab_type": "code", - "outputId": "6f217547-c6ba-4f14-ae3a-da80b4096355", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 238 - } - }, - "source": [ - "# Exporando o dataset\n", - "df.info()" - ], - "execution_count": 12, - "outputs": [ - { - "output_type": "stream", - "text": [ - "\n", - "Int64Index: 100 entries, 44 to 20\n", - "Data columns (total 8 columns):\n", - "Unnamed: 0 100 non-null int64\n", - "LotArea 100 non-null int64\n", - "PoolArea 100 non-null int64\n", - "GarageArea 100 non-null int64\n", - "OverallCond 100 non-null int64\n", - "YearBuilt 100 non-null int64\n", - "MSZoning 100 non-null object\n", - "SalePrice 100 non-null int64\n", - "dtypes: int64(7), object(1)\n", - "memory usage: 7.0+ KB\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "HQOuXFFIi8OZ", - "colab_type": "code", - "outputId": "d621591a-6226-4107-8eca-39e26ee223c7", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 297 - } - }, - "source": [ - "# Visualizando o sumário das colunas numéricas do dataset\n", - "df.describe()" - ], - "execution_count": 13, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count100.000000100.000000100.0100.000000100.000000100.000000100.000000
mean775.81000010898.0900000.0522.9300005.8900001970.320000199800.560000
std394.2436746259.6402080.0233.0492321.30186331.13829776041.565893
min26.0000001477.0000000.00.0000003.0000001875.00000080000.000000
25%546.7500008381.2500000.0440.0000005.0000001950.000000148375.000000
50%802.00000010760.5000000.0551.0000005.0000001976.000000195000.000000
75%1039.00000012068.7500000.0616.5000007.0000002002.000000235032.000000
max1442.00000046589.0000000.01014.0000009.0000002009.000000437154.000000
\n", - "
" - ], - "text/plain": [ - " Unnamed: 0 LotArea ... YearBuilt SalePrice\n", - "count 100.000000 100.000000 ... 100.000000 100.000000\n", - "mean 775.810000 10898.090000 ... 1970.320000 199800.560000\n", - "std 394.243674 6259.640208 ... 31.138297 76041.565893\n", - "min 26.000000 1477.000000 ... 1875.000000 80000.000000\n", - "25% 546.750000 8381.250000 ... 1950.000000 148375.000000\n", - "50% 802.000000 10760.500000 ... 1976.000000 195000.000000\n", - "75% 1039.000000 12068.750000 ... 2002.000000 235032.000000\n", - "max 1442.000000 46589.000000 ... 2009.000000 437154.000000\n", - "\n", - "[8 rows x 7 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 13 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tgh2pe9lJtr6", - "colab_type": "text" - }, - "source": [ - "Visualizando o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "EvY28fJdJxey", - "colab_type": "code", - "outputId": "fb164251-d4c9-4c14-e780-bde3b35799f8", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
49549603Yousseff, Mr. GeriousmaleNaN00262714.4583NaNC
64864903Willey, Mr. EdwardmaleNaN00S.O./P.P. 7517.5500NaNS
27827903Rice, Master. Ericmale7.04138265229.1250NaNQ
313211Spencer, Mrs. William Augustus (Marie Eugenie)femaleNaN10PC 17569146.5208B78C
25525613Touma, Mrs. Darwis (Hanne Youssef Razi)female29.002265015.2458NaNC
\n", - "
" - ], - "text/plain": [ - " PassengerId Survived Pclass ... Fare Cabin Embarked\n", - "495 496 0 3 ... 14.4583 NaN C\n", - "648 649 0 3 ... 7.5500 NaN S\n", - "278 279 0 3 ... 29.1250 NaN Q\n", - "31 32 1 1 ... 146.5208 B78 C\n", - "255 256 1 3 ... 15.2458 NaN C\n", - "\n", - "[5 rows x 12 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 6 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jiMAqVghJylz", - "colab_type": "text" - }, - "source": [ - "Preenchendo os valores númericos nulos (NA) com a mediana." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KFDodNK4JzlR", - "colab_type": "code", - "outputId": "705d845a-fa8d-4291-9e72-41ce575bf8ee", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "df = df.fillna(df.median())\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
49549603Yousseff, Mr. Geriousmale26.000262714.4583NaNC
64864903Willey, Mr. Edwardmale26.000S.O./P.P. 7517.5500NaNS
27827903Rice, Master. Ericmale7.04138265229.1250NaNQ
313211Spencer, Mrs. William Augustus (Marie Eugenie)female26.010PC 17569146.5208B78C
25525613Touma, Mrs. Darwis (Hanne Youssef Razi)female29.002265015.2458NaNC
\n", - "
" - ], - "text/plain": [ - " PassengerId Survived Pclass ... Fare Cabin Embarked\n", - "495 496 0 3 ... 14.4583 NaN C\n", - "648 649 0 3 ... 7.5500 NaN S\n", - "278 279 0 3 ... 29.1250 NaN Q\n", - "31 32 1 1 ... 146.5208 B78 C\n", - "255 256 1 3 ... 15.2458 NaN C\n", - "\n", - "[5 rows x 12 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 7 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jXWksGyoJ0u3", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis independentes e visualizando as 5 primeiras:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lJ0y3JijJ1ii", - "colab_type": "code", - "outputId": "0187a2d8-9a56-42f8-f315-176ec59a1219", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X = df.iloc[:, [5, 9]].values\n", - "X[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[ 26. , 14.4583],\n", - " [ 26. , 7.55 ],\n", - " [ 7. , 29.125 ],\n", - " [ 26. , 146.5208],\n", - " [ 29. , 15.2458]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 8 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uISYBhKqUqpQ", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis dependentes e visualizando as 5 primeiras:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "okQl0J1SUq9h", - "colab_type": "code", - "outputId": "42cd730b-3886-48a1-e117-54da7663f8db", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "y = df.iloc[:, 1].values\n", - "y[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([0, 0, 0, 1, 1])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 9 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yzJ08rJ4J3CS", - "colab_type": "text" - }, - "source": [ - " Criando os subconjuntos de treinamento e testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "tVz1mTUOJ4Tb", - "colab_type": "code", - "outputId": "c97d6fa7-10ea-4bec-c1d6-a67ad0a0b8c7", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .2, random_state = 42)\n", - "\n", - "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", - "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", - "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Tamanho do Dataset. 100\n", - "Tamanho do Conjunto de Treinamento. 80\n", - "Tamanho do Conjunto de Testes. 20\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OcQtLvcXJ7NT", - "colab_type": "text" - }, - "source": [ - "Normalizando as features e exibindo as 5 primeiras:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "aXvlvQ9DJ7i3", - "colab_type": "code", - "outputId": "1bbd577a-6f18-4d0b-c924-4f4d0baa371e", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X_train = feature_scaling(X_train)\n", - "X_test = feature_scaling(X_test)\n", - "\n", - "X_train[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[-0.2233842 , 0.62589282],\n", - " [ 0.50330481, -0.63776468],\n", - " [ 0.35796701, -0.68999987],\n", - " [-0.0780464 , -0.55753246],\n", - " [-0.58672871, -0.2466326 ]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 11 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jGXuG35WJ_Tj", - "colab_type": "text" - }, - "source": [ - "Treinando o modelo de Árvore de Decisão com o Conjunto de Treinamento" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "gIqtlsYGmOYq" - }, - "source": [ - "### Etapa de Treinamento e Validação do Modelo" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "oF9z-OwymOYs" - }, - "source": [ - "Importando e treinando o modelo com o conjunto de treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "8d5f3b06-3372-42a4-fe53-7affbad191ba", - "id": "G1uuhHzumOYt", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 136 - } - }, - "source": [ - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "classifier = LogisticRegression(random_state = 0)\n", - "classifier.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", - " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", - " multi_class='warn', n_jobs=None, penalty='l2',\n", - " random_state=0, solver='warn', tol=0.0001, verbose=0,\n", - " warm_start=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 12 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "sKGRDMbWmOY1" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "10be0e36-54f6-4530-8378-9c4b2f72ff8e", - "id": "FAvYq8NemOY3", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "y_pred = classifier.predict(X_test)\n", - "\n", - "y_pred" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 13 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "2qVdkDyzmOY_" - }, - "source": [ - "Criando e exibindo os valores da matriz de confusão com o conjunto de testes " - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "412d2fd2-d655-4a5c-c8c0-b906049447ec", - "id": "dzm-N1R7mOZD", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - } - }, - "source": [ - "tn, fp, fn, tp = confusion_matrix(y_test, y_pred).ravel()\n", - "\n", - "confusion_matrix(y_test, y_pred)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[14, 1],\n", - " [ 3, 2]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 14 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "Vl2JrA-cmOZI" - }, - "source": [ - "Visualizando a matriz de confusão" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "b66d506b-fa33-4666-a495-c5587d614bf7", - "id": "o8x_wA2CmOZJ", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 241 - } - }, - "source": [ - "mat = confusion_matrix(y_test, y_pred)\n", - "sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False)\n", - "plt.xlabel('true label')\n", - "plt.ylabel('predicted label');" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "y6TAt9MomOZL" - }, - "source": [ - "Visualizando a métrica de **acurácia** utilizando as funções criadas e a bibilioteca sklearn:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "680fcd92-32f2-4554-b847-0b75b5942e39", - "id": "rMMCqczomOZM", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "accuracy(tp, fp, fn, tn)\n", - "classifier.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.8" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 16 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "rAL1ztqJmOZP" - }, - "source": [ - "Exibindo a medida **f-measure**:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "60cff7ee-505a-4dc2-eb59-73785668ef2f", - "id": "dcg2oWJImOZQ", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "f_measure(tp, fp, fn)\n", - "f1_score(y_test, y_pred) " - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.5" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 17 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "6SG8SzeXmOZS" - }, - "source": [ - "Exibindo os resultados do conjunto de treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "8e82d219-2e85-4201-a88e-b4cbecb69c00", - "id": "_xENnpTxmOZU", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 355 - } - }, - "source": [ - "plot_results_class(X_train, y_train, classifier, 'Regressão Logística (Conj. de Treinamento)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" - ], - "name": "stderr" - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\ncgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "QwmncO8mmOZa" - }, - "source": [ - "Exibindo os resultados do conjunto de testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "62772bbd-82e5-4f3a-fe3c-2f1f92430914", - "id": "tA-DeHAMmOZb", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 355 - } - }, - "source": [ - "plot_results_class(X_test, y_test, classifier, 'Regressão Logística (Conj. de Testes)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" - ], - "name": "stderr" - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - } - ] -} \ No newline at end of file From 6c94e69f38e91512ca2be5e5332c034d3a6ab25d Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:06:55 -0300 Subject: [PATCH 09/14] Delete Regressao_Multipla.ipynb --- notebooks/2_semana/Regressao_Multipla.ipynb | 1219 ------------------- 1 file changed, 1219 deletions(-) delete mode 100644 notebooks/2_semana/Regressao_Multipla.ipynb diff --git a/notebooks/2_semana/Regressao_Multipla.ipynb b/notebooks/2_semana/Regressao_Multipla.ipynb deleted file mode 100644 index 093cfa3..0000000 --- a/notebooks/2_semana/Regressao_Multipla.ipynb +++ /dev/null @@ -1,1219 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Regressao_Multipla.ipynb", - "provenance": [], - "collapsed_sections": [ - "TsV0SiuwpZ7i", - "QaGBc_KwpeVt", - "VUZAwJjMvh0r" - ], - "toc_visible": true, - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EB3dPPlgQeVt", - "colab_type": "text" - }, - "source": [ - "# Modelos de Regressão: Regressão Linear Múltipla" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TsV0SiuwpZ7i", - "colab_type": "text" - }, - "source": [ - "### Importando libs e funções:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "k6l8c0olEHpN", - "colab_type": "text" - }, - "source": [ - "Importando libs" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i7FF5Glb_NrK", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "import random\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from sklearn.preprocessing import StandardScaler \n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import f1_score\n", - "from matplotlib.colors import ListedColormap" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "L7RydZ0qEIl4", - "colab_type": "text" - }, - "source": [ - "Importando funções" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KxneBJZUEIz4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função de escalonamento\n", - "def feature_scaling(data):\n", - " sc = StandardScaler()\n", - " return sc.fit_transform(data)\n", - "\n", - "# Função que gera o gráfico dos resultados de regressão\n", - "def plot_results_linear(X, y, regressor, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, regressor.predict(X), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - "\n", - "# Função que gera o gráfico dos resultados de regerssão polinomial\n", - "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show() \n", - " \n", - "# Função que gera o gráfico dos resultados de arvores\n", - "def plot_results_reg(X, y, regressor, title): \n", - " X_grid = np.arange(min(X), max(X), 0.01)\n", - " X_grid = X_grid.reshape((len(X_grid), 1))\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - " " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QaGBc_KwpeVt", - "colab_type": "text" - }, - "source": [ - "### Etapa de exploração e tratamento dos **dados**" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZfESkLx0EjB8", - "colab_type": "text" - }, - "source": [ - "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", - "\n", - "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Yq6eIh3NJnuN", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", - "\n", - "#Selecionando uma amostragem dos dados para uma melhor visualização\n", - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']]" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "g-LzSHX1Jpg1", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "hpLEK45DJomb", - "colab_type": "code", - "outputId": "bcace5e2-035f-4e8b-ed04-d21036a25367", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 297 - } - }, - "source": [ - "df.describe()" - ], - "execution_count": 5, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea ... YearBuilt SalePrice\n", - "count 60.000000 60.0 ... 60.000000 60.000000\n", - "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", - "std 8099.879028 0.0 ... 30.522618 74910.507145\n", - "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", - "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", - "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", - "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", - "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", - "\n", - "[8 rows x 6 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 5 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tgh2pe9lJtr6", - "colab_type": "text" - }, - "source": [ - "Visualizando o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "EvY28fJdJxey", - "colab_type": "code", - "outputId": "b06300d2-add2-4c00-f192-52a2e732edf8", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "0 8450 0 548 5 2003 RL 208500\n", - "1 9600 0 460 8 1976 RL 181500\n", - "2 11250 0 608 5 2001 RL 223500\n", - "3 9550 0 642 5 1915 RL 140000\n", - "4 14260 0 836 5 2000 RL 250000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 237 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jiMAqVghJylz", - "colab_type": "text" - }, - "source": [ - "Preenchendo os valores númericos nulos (NA) com a mediana." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KFDodNK4JzlR", - "colab_type": "code", - "outputId": "11e16af0-7111-42a8-fa5a-b813693d64df", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = df.fillna(df.median())\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "0 8450 0 548 5 2003 RL 208500\n", - "1 9600 0 460 8 1976 RL 181500\n", - "2 11250 0 608 5 2001 RL 223500\n", - "3 9550 0 642 5 1915 RL 140000\n", - "4 14260 0 836 5 2000 RL 250000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 238 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jXWksGyoJ0u3", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis independentes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lJ0y3JijJ1ii", - "colab_type": "code", - "outputId": "fc0ba041-626e-403f-f36e-a0b3fbfe3415", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", - "X[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[ 8450],\n", - " [ 9600],\n", - " [11250],\n", - " [ 9550],\n", - " [14260]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 239 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uISYBhKqUqpQ", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis dependentes." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "okQl0J1SUq9h", - "colab_type": "code", - "outputId": "d7c38a52-ee55-478a-9f50-af39542fe538", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", - "y[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[208500],\n", - " [181500],\n", - " [223500],\n", - " [140000],\n", - " [250000]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 240 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "VUZAwJjMvh0r" - }, - "source": [ - "### Etapa de Classificação e Validação do Modelo" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZOIXAi6Wvpce", - "colab_type": "text" - }, - "source": [ - "Selecionando as principais features do dataset:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "et8CNkI1vpk2", - "colab_type": "code", - "outputId": "5b82c6a2-0346-4de7-f897-68ec246fd933", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].reindex()\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "0 8450 0 548 5 2003 RL 208500\n", - "1 9600 0 460 8 1976 RL 181500\n", - "2 11250 0 608 5 2001 RL 223500\n", - "3 9550 0 642 5 1915 RL 140000\n", - "4 14260 0 836 5 2000 RL 250000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 241 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZjC2LJYh1SQ6", - "colab_type": "text" - }, - "source": [ - "Exibir os valores distintos da coluna MSZoning. **Segue legenda:**\n", - "FV-Residencial de Vila Flutuante, RH- Residencial de Densidade Alta, RL-Residencial de Densidade Baixa, RM-Residencial de Densidade Média." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "SeWh_rpnYkLd", - "colab_type": "code", - "outputId": "58ec4049-ab3a-4c72-be4c-921620731399", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "df['MSZoning'].unique()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array(['RL', 'RM', 'C (all)', 'FV', 'RH'], dtype=object)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 242 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "eumBvAB8wbq-", - "colab_type": "text" - }, - "source": [ - "Codificando as variáveis Categóricos e evitando a armadilha da variável Dummy. **Obs:** Algumas técnicas de aprendizado de máquina exigem que você elimine uma dimensão da apresentação para evitar a dependência entre as variáveis. Isso pode ser feito através do parâmetro \"drop_first = True\"." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "rjT1ONG7wb9x", - "colab_type": "code", - "outputId": "cd492757-3b55-42bc-feb6-43de14ff9341", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = pd.get_dummies(df , columns = ['MSZoning'], drop_first=True)\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePriceMSZoning_FVMSZoning_RHMSZoning_RLMSZoning_RM
084500548520032085000010
196000460819761815000010
2112500608520012235000010
395500642519151400000010
4142600836520002500000010
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea ... MSZoning_RH MSZoning_RL MSZoning_RM\n", - "0 8450 0 548 ... 0 1 0\n", - "1 9600 0 460 ... 0 1 0\n", - "2 11250 0 608 ... 0 1 0\n", - "3 9550 0 642 ... 0 1 0\n", - "4 14260 0 836 ... 0 1 0\n", - "\n", - "[5 rows x 10 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 243 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "i9fs5x8MvpxV", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis indepedentes e dependentes e dividindo o dataset em conjunto de treinamento e testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "b9uRFW2vvp6b", - "colab_type": "code", - "colab": {} - }, - "source": [ - "X = df[df.columns[~df.columns.isin(['SalePrice'])]].values\n", - "y = df['SalePrice'].values.reshape(-1,1)\n", - "\n", - "# Dividindo os dados\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OcQtLvcXJ7NT", - "colab_type": "text" - }, - "source": [ - "Normalizando as features " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "aXvlvQ9DJ7i3", - "colab_type": "code", - "outputId": "8fa737f1-578b-4644-de0f-b1ee66fcc7d0", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 187 - } - }, - "source": [ - "X_train = feature_scaling(X_train)\n", - "X_test = feature_scaling(X_test)\n", - "\n", - "X_train[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[-0.21289571, -0.07099284, -0.86383727, 0.3722173 , -0.45546896,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.26524463, -0.07099284, -0.45626397, 1.26860866, 0.71860895,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.17784146, -0.07099284, -2.25716927, 1.26860866, -1.98829291,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.32447422, -0.07099284, -1.11975539, 1.26860866, -1.10773447,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.52903482, -0.07099284, -0.79748813, 0.3722173 , -1.53170705,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 245 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "SMaN0iHNvh0t" - }, - "source": [ - "Importando e treinando o modelo de Regressao Linear Multipla com o Conjunto de Treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "0ce99d9c-c744-4034-fec4-7cdc01565225", - "id": "VuzaRxyuvh0u", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "\n", - "regressor = LinearRegression()\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 246 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "zT6PUXkWvh0y" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "1da72340-52a8-4022-a2e5-363eb7f76251", - "id": "JR-E180Fvh0y", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "y_pred = regressor.predict(X_test)\n", - "\n", - "y_pred[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[162102.94940288],\n", - " [241746.81922749],\n", - " [119733.72469521],\n", - " [147800.757112 ],\n", - " [285853.71056469]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 247 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "PO6sGI3Gvh01" - }, - "source": [ - "Avaliando o modelo com a métrica r2" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "6f12ba33-16a7-4559-de51-fb0201398258", - "id": "fQPgnd8dvh02", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "regressor.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.5043465841755175" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 248 - } - ] - } - ] -} \ No newline at end of file From 34b07b31c82e5f3a1368dc4b3ed93848bb3caad3 Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:07:01 -0300 Subject: [PATCH 10/14] =?UTF-8?q?Delete=20Regress=C3=A3o=5FPolynomial.ipyn?= =?UTF-8?q?b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Regress\303\243o_Polynomial.ipynb" | 1087 ----------------- 1 file changed, 1087 deletions(-) delete mode 100644 "notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" diff --git "a/notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" "b/notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" deleted file mode 100644 index 8e0d84d..0000000 --- "a/notebooks/2_semana/Regress\303\243o_Polynomial.ipynb" +++ /dev/null @@ -1,1087 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Regressão_Polynomial.ipynb", - "provenance": [], - "collapsed_sections": [ - "TsV0SiuwpZ7i", - "QaGBc_KwpeVt", - "hDpjk2hPqBar" - ], - "toc_visible": true, - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EB3dPPlgQeVt", - "colab_type": "text" - }, - "source": [ - "# Modelos de Regressão: Regressão Polynomial" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TsV0SiuwpZ7i", - "colab_type": "text" - }, - "source": [ - "### Importando libs e funções:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "k6l8c0olEHpN", - "colab_type": "text" - }, - "source": [ - "Importando libs" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i7FF5Glb_NrK", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "import random\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from sklearn.preprocessing import StandardScaler \n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import f1_score\n", - "from matplotlib.colors import ListedColormap" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "L7RydZ0qEIl4", - "colab_type": "text" - }, - "source": [ - "Importando funções" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KxneBJZUEIz4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função de escalonamento\n", - "def feature_scaling(data):\n", - " sc = StandardScaler()\n", - " return sc.fit_transform(data)\n", - "\n", - "# Função que gera o gráfico dos resultados de regressão\n", - "def plot_results_linear(X, y, regressor, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, regressor.predict(X), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - "\n", - "# Função que gera o gráfico dos resultados de regerssão polinomial\n", - "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show() \n", - " \n", - "# Função que gera o gráfico dos resultados de arvores\n", - "def plot_results_reg(X, y, regressor, title): \n", - " X_grid = np.arange(min(X), max(X), 0.01)\n", - " X_grid = X_grid.reshape((len(X_grid), 1))\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - " " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QaGBc_KwpeVt", - "colab_type": "text" - }, - "source": [ - "### Etapa de exploração e tratamento dos **dados**" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZfESkLx0EjB8", - "colab_type": "text" - }, - "source": [ - "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", - "\n", - "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Yq6eIh3NJnuN", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", - "\n", - "#Selecionando uma amostragem dos dados para uma melhor visualização\n", - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].sample(n=60, random_state=0, weights = 'SalePrice')" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "g-LzSHX1Jpg1", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "hpLEK45DJomb", - "colab_type": "code", - "outputId": "68b7c2d6-e1ce-4fbd-fcce-e66c30090c23", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 297 - } - }, - "source": [ - "df.describe()" - ], - "execution_count": 4, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea ... YearBuilt SalePrice\n", - "count 60.000000 60.0 ... 60.000000 60.000000\n", - "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", - "std 8099.879028 0.0 ... 30.522618 74910.507145\n", - "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", - "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", - "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", - "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", - "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", - "\n", - "[8 rows x 6 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 4 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tgh2pe9lJtr6", - "colab_type": "text" - }, - "source": [ - "Visualizando o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "EvY28fJdJxey", - "colab_type": "code", - "outputId": "a128e029-1ad2-43e2-f720-98f9f3cd5670", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "789 12205 0 444 8 1966 RL 187500\n", - "1039 1477 0 286 4 1970 RM 80000\n", - "868 14762 0 672 6 1948 RL 169000\n", - "782 16285 0 605 5 2001 RL 187100\n", - "611 10395 0 564 6 1978 RL 148000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 5 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jiMAqVghJylz", - "colab_type": "text" - }, - "source": [ - "Preenchendo os valores númericos nulos (NA) com a mediana." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KFDodNK4JzlR", - "colab_type": "code", - "outputId": "10db24ec-8525-476b-d43b-0ea991658a50", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "df = df.fillna(df.median())\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
78912205044481966RL187500
10391477028641970RM80000
86814762067261948RL169000
78216285060552001RL187100
61110395056461978RL148000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "789 12205 0 444 8 1966 RL 187500\n", - "1039 1477 0 286 4 1970 RM 80000\n", - "868 14762 0 672 6 1948 RL 169000\n", - "782 16285 0 605 5 2001 RL 187100\n", - "611 10395 0 564 6 1978 RL 148000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 6 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jXWksGyoJ0u3", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis independentes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lJ0y3JijJ1ii", - "colab_type": "code", - "outputId": "77cc56c0-93f3-4e2b-f18f-a891e73ccd0d", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", - "X[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[12205],\n", - " [ 1477],\n", - " [14762],\n", - " [16285],\n", - " [10395]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 7 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uISYBhKqUqpQ", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis dependentes." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "okQl0J1SUq9h", - "colab_type": "code", - "outputId": "24fde24a-67e1-4cc1-e510-cf6b82248f43", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", - "y[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[187500],\n", - " [ 80000],\n", - " [169000],\n", - " [187100],\n", - " [148000]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 8 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yzJ08rJ4J3CS", - "colab_type": "text" - }, - "source": [ - " Criando os subconjuntos de treinamento e testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "tVz1mTUOJ4Tb", - "colab_type": "code", - "outputId": "e6abb0df-30fc-4bf8-9248-002ebcaa7ec9", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)\n", - "\n", - "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", - "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", - "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Tamanho do Dataset. 60\n", - "Tamanho do Conjunto de Treinamento. 48\n", - "Tamanho do Conjunto de Testes. 12\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OcQtLvcXJ7NT", - "colab_type": "text" - }, - "source": [ - "Normalizando as features " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "aXvlvQ9DJ7i3", - "colab_type": "code", - "colab": {} - }, - "source": [ - "#X_train = feature_scaling(X_train)\n", - "#X_test = feature_scaling(X_test)\n", - "\n", - "#X_train[:5]" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "hDpjk2hPqBar" - }, - "source": [ - "### Etapa de Treinamento e Validação do Modelo" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "5ZQOFczoqBat" - }, - "source": [ - "Importando e treinando o modelo de Regressao Linear com o Conjunto de Treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "84f2ff8a-ab60-4eda-a181-7505c2771d27", - "id": "TARpu6xZqBat", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "\n", - "regressor = LinearRegression()\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 13 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "SAyttRhcqsz_", - "colab_type": "text" - }, - "source": [ - "Transformando as features na quarta ordem polinomial:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "OZyCBmL2qs-X", - "colab_type": "code", - "outputId": "a171e5f2-8798-4ae4-ae51-f25c6094ac5a", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - } - }, - "source": [ - "from sklearn.preprocessing import PolynomialFeatures\n", - "\n", - "poly_reg = PolynomialFeatures(degree = 4)\n", - "X_poly = poly_reg.fit_transform(X)\n", - "poly_reg.fit(X_poly, y)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "PolynomialFeatures(degree=4, include_bias=True, interaction_only=False,\n", - " order='C')" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 14 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "92IzIbgrrDdG", - "colab_type": "text" - }, - "source": [ - "Treinando o modelo de regressão polynomial com o conjunto de treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "AiAG4XSPrDy9", - "colab_type": "code", - "outputId": "2c6ea955-7780-45e6-a656-ccc9d73a5040", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "lin_reg_poly = LinearRegression()\n", - "lin_reg_poly.fit(X_poly, y)\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 15 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "5Xy5SEAuqBaz" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "3849351d-be10-4909-dab5-d433d530c716", - "id": "ySpZ9RyWqBa0", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "y_pred = lin_reg_poly.predict(X_poly)\n", - "\n", - "y_pred[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[210977.15912637],\n", - " [101264.45016613],\n", - " [231210.99529702],\n", - " [242927.64582841],\n", - " [195940.94028164]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 16 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "wUrWgrvU0uTq", - "colab_type": "text" - }, - "source": [ - "Avaliando o modelo de regressão linear com a métrica r2:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lETAHBqw0uC5", - "colab_type": "code", - "outputId": "5e6b148c-5b36-47cd-a50c-0169ef1f2082", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "regressor.score(X, y)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.14645648066355865" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 17 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "f8hyc24cqBa7" - }, - "source": [ - "Avaliando o modelo de regressão polynomial com a métrica r2:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "056cb5e0-7c27-4758-f3da-32562a9d737a", - "id": "HDXwQ0ddqBa9", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "lin_reg_poly.score(X_poly, y)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.2824360477057858" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 18 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "gaRZCCjKqBbC" - }, - "source": [ - "Visualizando os resultados da regressão linear:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "20b55d18-dc2d-46a7-ca33-d5336a6f027f", - "id": "GdApU1gYqBbD", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_linear(X, y, regressor, 'Regressão Linear')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n62UAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "LlX6EwYwqBbG" - }, - "source": [ - "Visualizando os resultados da regressão linear polinomial:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "a8a22b70-a788-4185-f249-733db49e81e9", - "id": "5GKwud8fqBbG", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } - }, - "source": [ - "plot_results_poly(X, y, lin_reg_poly, poly_reg, 'Regressão Polynomial')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - } - ] -} \ No newline at end of file From 3027a3e62b06590c5d1cdce68cce93c8879c8c6f Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:07:41 -0300 Subject: [PATCH 11/14] Created using Colaboratory --- notebooks/2_semana/Regressao_Multipla.ipynb | 1219 +++++++++++++++++++ 1 file changed, 1219 insertions(+) create mode 100644 notebooks/2_semana/Regressao_Multipla.ipynb diff --git a/notebooks/2_semana/Regressao_Multipla.ipynb b/notebooks/2_semana/Regressao_Multipla.ipynb new file mode 100644 index 0000000..093cfa3 --- /dev/null +++ b/notebooks/2_semana/Regressao_Multipla.ipynb @@ -0,0 +1,1219 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Regressao_Multipla.ipynb", + "provenance": [], + "collapsed_sections": [ + "TsV0SiuwpZ7i", + "QaGBc_KwpeVt", + "VUZAwJjMvh0r" + ], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EB3dPPlgQeVt", + "colab_type": "text" + }, + "source": [ + "# Modelos de Regressão: Regressão Linear Múltipla" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TsV0SiuwpZ7i", + "colab_type": "text" + }, + "source": [ + "### Importando libs e funções:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k6l8c0olEHpN", + "colab_type": "text" + }, + "source": [ + "Importando libs" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i7FF5Glb_NrK", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import random\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.preprocessing import StandardScaler \n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import f1_score\n", + "from matplotlib.colors import ListedColormap" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L7RydZ0qEIl4", + "colab_type": "text" + }, + "source": [ + "Importando funções" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KxneBJZUEIz4", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função de escalonamento\n", + "def feature_scaling(data):\n", + " sc = StandardScaler()\n", + " return sc.fit_transform(data)\n", + "\n", + "# Função que gera o gráfico dos resultados de regressão\n", + "def plot_results_linear(X, y, regressor, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, regressor.predict(X), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + "\n", + "# Função que gera o gráfico dos resultados de regerssão polinomial\n", + "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show() \n", + " \n", + "# Função que gera o gráfico dos resultados de arvores\n", + "def plot_results_reg(X, y, regressor, title): \n", + " X_grid = np.arange(min(X), max(X), 0.01)\n", + " X_grid = X_grid.reshape((len(X_grid), 1))\n", + " plt.scatter(X, y, color = 'red')\n", + " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", + " plt.title(title)\n", + " plt.xlabel('Tamanho do Lote')\n", + " plt.ylabel('Preço de Vendas')\n", + " plt.show()\n", + " " + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QaGBc_KwpeVt", + "colab_type": "text" + }, + "source": [ + "### Etapa de exploração e tratamento dos **dados**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZfESkLx0EjB8", + "colab_type": "text" + }, + "source": [ + "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", + "\n", + "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yq6eIh3NJnuN", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", + "\n", + "#Selecionando uma amostragem dos dados para uma melhor visualização\n", + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']]" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g-LzSHX1Jpg1", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hpLEK45DJomb", + "colab_type": "code", + "outputId": "bcace5e2-035f-4e8b-ed04-d21036a25367", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + } + }, + "source": [ + "df.describe()" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea ... YearBuilt SalePrice\n", + "count 60.000000 60.0 ... 60.000000 60.000000\n", + "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", + "std 8099.879028 0.0 ... 30.522618 74910.507145\n", + "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", + "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", + "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", + "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", + "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", + "\n", + "[8 rows x 6 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 5 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tgh2pe9lJtr6", + "colab_type": "text" + }, + "source": [ + "Visualizando o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EvY28fJdJxey", + "colab_type": "code", + "outputId": "b06300d2-add2-4c00-f192-52a2e732edf8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "0 8450 0 548 5 2003 RL 208500\n", + "1 9600 0 460 8 1976 RL 181500\n", + "2 11250 0 608 5 2001 RL 223500\n", + "3 9550 0 642 5 1915 RL 140000\n", + "4 14260 0 836 5 2000 RL 250000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 237 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jiMAqVghJylz", + "colab_type": "text" + }, + "source": [ + "Preenchendo os valores númericos nulos (NA) com a mediana." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KFDodNK4JzlR", + "colab_type": "code", + "outputId": "11e16af0-7111-42a8-fa5a-b813693d64df", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = df.fillna(df.median())\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "0 8450 0 548 5 2003 RL 208500\n", + "1 9600 0 460 8 1976 RL 181500\n", + "2 11250 0 608 5 2001 RL 223500\n", + "3 9550 0 642 5 1915 RL 140000\n", + "4 14260 0 836 5 2000 RL 250000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 238 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jXWksGyoJ0u3", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis independentes" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lJ0y3JijJ1ii", + "colab_type": "code", + "outputId": "fc0ba041-626e-403f-f36e-a0b3fbfe3415", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", + "X[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 8450],\n", + " [ 9600],\n", + " [11250],\n", + " [ 9550],\n", + " [14260]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 239 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uISYBhKqUqpQ", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis dependentes." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "okQl0J1SUq9h", + "colab_type": "code", + "outputId": "d7c38a52-ee55-478a-9f50-af39542fe538", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", + "y[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[208500],\n", + " [181500],\n", + " [223500],\n", + " [140000],\n", + " [250000]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 240 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "VUZAwJjMvh0r" + }, + "source": [ + "### Etapa de Classificação e Validação do Modelo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZOIXAi6Wvpce", + "colab_type": "text" + }, + "source": [ + "Selecionando as principais features do dataset:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "et8CNkI1vpk2", + "colab_type": "code", + "outputId": "5b82c6a2-0346-4de7-f897-68ec246fd933", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].reindex()\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", + "0 8450 0 548 5 2003 RL 208500\n", + "1 9600 0 460 8 1976 RL 181500\n", + "2 11250 0 608 5 2001 RL 223500\n", + "3 9550 0 642 5 1915 RL 140000\n", + "4 14260 0 836 5 2000 RL 250000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 241 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZjC2LJYh1SQ6", + "colab_type": "text" + }, + "source": [ + "Exibir os valores distintos da coluna MSZoning. **Segue legenda:**\n", + "FV-Residencial de Vila Flutuante, RH- Residencial de Densidade Alta, RL-Residencial de Densidade Baixa, RM-Residencial de Densidade Média." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SeWh_rpnYkLd", + "colab_type": "code", + "outputId": "58ec4049-ab3a-4c72-be4c-921620731399", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "df['MSZoning'].unique()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array(['RL', 'RM', 'C (all)', 'FV', 'RH'], dtype=object)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 242 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eumBvAB8wbq-", + "colab_type": "text" + }, + "source": [ + "Codificando as variáveis Categóricos e evitando a armadilha da variável Dummy. **Obs:** Algumas técnicas de aprendizado de máquina exigem que você elimine uma dimensão da apresentação para evitar a dependência entre as variáveis. Isso pode ser feito através do parâmetro \"drop_first = True\"." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "rjT1ONG7wb9x", + "colab_type": "code", + "outputId": "cd492757-3b55-42bc-feb6-43de14ff9341", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = pd.get_dummies(df , columns = ['MSZoning'], drop_first=True)\n", + "\n", + "df.head(5)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePriceMSZoning_FVMSZoning_RHMSZoning_RLMSZoning_RM
084500548520032085000010
196000460819761815000010
2112500608520012235000010
395500642519151400000010
4142600836520002500000010
\n", + "
" + ], + "text/plain": [ + " LotArea PoolArea GarageArea ... MSZoning_RH MSZoning_RL MSZoning_RM\n", + "0 8450 0 548 ... 0 1 0\n", + "1 9600 0 460 ... 0 1 0\n", + "2 11250 0 608 ... 0 1 0\n", + "3 9550 0 642 ... 0 1 0\n", + "4 14260 0 836 ... 0 1 0\n", + "\n", + "[5 rows x 10 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 243 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "i9fs5x8MvpxV", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis indepedentes e dependentes e dividindo o dataset em conjunto de treinamento e testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "b9uRFW2vvp6b", + "colab_type": "code", + "colab": {} + }, + "source": [ + "X = df[df.columns[~df.columns.isin(['SalePrice'])]].values\n", + "y = df['SalePrice'].values.reshape(-1,1)\n", + "\n", + "# Dividindo os dados\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OcQtLvcXJ7NT", + "colab_type": "text" + }, + "source": [ + "Normalizando as features " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aXvlvQ9DJ7i3", + "colab_type": "code", + "outputId": "8fa737f1-578b-4644-de0f-b1ee66fcc7d0", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 187 + } + }, + "source": [ + "X_train = feature_scaling(X_train)\n", + "X_test = feature_scaling(X_test)\n", + "\n", + "X_train[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[-0.21289571, -0.07099284, -0.86383727, 0.3722173 , -0.45546896,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.26524463, -0.07099284, -0.45626397, 1.26860866, 0.71860895,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.17784146, -0.07099284, -2.25716927, 1.26860866, -1.98829291,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.32447422, -0.07099284, -1.11975539, 1.26860866, -1.10773447,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", + " [-0.52903482, -0.07099284, -0.79748813, 0.3722173 , -1.53170705,\n", + " -0.21802209, -0.11405937, 0.5138767 , -0.41556078]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 245 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "SMaN0iHNvh0t" + }, + "source": [ + "Importando e treinando o modelo de Regressao Linear Multipla com o Conjunto de Treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "0ce99d9c-c744-4034-fec4-7cdc01565225", + "id": "VuzaRxyuvh0u", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "\n", + "regressor = LinearRegression()\n", + "regressor.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 246 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "zT6PUXkWvh0y" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "1da72340-52a8-4022-a2e5-363eb7f76251", + "id": "JR-E180Fvh0y", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 102 + } + }, + "source": [ + "y_pred = regressor.predict(X_test)\n", + "\n", + "y_pred[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[162102.94940288],\n", + " [241746.81922749],\n", + " [119733.72469521],\n", + " [147800.757112 ],\n", + " [285853.71056469]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 247 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "PO6sGI3Gvh01" + }, + "source": [ + "Avaliando o modelo com a métrica r2" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "6f12ba33-16a7-4559-de51-fb0201398258", + "id": "fQPgnd8dvh02", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "regressor.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5043465841755175" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 248 + } + ] + } + ] +} \ No newline at end of file From 0836363af15d3257360c6e678c440d720d55bca1 Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:07:49 -0300 Subject: [PATCH 12/14] Delete Regressao_Multipla.ipynb --- notebooks/2_semana/Regressao_Multipla.ipynb | 1219 ------------------- 1 file changed, 1219 deletions(-) delete mode 100644 notebooks/2_semana/Regressao_Multipla.ipynb diff --git a/notebooks/2_semana/Regressao_Multipla.ipynb b/notebooks/2_semana/Regressao_Multipla.ipynb deleted file mode 100644 index 093cfa3..0000000 --- a/notebooks/2_semana/Regressao_Multipla.ipynb +++ /dev/null @@ -1,1219 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Regressao_Multipla.ipynb", - "provenance": [], - "collapsed_sections": [ - "TsV0SiuwpZ7i", - "QaGBc_KwpeVt", - "VUZAwJjMvh0r" - ], - "toc_visible": true, - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EB3dPPlgQeVt", - "colab_type": "text" - }, - "source": [ - "# Modelos de Regressão: Regressão Linear Múltipla" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "TsV0SiuwpZ7i", - "colab_type": "text" - }, - "source": [ - "### Importando libs e funções:" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "k6l8c0olEHpN", - "colab_type": "text" - }, - "source": [ - "Importando libs" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i7FF5Glb_NrK", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "import random\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from sklearn.preprocessing import StandardScaler \n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import f1_score\n", - "from matplotlib.colors import ListedColormap" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "L7RydZ0qEIl4", - "colab_type": "text" - }, - "source": [ - "Importando funções" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KxneBJZUEIz4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função de escalonamento\n", - "def feature_scaling(data):\n", - " sc = StandardScaler()\n", - " return sc.fit_transform(data)\n", - "\n", - "# Função que gera o gráfico dos resultados de regressão\n", - "def plot_results_linear(X, y, regressor, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, regressor.predict(X), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - "\n", - "# Função que gera o gráfico dos resultados de regerssão polinomial\n", - "def plot_results_poly(X, y, lin_reg_poly, poly_reg, title):\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X, lin_reg_poly.predict(poly_reg.fit_transform(X)), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show() \n", - " \n", - "# Função que gera o gráfico dos resultados de arvores\n", - "def plot_results_reg(X, y, regressor, title): \n", - " X_grid = np.arange(min(X), max(X), 0.01)\n", - " X_grid = X_grid.reshape((len(X_grid), 1))\n", - " plt.scatter(X, y, color = 'red')\n", - " plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')\n", - " plt.title(title)\n", - " plt.xlabel('Tamanho do Lote')\n", - " plt.ylabel('Preço de Vendas')\n", - " plt.show()\n", - " " - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QaGBc_KwpeVt", - "colab_type": "text" - }, - "source": [ - "### Etapa de exploração e tratamento dos **dados**" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZfESkLx0EjB8", - "colab_type": "text" - }, - "source": [ - "Importando o dataset do nosso estudo. O objetivo dos modelos de regressão será de predizer o preço das casas de acordo com diferentes caracteristicas como: localização, área, etc.\n", - "\n", - "Fonte: [Kaggle](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Yq6eIh3NJnuN", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", - "\n", - "#Selecionando uma amostragem dos dados para uma melhor visualização\n", - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']]" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "g-LzSHX1Jpg1", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "hpLEK45DJomb", - "colab_type": "code", - "outputId": "bcace5e2-035f-4e8b-ed04-d21036a25367", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 297 - } - }, - "source": [ - "df.describe()" - ], - "execution_count": 5, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count60.00000060.060.00000060.00000060.00000060.000000
mean11633.9333330.0504.6833335.7833331972.116667197536.150000
std8099.8790280.0222.4275541.18022830.52261874910.507145
min1477.0000000.00.0000003.0000001875.00000080000.000000
25%8068.5000000.0440.0000005.0000001950.750000142250.000000
50%10510.0000000.0542.0000005.0000001976.500000188750.000000
75%12010.7500000.0607.2500007.0000002002.000000235032.000000
max53227.0000000.01014.0000009.0000002009.000000437154.000000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea ... YearBuilt SalePrice\n", - "count 60.000000 60.0 ... 60.000000 60.000000\n", - "mean 11633.933333 0.0 ... 1972.116667 197536.150000\n", - "std 8099.879028 0.0 ... 30.522618 74910.507145\n", - "min 1477.000000 0.0 ... 1875.000000 80000.000000\n", - "25% 8068.500000 0.0 ... 1950.750000 142250.000000\n", - "50% 10510.000000 0.0 ... 1976.500000 188750.000000\n", - "75% 12010.750000 0.0 ... 2002.000000 235032.000000\n", - "max 53227.000000 0.0 ... 2009.000000 437154.000000\n", - "\n", - "[8 rows x 6 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 5 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tgh2pe9lJtr6", - "colab_type": "text" - }, - "source": [ - "Visualizando o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "EvY28fJdJxey", - "colab_type": "code", - "outputId": "b06300d2-add2-4c00-f192-52a2e732edf8", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "0 8450 0 548 5 2003 RL 208500\n", - "1 9600 0 460 8 1976 RL 181500\n", - "2 11250 0 608 5 2001 RL 223500\n", - "3 9550 0 642 5 1915 RL 140000\n", - "4 14260 0 836 5 2000 RL 250000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 237 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jiMAqVghJylz", - "colab_type": "text" - }, - "source": [ - "Preenchendo os valores númericos nulos (NA) com a mediana." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KFDodNK4JzlR", - "colab_type": "code", - "outputId": "11e16af0-7111-42a8-fa5a-b813693d64df", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = df.fillna(df.median())\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "0 8450 0 548 5 2003 RL 208500\n", - "1 9600 0 460 8 1976 RL 181500\n", - "2 11250 0 608 5 2001 RL 223500\n", - "3 9550 0 642 5 1915 RL 140000\n", - "4 14260 0 836 5 2000 RL 250000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 238 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jXWksGyoJ0u3", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis independentes" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lJ0y3JijJ1ii", - "colab_type": "code", - "outputId": "fc0ba041-626e-403f-f36e-a0b3fbfe3415", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "X = df.loc[:, 'LotArea'].values.reshape(-1,1)\n", - "X[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[ 8450],\n", - " [ 9600],\n", - " [11250],\n", - " [ 9550],\n", - " [14260]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 239 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uISYBhKqUqpQ", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis dependentes." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "okQl0J1SUq9h", - "colab_type": "code", - "outputId": "d7c38a52-ee55-478a-9f50-af39542fe538", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "y = df.loc[:, 'SalePrice'].values.reshape(-1,1)\n", - "y[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[208500],\n", - " [181500],\n", - " [223500],\n", - " [140000],\n", - " [250000]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 240 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "VUZAwJjMvh0r" - }, - "source": [ - "### Etapa de Classificação e Validação do Modelo" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZOIXAi6Wvpce", - "colab_type": "text" - }, - "source": [ - "Selecionando as principais features do dataset:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "et8CNkI1vpk2", - "colab_type": "code", - "outputId": "5b82c6a2-0346-4de7-f897-68ec246fd933", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']].reindex()\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
08450054852003RL208500
19600046081976RL181500
211250060852001RL223500
39550064251915RL140000
414260083652000RL250000
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea OverallCond YearBuilt MSZoning SalePrice\n", - "0 8450 0 548 5 2003 RL 208500\n", - "1 9600 0 460 8 1976 RL 181500\n", - "2 11250 0 608 5 2001 RL 223500\n", - "3 9550 0 642 5 1915 RL 140000\n", - "4 14260 0 836 5 2000 RL 250000" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 241 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZjC2LJYh1SQ6", - "colab_type": "text" - }, - "source": [ - "Exibir os valores distintos da coluna MSZoning. **Segue legenda:**\n", - "FV-Residencial de Vila Flutuante, RH- Residencial de Densidade Alta, RL-Residencial de Densidade Baixa, RM-Residencial de Densidade Média." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "SeWh_rpnYkLd", - "colab_type": "code", - "outputId": "58ec4049-ab3a-4c72-be4c-921620731399", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "df['MSZoning'].unique()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array(['RL', 'RM', 'C (all)', 'FV', 'RH'], dtype=object)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 242 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "eumBvAB8wbq-", - "colab_type": "text" - }, - "source": [ - "Codificando as variáveis Categóricos e evitando a armadilha da variável Dummy. **Obs:** Algumas técnicas de aprendizado de máquina exigem que você elimine uma dimensão da apresentação para evitar a dependência entre as variáveis. Isso pode ser feito através do parâmetro \"drop_first = True\"." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "rjT1ONG7wb9x", - "colab_type": "code", - "outputId": "cd492757-3b55-42bc-feb6-43de14ff9341", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = pd.get_dummies(df , columns = ['MSZoning'], drop_first=True)\n", - "\n", - "df.head(5)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePriceMSZoning_FVMSZoning_RHMSZoning_RLMSZoning_RM
084500548520032085000010
196000460819761815000010
2112500608520012235000010
395500642519151400000010
4142600836520002500000010
\n", - "
" - ], - "text/plain": [ - " LotArea PoolArea GarageArea ... MSZoning_RH MSZoning_RL MSZoning_RM\n", - "0 8450 0 548 ... 0 1 0\n", - "1 9600 0 460 ... 0 1 0\n", - "2 11250 0 608 ... 0 1 0\n", - "3 9550 0 642 ... 0 1 0\n", - "4 14260 0 836 ... 0 1 0\n", - "\n", - "[5 rows x 10 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 243 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "i9fs5x8MvpxV", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis indepedentes e dependentes e dividindo o dataset em conjunto de treinamento e testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "b9uRFW2vvp6b", - "colab_type": "code", - "colab": {} - }, - "source": [ - "X = df[df.columns[~df.columns.isin(['SalePrice'])]].values\n", - "y = df['SalePrice'].values.reshape(-1,1)\n", - "\n", - "# Dividindo os dados\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OcQtLvcXJ7NT", - "colab_type": "text" - }, - "source": [ - "Normalizando as features " - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "aXvlvQ9DJ7i3", - "colab_type": "code", - "outputId": "8fa737f1-578b-4644-de0f-b1ee66fcc7d0", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 187 - } - }, - "source": [ - "X_train = feature_scaling(X_train)\n", - "X_test = feature_scaling(X_test)\n", - "\n", - "X_train[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[-0.21289571, -0.07099284, -0.86383727, 0.3722173 , -0.45546896,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.26524463, -0.07099284, -0.45626397, 1.26860866, 0.71860895,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.17784146, -0.07099284, -2.25716927, 1.26860866, -1.98829291,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.32447422, -0.07099284, -1.11975539, 1.26860866, -1.10773447,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078],\n", - " [-0.52903482, -0.07099284, -0.79748813, 0.3722173 , -1.53170705,\n", - " -0.21802209, -0.11405937, 0.5138767 , -0.41556078]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 245 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "SMaN0iHNvh0t" - }, - "source": [ - "Importando e treinando o modelo de Regressao Linear Multipla com o Conjunto de Treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "0ce99d9c-c744-4034-fec4-7cdc01565225", - "id": "VuzaRxyuvh0u", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "\n", - "regressor = LinearRegression()\n", - "regressor.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 246 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "zT6PUXkWvh0y" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "1da72340-52a8-4022-a2e5-363eb7f76251", - "id": "JR-E180Fvh0y", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 102 - } - }, - "source": [ - "y_pred = regressor.predict(X_test)\n", - "\n", - "y_pred[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[162102.94940288],\n", - " [241746.81922749],\n", - " [119733.72469521],\n", - " [147800.757112 ],\n", - " [285853.71056469]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 247 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "PO6sGI3Gvh01" - }, - "source": [ - "Avaliando o modelo com a métrica r2" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "6f12ba33-16a7-4559-de51-fb0201398258", - "id": "fQPgnd8dvh02", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "regressor.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.5043465841755175" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 248 - } - ] - } - ] -} \ No newline at end of file From b65dd2ea051c2e04c055a7939417f6f02e24e9ea Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:21:23 -0300 Subject: [PATCH 13/14] Created using Colaboratory --- notebooks/1_semana/Regressao_Logistica.ipynb | 1242 ++++++++++++++++++ 1 file changed, 1242 insertions(+) create mode 100644 notebooks/1_semana/Regressao_Logistica.ipynb diff --git a/notebooks/1_semana/Regressao_Logistica.ipynb b/notebooks/1_semana/Regressao_Logistica.ipynb new file mode 100644 index 0000000..3e93dd1 --- /dev/null +++ b/notebooks/1_semana/Regressao_Logistica.ipynb @@ -0,0 +1,1242 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Regressao_Logistica.ipynb", + "provenance": [], + "collapsed_sections": [ + "0KkcOxCxjptF", + "gIqtlsYGmOYq" + ], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EB3dPPlgQeVt", + "colab_type": "text" + }, + "source": [ + "#Modelos de Classificação : Regressão Logística" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0KkcOxCxjptF", + "colab_type": "text" + }, + "source": [ + "### Importando libs e funções" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k6l8c0olEHpN", + "colab_type": "text" + }, + "source": [ + "Importando libs" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "i7FF5Glb_NrK", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import random\n", + "import numpy as np\n", + "from sklearn.preprocessing import StandardScaler \n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import f1_score\n", + "from matplotlib.colors import ListedColormap\n", + "from sklearn.metrics import confusion_matrix\n", + "\n", + "# Importando libs de visualização de dados\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns; sns.set()" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L7RydZ0qEIl4", + "colab_type": "text" + }, + "source": [ + "Importando funções" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KxneBJZUEIz4", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Função que calcula os reais positivos\n", + "def rp(tp, fn):\n", + " return tp + fn\n", + "\n", + "# Função que calcula os reais negativos \n", + "def rn(fp, tn):\n", + " return fp + tn\n", + "\n", + "# Função que calcula as predicoes positivas \n", + "def pp(tp, fp):\n", + " return tp + fp\n", + "\n", + "# Função que calcula as predicoes negativas \n", + "def pn(fn, tn):\n", + " return fn + tn\n", + "\n", + "# Função que calcula acurácia do modelo\n", + "def accuracy (tp, fp, fn, tn):\n", + " accuracy = ((tp + tn) / (tp + tn + fp + fn))\n", + " return (accuracy)\n", + " \n", + "# Função que calcula a precisão \n", + "def precision (tp, fp):\n", + " precision = (tp / (tp + fp)) #predições positivas\n", + " return precision\n", + "\n", + "# Função que calcula o recall\n", + "def recall(tp, fn):\n", + " recall = (tp / (tp + fn)) # reais positivos\n", + " return recall\n", + "\n", + "## Função que calcula o f-measure (media harmonica entre precision e recall)\n", + "def f_measure(tp, fp, fn):\n", + " f_measure = (2 * precision(tp, fp) * recall(tp, fn)) / (recall(tp, fn) + precision(tp, fp))\n", + " return f_measure\n", + " \n", + "# Função que calcula o Informedness \n", + "def informedness(tp, fp, fn, tn):\n", + " inform = ((tp/rp(tp, fn)) - (fp/rn(fp, tn)))\n", + " return inform\n", + "\n", + "# Função que calcula o Markedness\n", + "def markdness(tp, fp, fn, tn): \n", + " mark = ((tp/pp(tp,fp)) - (fn/pn(fn,tn)))\n", + " return mark\n", + "\n", + "# Função de escalonamento\n", + "def feature_scaling(data):\n", + " sc = StandardScaler()\n", + " return sc.fit_transform(data)\n", + "\n", + "# Função que gera o gráfico dos resultados de classificação\n", + "def plot_results_class(X, y, classifier, title):\n", + " X_set, y_set = X, y\n", + " X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),\n", + " np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))\n", + " plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),\n", + " alpha = 0.75, cmap = ListedColormap(('red', 'green')))\n", + " plt.xlim(X1.min(), X1.max())\n", + " plt.ylim(X2.min(), X2.max())\n", + " for i, j in enumerate(np.unique(y_set)):\n", + " plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],\n", + " c = ListedColormap(('red', 'green'))(i), label = j)\n", + " plt.title(title)\n", + " plt.xlabel('Idade')\n", + " plt.ylabel('Tarifa')\n", + " plt.legend()\n", + " plt.show()" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8CLZyvMlh_Qj", + "colab_type": "text" + }, + "source": [ + "### Etapa de exploração e tratamento dos dados" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZfESkLx0EjB8", + "colab_type": "text" + }, + "source": [ + "Importando os dados dos passageiros do titanic e selecionando uma amostragem dos dados para uma melhor visualização. O objetivo dessa tarefa de classificação é prever os passageiros sobreviventes com base nas suas informações pessoais.\n", + "\n", + "Fonte: [Kaggle](https://www.kaggle.com/c/titanic/data)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yq6eIh3NJnuN", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", + "\n", + "#Selecionando uma amostragem dos dados para uma melhor visualização\n", + "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']]" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g-LzSHX1Jpg1", + "colab_type": "text" + }, + "source": [ + "Descrevendo o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hpLEK45DJomb", + "colab_type": "code", + "outputId": "c9ce32b0-021e-404c-8e77-78b4975dfa7b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + } + }, + "source": [ + "# Exporando o dataset\n", + "df.info()" + ], + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 100 entries, 44 to 20\n", + "Data columns (total 8 columns):\n", + "Unnamed: 0 100 non-null int64\n", + "LotArea 100 non-null int64\n", + "PoolArea 100 non-null int64\n", + "GarageArea 100 non-null int64\n", + "OverallCond 100 non-null int64\n", + "YearBuilt 100 non-null int64\n", + "MSZoning 100 non-null object\n", + "SalePrice 100 non-null int64\n", + "dtypes: int64(7), object(1)\n", + "memory usage: 7.0+ KB\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "HQOuXFFIi8OZ", + "colab_type": "code", + "outputId": "6ffbf191-4651-45b5-a166-b8d966ecdfa1", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + } + }, + "source": [ + "# Visualizando o sumário das colunas numéricas do dataset\n", + "df.describe()" + ], + "execution_count": 23, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count100.000000100.000000100.0100.000000100.000000100.000000100.000000
mean775.81000010898.0900000.0522.9300005.8900001970.320000199800.560000
std394.2436746259.6402080.0233.0492321.30186331.13829776041.565893
min26.0000001477.0000000.00.0000003.0000001875.00000080000.000000
25%546.7500008381.2500000.0440.0000005.0000001950.000000148375.000000
50%802.00000010760.5000000.0551.0000005.0000001976.000000195000.000000
75%1039.00000012068.7500000.0616.5000007.0000002002.000000235032.000000
max1442.00000046589.0000000.01014.0000009.0000002009.000000437154.000000
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 LotArea ... YearBuilt SalePrice\n", + "count 100.000000 100.000000 ... 100.000000 100.000000\n", + "mean 775.810000 10898.090000 ... 1970.320000 199800.560000\n", + "std 394.243674 6259.640208 ... 31.138297 76041.565893\n", + "min 26.000000 1477.000000 ... 1875.000000 80000.000000\n", + "25% 546.750000 8381.250000 ... 1950.000000 148375.000000\n", + "50% 802.000000 10760.500000 ... 1976.000000 195000.000000\n", + "75% 1039.000000 12068.750000 ... 2002.000000 235032.000000\n", + "max 1442.000000 46589.000000 ... 2009.000000 437154.000000\n", + "\n", + "[8 rows x 7 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 23 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tgh2pe9lJtr6", + "colab_type": "text" + }, + "source": [ + "Visualizando o dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EvY28fJdJxey", + "colab_type": "code", + "outputId": "78c50f90-226c-4e9b-daaf-9d7ad88be480", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df.head(5)" + ], + "execution_count": 20, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
4496411316051052002RL214900
471887018052851979RL153337
5315313500056471960RL235000
078912205044481966RL187500
378216285060552001RL187100
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 LotArea PoolArea ... YearBuilt MSZoning SalePrice\n", + "44 964 11316 0 ... 2002 RL 214900\n", + "47 188 7018 0 ... 1979 RL 153337\n", + "53 153 13500 0 ... 1960 RL 235000\n", + "0 789 12205 0 ... 1966 RL 187500\n", + "3 782 16285 0 ... 2001 RL 187100\n", + "\n", + "[5 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 20 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jiMAqVghJylz", + "colab_type": "text" + }, + "source": [ + "Preenchendo os valores númericos nulos (NA) com a mediana." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "KFDodNK4JzlR", + "colab_type": "code", + "outputId": "d5d62346-ce53-4ac0-e74d-6d447c2d23a5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "source": [ + "df = df.fillna(df.median())\n", + "\n", + "df.head(5)" + ], + "execution_count": 21, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
4496411316051052002RL214900
471887018052851979RL153337
5315313500056471960RL235000
078912205044481966RL187500
378216285060552001RL187100
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 LotArea PoolArea ... YearBuilt MSZoning SalePrice\n", + "44 964 11316 0 ... 2002 RL 214900\n", + "47 188 7018 0 ... 1979 RL 153337\n", + "53 153 13500 0 ... 1960 RL 235000\n", + "0 789 12205 0 ... 1966 RL 187500\n", + "3 782 16285 0 ... 2001 RL 187100\n", + "\n", + "[5 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 21 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jXWksGyoJ0u3", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis independentes e visualizando as 5 primeiras:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lJ0y3JijJ1ii", + "colab_type": "code", + "outputId": "0187a2d8-9a56-42f8-f315-176ec59a1219", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X = df.iloc[:, [5, 9]].values\n", + "X[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 26. , 14.4583],\n", + " [ 26. , 7.55 ],\n", + " [ 7. , 29.125 ],\n", + " [ 26. , 146.5208],\n", + " [ 29. , 15.2458]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uISYBhKqUqpQ", + "colab_type": "text" + }, + "source": [ + "Definindo as variáveis dependentes e visualizando as 5 primeiras:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "okQl0J1SUq9h", + "colab_type": "code", + "outputId": "42cd730b-3886-48a1-e117-54da7663f8db", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "y = df.iloc[:, 1].values\n", + "y[:5]\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0, 0, 0, 1, 1])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 9 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yzJ08rJ4J3CS", + "colab_type": "text" + }, + "source": [ + " Criando os subconjuntos de treinamento e testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "tVz1mTUOJ4Tb", + "colab_type": "code", + "outputId": "c97d6fa7-10ea-4bec-c1d6-a67ad0a0b8c7", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .2, random_state = 42)\n", + "\n", + "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", + "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", + "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Tamanho do Dataset. 100\n", + "Tamanho do Conjunto de Treinamento. 80\n", + "Tamanho do Conjunto de Testes. 20\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OcQtLvcXJ7NT", + "colab_type": "text" + }, + "source": [ + "Normalizando as features e exibindo as 5 primeiras:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aXvlvQ9DJ7i3", + "colab_type": "code", + "outputId": "1bbd577a-6f18-4d0b-c924-4f4d0baa371e", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "X_train = feature_scaling(X_train)\n", + "X_test = feature_scaling(X_test)\n", + "\n", + "X_train[:5]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[-0.2233842 , 0.62589282],\n", + " [ 0.50330481, -0.63776468],\n", + " [ 0.35796701, -0.68999987],\n", + " [-0.0780464 , -0.55753246],\n", + " [-0.58672871, -0.2466326 ]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGXuG35WJ_Tj", + "colab_type": "text" + }, + "source": [ + "Treinando o modelo de Árvore de Decisão com o Conjunto de Treinamento" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "gIqtlsYGmOYq" + }, + "source": [ + "### Etapa de Treinamento e Validação do Modelo" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "oF9z-OwymOYs" + }, + "source": [ + "Importando e treinando o modelo com o conjunto de treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "8d5f3b06-3372-42a4-fe53-7affbad191ba", + "id": "G1uuhHzumOYt", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 136 + } + }, + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "classifier = LogisticRegression(random_state = 0)\n", + "classifier.fit(X_train, y_train)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", + " FutureWarning)\n" + ], + "name": "stderr" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", + " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", + " multi_class='warn', n_jobs=None, penalty='l2',\n", + " random_state=0, solver='warn', tol=0.0001, verbose=0,\n", + " warm_start=False)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 12 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "sKGRDMbWmOY1" + }, + "source": [ + "Prevendo os resultados do modelo criado com o conjunto de testes" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "10be0e36-54f6-4530-8378-9c4b2f72ff8e", + "id": "FAvYq8NemOY3", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "y_pred = classifier.predict(X_test)\n", + "\n", + "y_pred" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "2qVdkDyzmOY_" + }, + "source": [ + "Criando e exibindo os valores da matriz de confusão com o conjunto de testes " + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "412d2fd2-d655-4a5c-c8c0-b906049447ec", + "id": "dzm-N1R7mOZD", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + } + }, + "source": [ + "tn, fp, fn, tp = confusion_matrix(y_test, y_pred).ravel()\n", + "\n", + "confusion_matrix(y_test, y_pred)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[14, 1],\n", + " [ 3, 2]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Vl2JrA-cmOZI" + }, + "source": [ + "Visualizando a matriz de confusão" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "b66d506b-fa33-4666-a495-c5587d614bf7", + "id": "o8x_wA2CmOZJ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + } + }, + "source": [ + "mat = confusion_matrix(y_test, y_pred)\n", + "sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False)\n", + "plt.xlabel('true label')\n", + "plt.ylabel('predicted label');" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "y6TAt9MomOZL" + }, + "source": [ + "Visualizando a métrica de **acurácia** utilizando as funções criadas e a bibilioteca sklearn:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "680fcd92-32f2-4554-b847-0b75b5942e39", + "id": "rMMCqczomOZM", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "accuracy(tp, fp, fn, tn)\n", + "classifier.score(X_test, y_test)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.8" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "rAL1ztqJmOZP" + }, + "source": [ + "Exibindo a medida **f-measure**:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "60cff7ee-505a-4dc2-eb59-73785668ef2f", + "id": "dcg2oWJImOZQ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "f_measure(tp, fp, fn)\n", + "f1_score(y_test, y_pred) " + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.5" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "6SG8SzeXmOZS" + }, + "source": [ + "Exibindo os resultados do conjunto de treinamento:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "8e82d219-2e85-4201-a88e-b4cbecb69c00", + "id": "_xENnpTxmOZU", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 355 + } + }, + "source": [ + "plot_results_class(X_train, y_train, classifier, 'Regressão Logística (Conj. de Treinamento)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\ncgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "QwmncO8mmOZa" + }, + "source": [ + "Exibindo os resultados do conjunto de testes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab_type": "code", + "outputId": "62772bbd-82e5-4f3a-fe3c-2f1f92430914", + "id": "tA-DeHAMmOZb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 355 + } + }, + "source": [ + "plot_results_class(X_test, y_test, classifier, 'Regressão Logística (Conj. de Testes)')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", + "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEcCAYAAAAsv3j+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deVhTV/4/8HcSEhY3wAqiqNSNcakj\niiBKRXBBW8Slxa0utXbUsbW21Y6OWxW1FWv16yh+ca2/qdZWa8WKWpe6VluXX6vV6qhQEJRNgaqs\ngeT8/nDMz/QSJZJwE3i/nsfnITfJyedcJO+cc+69UQghBIiIiB6jlLsAIiKyPQwHIiKSYDgQEZEE\nw4GIiCQYDkREJMFwICIiCYYDVYnZs2fjpZdeQkZGBsaOHSt3ORLff/89oqKioNVqzXreyy+/jDNn\nzli8npMnT2Ly5MkWb7c8b775Jnbt2vVMz121ahWmT59u4Yrk9+uvv2L06NFylyErB7kLoKcLCwvD\n3bt3oVKp4OLighdffBFz585FrVq15C6twvLy8rBs2TK89957GDRo0DO3ExYWhkWLFqFbt24WrW3F\nihVYt24dNBqNycfNnDkTnp6eeO+99wzb9u7da7E6HrdixQrMmzfPcFsIgc8//xzbt2/HrVu3ULdu\nXXTs2BFvvfUWfH19K/VaGzZsqGy5ZvPz8zP8XFRUBI1GA5VKBQBYsGABIiMjn6ndoUOH4rXXXsPA\ngQMrVV+HDh2gUChw6tQpdO/evVJt2SuGg52Ii4tDt27dcOfOHYwfPx7r1q0zepOyFJ1OZ/gjtaQ1\na9YAAL788kuLt11ZiYmJiI6ORqNGjeQuBcDDT635+fno2LGjYdvixYtx7NgxLFy4EJ07d4ZOp8Oh\nQ4dw/PjxSoeDHH755RfDz9YIfEsYMGAAvvrqqxobDpxWsjMNGjRAcHAwrl69atim1WoRExODnj17\nolu3bpg3bx6Ki4sN969fvx7BwcEIDg7Gjh074Ovri5s3bwJ4+Gn4ww8/xN/+9jd07NgRZ86ceWJ7\nubm5mDhxIvz9/REQEICRI0dCr9cDANatW4cXX3wRfn5+CA8Px48//gjg4ZvdsGHD4O/vj+DgYERH\nRxtN3/z888945ZVX0LlzZ7zyyiv4+eefn2nfbN++HX369EFAQAAmTZqErKwsw30//PADwsPD0blz\nZ8yfPx+jRo3Cjh07AABpaWn45JNPADz8hP7RRx8hKCgInTp1woABA3D9+nV89dVX2LNnDzZu3Ag/\nPz9MmjQJwMM3ttOnTwN4GKxxcXHo3bs3/Pz8MGTIEGRkZAAAFi1ahJCQEHTq1AlDhgzB+fPnTfbj\nxIkT6NKli+F2SkoKtm7diuXLlyMoKAgajQbOzs6IjIzEhAkTAAAPHjzAP/7xD3Tt2hWhoaFYs2aN\n4ffyzTffYMSIEYiJiUGXLl0QFhaG48ePG9ofPXq0YV88TVpaGkaNGgU/Pz+MGzcOeXl5RvdfuHAB\nw4cPh7+/PyIjI595yk2n0yE2Nha9evVCYGAgpk2bhvv37wMACgsL8d577yEgIAD+/v6IiorCvXv3\nsGTJEly6dAlz5syBn58flixZAgC4fv06xowZgy5duqB///44fPiw4XUOHz6Mfv36wc/PDyEhIfj3\nv/9tuC8wMBAnT56ETqd7pj7YPUE2LzQ0VJw6dUoIIURGRoaIiIgQCxcuNNy/ePFiMXHiRJGXlyce\nPHggJk6cKJYtWyaEEOL48eOiW7du4vr166KwsFBMmzZNtG7dWqSkpAghhJgxY4bo1KmTOH/+vNDp\ndKK4uPiJ7S1btkzMnTtXaLVaodVqxblz54RerxdJSUmiR48eIjMzUwghRFpamrh586YQQohLly6J\nX375RZSWloq0tDTRr18/8dlnnwkhhMjLyxP+/v5i165dorS0VOzZs0f4+/uL3Nzcp+6Lx50+fVoE\nBASIy5cvi5KSEhEdHS1GjhwphBAiJydH+Pn5iQMHDojS0lKxefNm0bZtW7F9+3YhhBA7d+4Uw4cP\nF0IIceLECTF48GBx7949odfrRWJiosjKyjLsq+XLl5usZ/369SIiIkIkJSUJvV4vrl69auhHfHy8\nyM3NFaWlpWLjxo2iW7duori4uNw+TpkyRaxfv95w+4svvhA9e/Ys97GPfPDBB2LSpEniwYMHIi0t\nTfTt29eof23bthVfffWVKCsrE1u3bhXdu3cXer1eCCHEqFGjDI99mqFDh4qPPvpIlJSUiLNnz4qO\nHTuKadOmCSGEyMzMFAEBAeLYsWNCp9OJH374QQQEBIicnJwntlne73Tt2rVixIgRIjMzUxQXF4sZ\nM2aImTNnCiGE2Lx5s5gyZYooKioSpaWl4uLFi6KgoEAIIURUVJSIj483tPPgwQPRvXt3sXv3blFW\nViYuXrwounTpYvj/HxAQIC5evCiEECI3N1f89ttvRnW0a9dO/P777xXaN9UNRw524q233jJ8unF3\nd8c777wD4OEn3e3bt2PWrFlwdXVF7dq1MXHiRMNc+P79+zFkyBC0atUKzs7OmDJliqTtXr16oXPn\nzlAqldBoNE9sz8HBAXfu3EF6ejrUajX8/f2hUCigUqmg1WqRlJSE0tJSeHt7o2nTpgCA9u3bo2PH\njnBwcIC3tzeGDRuGc+fOAQCOHTuGZs2aYdCgQXBwcEBERASaN2+Oo0ePmrV/9uzZg1deeQXt2rWD\nRqPB+++/jwsXLuDWrVs4ceIEWrVqhb59+8LBwQFjxozBc889V247Dg4OKCgowO+//w4hBFq0aAEP\nD48K1bBjxw5MnToVzZs3h0KhwF/+8he4ubkBAAYOHAg3Nzc4ODjgjTfegFarRXJycrntPHjwwGg9\n6Y8//kCDBg1Mvq5Op8O+ffswbdo01K5dG97e3hg3bhy+/fZbw2MaNWqEoUOHQqVSYfDgwbhz5w7u\n3r1boX49kp6ejkuXLmHq1KnQaDSGUcgju3fvRo8ePRASEgKlUonu3bujffv2RqOUivryyy8xbdo0\neHp6wtHREW+99Rb27dsHIQQcHByQm5uL1NRUODg4oEOHDnBxcSm3nUOHDqFVq1aIjIyESqVChw4d\nEBoaigMHDgAAlEolbty4gfz8fLi5uaFt27ZGz69VqxYePHhgdv3VAdcc7ERsbCy6deuGs2fPYtq0\nacjLy0PdunWRm5uLoqIiDBkyxPBYIYRhSiE7Oxvt27c33Ofl5SVp+/FtT2tv/PjxWL16Nd544w0A\nwLBhwzBhwgQ0a9YMs2bNwqpVq5CYmIjg4GDDAm5ycjKWLFmCy5cvo6ioCDqdDu3atTPU9+e5/kaN\nGhlNCVVEdna2oU3g4R+1q6srsrKykJ2djYYNGxruUygURrcfFxQUhNdeew3R0dG4ffs2+vbtixkz\nZqB27dpPrSEzM9MQiH+2ceNGfP3118jOzoZCoUB+fr5kSuaRunXroqCgwHDb1dUVd+7cMfm6eXl5\nKC0tNdqPf96Hj4ehs7MzgIfTM+bIzs5G3bp1jd6IGzVqZJg6S09Px3fffWcU7GVlZQgMDDTrdYQQ\nyMzMxIQJE6BQKAzb9Xo98vLyEBUVhbt37+Kdd95BYWEhBg0ahKlTp5a7Vnb79m2cO3cO/v7+hm06\nnQ6vvvoqgIdrYXFxcViyZAnatGmD6dOno0OHDobHFhQUoE6dOmbVX10wHOxMQEAAhgwZgpiYGKxZ\nswZubm5wcnLC3r174enpKXm8h4eH0ZvEoz9kU57WXu3atTFz5kzMnDkT169fx9ixY/HCCy8gKCgI\nAwYMwIABA5Cfn4958+Zh2bJl+OSTTzB//ny0bdsWn376KWrXro3NmzcbPrl5eHggPT3d6DUyMjLw\n4osvmrVfPDw8cPv2bcPtwsJC/PHHH/D09ESDBg2M9sGjNx9TxowZgzFjxiAnJwfvvvsuNmzYgHff\nfdfojao8DRs2RGpqKlq3bm20/fz589iwYQM2b96MVq1aQalUokuXLhAmLojs6+uLlJQUw+2goCBE\nR0fj0qVLeOGFFySPd3Nzg1qtRnp6Olq2bAng4T4s7/dXGQ0aNMD9+/dRWFhoCIj09HTDfvHy8sLA\ngQOxaNGiSr2OQqGAp6cnVq1aZfTB5nFTp07F1KlTkZaWhvHjx6Nly5aIjIyU/I68vLwQHByMuLi4\nctvx8/PD2rVrodVqsXnzZkyfPh0HDx4EAKSmpkKtVpsM/OqO00p2aOzYsTh9+jT+85//QKlUIioq\nCh999BFycnIAAFlZWTh58iQAoF+/fvjmm2+QlJSEoqIiw1FDpjytvaNHj+LmzZsQQqBOnTpQqVRQ\nKBT4/fff8eOPP0Kr1UKj0cDR0RFK5cP/XgUFBahVqxZq1aqFpKQkbNu2zfB6ISEhSElJwZ49e1BW\nVoZ9+/YhMTERPXv2NFljaWkpSkpKDP/KysoQERGBb775BlevXoVWq8Xy5cvRoUMHeHt7IyQkBNeu\nXcPhw4dRVlaGrVu3mpxS+fXXX3Hx4kWUlpbC2dkZGo3G0I/69evj1q1bJuuKiorCypUrkZKSAiEE\n/vOf/yAvLw8FBQVQqVRwd3dHWVkZVq9ejfz8fJPthISEGKbdAMDHxwcjR47EtGnTDAcMlJSUYO/e\nvVi3bh1UKhX69euHFStWID8/H7dv38Znn332zIeDmtK4cWO0b98eq1atglarxfnz541GCZGRkTh6\n9KhhEbekpARnzpx5YhCbMnz4cHz66aeGDzM5OTk4cuQIAOD06dNITEyEXq9HrVq1oFKpjH5HaWlp\nhnZ69+6NK1euYN++fSgtLYVWq8WFCxeQnJyMwsJC7N27F/n5+VCr1ahVq5ZRuJw9exbdu3e3ytF7\n9oDhYIfc3d0xcOBAxMbGAgA++OADNGvWDEOHDkWnTp3w+uuvG+azQ0JCMHr0aIwZMwZ9+vTBX//6\nVwB44vH8T2rv5s2bGDduHPz8/DBs2DCMGDECXbt2hVarxaefforAwEAEBwcjNzcX77//PgBgxowZ\nSEhIQKdOnTB37ly89NJLhtdyc3NDXFwcPvvsMwQGBmLDhg2Ii4uDu7u7yfomTJiADh06GP6tWrUK\n3bp1w9SpUzFlyhQEBwcjLS0NK1asMOyvlStX4pNPPkFgYCASExPRvn17qNVqSdsFBQWYM2cOAgIC\nEBoaCldXV4wfPx4A8OqrryIxMRH+/v7lnqA2btw49O/fH2+88QY6deqE2bNno6SkBMHBwXjxxRcR\nHh6OsLAwODo6lju990i7du1Qu3ZtXLx40bBtzpw5humuLl26oHfv3jh06BBCQ0MBAHPnzoWzszN6\n9+6NkSNHIiIiAq+88orJ1zDl/PnzRucg/Nmnn36KixcvIjAwELGxsUbnrHh5eWHNmjVYu3YtgoKC\nEBISgo0bNxqmJM3x5ptvIigoCGPHjoWfnx+GDx+OK1euAHj4YWXy5MmGo8lCQkIM/6def/117N69\nG126dMHSpUtRr149bNy4ETt37jT8Hv7nf/4HZWVlAICdO3ciNDQUnTt3Rnx8PJYuXWqoYc+ePRg+\nfLjZtVcXCmFqbEvVUlJSEiIiInDp0iU4ONTMWUW9Xo8ePXpg2bJl6Nq1q9zllOuHH37AF1988dSR\nniW89tpriIqKqtTJidXNr7/+iqVLl2LLli1ylyIbjhxqgEOHDkGr1eLevXv45JNPEBoaWuOC4eTJ\nk7h//z60Wq1h/vnxk8xsTXBwcJUEQ1FREdLS0uDt7W3117InHTp0qNHBADAcaoQvv/wSQUFB6NOn\nD1QqFebPny93SVXuwoUL6NOnDwIDA3H06FHExsbCyclJ7rJklZOTg+7du6NLly7o3Lmz3OWQjeG0\nEhERSXDkQEREEgwHIiKSYDgQEZGETR2yEhYWZjiBCgCmT59u1pmyf//2LdwpMH2ZgcpwUCtRVmr+\n8dr2gH2zX9W5f+yb9TWo1QD/Gxlb7n02FQ4A8K9//Uty+YGKulNwB5n55p+NWRFqjQql2up56V72\nzX5V5/6xb/LitBIREUnY3Mhh+vTpEEKgc+fOeP/991G3bt0KP9dBrYRaY73roFizbbmxb/arOveP\nfbMuB7Xp8YFNhcPWrVvh5eUFrVaLxYsXIzo6GsuWLavw88tK9VYbqtnDMPBZsW/2qzr3z1b7plKo\nMNJnBFrUbg6F4tkmXxRQQKBqTjETQo+k/N/xRco26ITx/izTmF73sKlweHQxMo1Gg5EjR+Lvf/+7\nzBURERkLbhCMNvXbQe3iBDzlMu6mKJSAqKr1aCHQxrEdgguCcTy74l+8ZDNrDoWFhYZvXBJCYN++\nfWjTpo3MVRERGQtq0BVq52cPhiqnUEDt7ISuDcz70iWbGTnk5ORgypQp0Ol00Ov1aNGiBT788EO5\nyyIiMuKscgLsJBcMFICzytmsp9hMODRp0gTx8fFyl0FE9BQK+xk1PKJQQGFmotlMOBAR0bPJvJ2B\n9Sv+F/kPHqB2nTr42/t/R8NGpr9QqiJsZs2BiIiezf9ZswG9Xu6DmLUr0OvlPvg/sRsq3SbDgYjI\nyurv2Q+/0JfR9S/+8At9GfW/3W+xtu//cQ8pSSno2qM7AKBrj+5ISUrB/Xv3K9Uuw4GIyIrq79mP\nFnMWwSk9Ewoh4JSeieazF6H+HssERO7dHLi5u0Gpevh2rlQp4ebuhtw7OZVql+FARGRFTZevhqq4\n2GibqrgYTZevlqmiimE4EBFZkWNGllnbzeX+XH3k5eZBr3t4Vp1ep0debh7cG9SvVLsMByIiKyrx\n8jRru7nqutZD0+eb4acTpwAAP504hWbNfVC3XsWvS1cehgMRkRWlvv82dE5ORtt0Tk5Iff9ti73G\n2MnjcTjhAGZMfA+HEw5g7OTxlW6T5zkQEVlRzoD+AB6uPThmZKHEyxNp095GTkR/i71GoyaNMe/T\nRRZrD2A4EBFZXc6A/oaQAB5eeA/yfxHcE3FaiYiIJBgOREQkwXAgIiIJhgMREUkwHIiISILhQERE\nEjyUlYjIjn25cQvOnz6Lu9l3sGj1Ung3a2KRdjlyICKysgMp+zF498vovs0fg3e/jAPJlrtkd6eu\n/vjnkg9R3+M5i7UJcORARGRVB1L2Y8nZRSjRPbwya1ZhJpacWQQhgHCfyp8l3brdXyrdRnkYDjVA\n7zPZmLQrBR65Jch2d0TcYB8cDvSQuyyiGiHu4mpDMDxSrCtG3MXVFgkHa2E4VHO9z2Rjxuc34Kx9\neK5+w9wSzPj8BgAwIIiqQHZh+ZfmNrXdVnDNoZqbtCvFEAyPOGv1mLQrRZ6CiGoYD5fyL81tarut\nYDhUcx65JWZtJyLLmvTXt+GoMr5kt5PKCZP+arlLdluDTYbD6tWr4evri+vXr8tdit3Ldnc0azsR\nWVa4T3/MDJgDT5eGUEABT5eGmBk4x2LrDVvWbsZ7r7+FvLu5WDpnMWZNnm6Rdm1uzeG3337DhQsX\n0LhxY7lLqRbiBvsYrTkAQJFGibjBPvIVRVTDhPv0NwoDhRIQFrpk96iJr2PUxNct09hjbGrkoNVq\nER0djfnz58tdSrVxONADMaNbIdPdEXoAme6OiBndiovRRPRENjVyWLlyJSIjI+Ht7S13KdXK4UAP\nhgERmcVmwuGXX37B5cuXMX36s8+XOaiVUGtUFqzKmDXblhv7Zr+qc/9stW8KhQAUisq1UZXzNkIA\nkO5PB7XpImwmHM6dO4ekpCT06tULAJCZmYnx48fj448/RnBwcIXaKCvVo1Srs0p9ao3Kam3LjX2z\nX9W5f7batyJdEVx09So1KW/JNYcK0QOFukLJ/izTmC7CZsJhwoQJmDBhguF2WFgY4uLi0Lp1axmr\nIiIy9uOdnxDu3A9qF6dKjx6qhBAoLSrGT9k/mfU0mwkHIiJ78MOdH9C0VhO0KGkOxTPODSmggICw\ncGXlE0KPpPzf8cPdU2Y9z2bD4ciRI3KXQEQkoRM6fJ68pVJt2OqU2eNs6lBWIiKyDQwHIiKSYDgQ\nEZEEw4GIiCQYDkREJMFwICIiCYYDERFJMByIiEiC4UBERBIMByIikmA4EBGRBMOBiIgkGA5ERCTB\ncCAiIgmGAxERSTAciIhIguFAREQSDAciIpJgOBARkQTDgYiIJBgOREQkwXAgIiIJhgMREUkwHIiI\nSMJB7gIeN3nyZNy6dQtKpRIuLi6YO3cu2rRpI3dZREQ1jk2FQ0xMDOrUqQMAOHz4MGbNmoVdu3bJ\nXBURUc1jU9NKj4IBAPLz86FQKGSshoio5rKpkQMAzJ49G6dOnYIQAhs2bJC7HCKiGsnmwmHx4sUA\ngPj4eCxduhTr16+v8HMd1EqoNSprlWbVtuXGvtmv6tw/9s26HNSmJ49sLhweGTRoEObNm4e8vDy4\nublV6DllpXqUanVWqUetUVmtbbmxb/arOvePfbO+Mo3e5H02s+ZQUFCAjIwMw+0jR46gXr16cHV1\nlbEqIqKayWZGDkVFRZg6dSqKioqgVCpRr149xMXFcVGaiEgGNhMOzz33HLZv3y53GUREBBuaViIi\nItvBcCAiIgmGAxERSTAciIhIguFAREQSDAciIpJgOBARkQTDgYiIJBgOREQkwXAgIiIJhgMREUkw\nHIiISILhQEREEgwHIiKSYDgQEZEEw4GIiCQYDkREJMFwICIiiQp9TWhhYSHi4uJw9uxZ5OXlGd13\n4MABqxRGRETyqdDIITo6GmfPnsWYMWOQnZ2NqVOnom7duoiKirJ2fUREJIMKhcOJEycQGxuLl156\nCSqVCi+99BJWrlyJ/fv3W7s+IiKSQYXCQafTwdXVFQDg4uKC/Px8NGzYEMnJyVYtjoiI5FGhNYfW\nrVvj/PnzCAwMhJ+fHxYvXoxatWqhadOm1q6PiIhkUKGRw4IFC9CgQQMAwOzZs1FaWorbt29jyZIl\nVi2OiIjkYXLkMGPGDMTExAAArly5goiICACAh4cHli1bZvFC8vLy8I9//AOpqanQaDRo1qwZoqOj\n4e7ubvHXIiKiJzM5cvj+++8NP8+bN8/qhSgUCrz55ps4cOAA9uzZgyZNmlglhIiI6OlMjhw6duyI\nUaNG4fnnn4dWq8XcuXPLfdzChQstUoirqysCAwONXn/btm0WaZuIiMxjMhz+9a9/Ye/evbh9+zYA\nGI5Wqgp6vR7btm1DWFiYWc9zUCuh1qisVBWs2rbc2Df7VZ37x75Zl4Pa9LKzyXBwcXExnORWVlaG\nadOmWb4yExYuXAgXFxeMGjXKrOeVlepRqtVZpSa1RmW1tuXGvtmv6tw/9s36yjR6k/eZDIc7d+4Y\njlAaPXo0srKyyn2cp6dnJcszFhMTg5s3byIuLg5KJS/9REQkB5Ph0LdvX/zyyy8AgJCQECgUCggh\njB6jUChw9epVixWzfPlyXL58GevWrYNGo7FYu0REZB6T4XDmzBnDz7/++qvVC7lx4wbWrl0LHx8f\nDB8+HADg7e2N2NhYq782EREZMxkOjz6563Q6DBo0CPHx8Vb9NN+qVStcu3bNau0TEVHFPXVSX6VS\nobS0FFqttirqISIiG1ChFd833ngD06dPx8WLF5GVlWX0j4iIqp8KXXhvwYIFAIBjx44Zbbf0gjQR\nEdmGCoVDVSxIExGR7ahQOPCwUiKimqVC4aDX67Fjxw6cPXsWf/zxh9H5Dps2bbJacUREJI8KLUjH\nxMRg06ZN8PX1xc8//4yuXbsiLS0NL7zwgrXrIyIiGVQoHPbv348NGzZgwoQJUCqVmDBhAtasWWM4\ng5qIiKqXCoVDUVERmjRpAgBwcnJCcXExWrVqhcuXL1u1OCIikkeF1hyef/55XL58Ge3bt0fbtm0R\nFxeHOnXqGC7MR0RE1UuFRg4zZ840LELPnDkTZ86cwbfffms4/4GIiKqXJ44cEhISEBERgU6dOhm2\ntWjRgt/QRkRUzT1x5FAV3x1NRES254nh8OfvbyAioprhidNKer0eP/300xNDIigoyOJFERGRvJ4Y\nDlqtFrNnzzYZDgqFAt9//71VCiMiIvk8MRycnZ355k9EVANV6FBWIiKqWbggTUREEk8MB147iYio\nZuK0EhERSTAciIhIguFAREQSNhUOMTExCAsLg6+vL65fvy53OURENZZNhUOvXr2wdetWNG7cWO5S\niIhqtAp9n0NV8ff3l7sEIovKLsxG6oMUlOhK4KhyRNM6PvBw8ZC7LKKnsqlwIKpOsguzkXTvBvRC\nDwAo0ZUg6d4NAGBAkM2rVuHgoFZCrVFZrX1rti039s3yUrNSDMHwiF7okfogBY1dvSz2Ovzd2Sdb\n6JuD2vTKQrUKh7JSPUq1Oqu0rdaorNa23Ng36yjRlZjcbqma+LuzT7bStzKN3uR9NrUgTVSdOKoc\nzdpOZEtsKhwWLVqEHj16IDMzE+PGjcPLL78sd0lEz6xpHR8oFcZ/YkqFEk3r+MhTEJEZbGpaac6c\nOZgzZ47cZRBZxKNFZx6tRPbIpsKBqLrxcPFgGJBdsqlpJSIisg0MByIikmA4EBGRBMOBiIgkGA5E\nRCTBcCAiIgmGAxERSTAciIhIguFAREQSDAciIpJgOBARkQTDgYiIJBgOREQkwXAgIiIJhgMREUkw\nHIiISILhQEREEgwHIiKSYDgQEZEEw4GIiCQc5C6ACACyC7OR+iAFJboSOKoc0bSODzxcPOQui6jG\nYjiQ7LILs5F07wb0Qg8AKNGVIOneDQBgQBDJhNNKJLvUBymGYHhEL/RIfZAiT0FEZFvhkJycjGHD\nhiE8PBzDhg1DSkqK3CVRFSjRlZi1nYisz6amlT788EOMHDkSAwcOxO7duzFv3jz8+9//rvDz/2/W\nWdz846YVK6w8oQC6N3pR7jJsiqPKsdwgcFQ5ylANEQGAQggh5C4CAHJychAeHo4zZ85ApVJBp9Mh\nMDAQBw8ehLu7e4Xa0L46FMjMtEp9GrUK2lJdpdtx6n3SAtVUL4b/gArpRgWAbo2fPUzVGhVKtZX/\nvdmq8vrX+0w2Ju1KgUduCbLdHRE32AeHA+1v7aY6/+5spW8NazfE1yO2l3ufzYwcMjIy4OnpCZVK\nBQBQqVTw8PBARkZGhcPBHhQftr1Rg6WC73HbGmZjXssUpDmVoEmxI6ITfTAi0/QblKnHO/U+idO3\nGagVNeISMCNBCWftwzWchmDsmIgAAAusSURBVLklmPH5w8V9ewwIko/NhIMlaByUgFplvfat2Lbc\nLNm3rR5ZmOx7A4Wqh29Qqc4lmNz2BhxUSryW7Vnuc8ZeUWJsAoASAI4AmisBTxX0x3tarK6a4OYv\nxwzB8IizVo/Xv76GaO9rMlVl2+o5u6Jjw45V/rpqjfzvJw5q08vONhMOXl5eyMrKgk6nM0wrZWdn\nw8vLq8JtaMv0gIU/AT9ijU/XtsLSfZv1/O+GYHikUKXHrOd/R9Tt5ySPV2ZnQ5V0Awr9f59TUgJx\n7Rp0ZXroPSr3abc6/94Aaf+a3iv/cc3u2eao9Umq4nen/uk0VHP+wPHkY1Z9HVvVzLWZyftsJhzq\n16+PNm3aICEhAQMHDkRCQgLatGlTraaUaoo0p/KPMjK1XZWa8v+D4b8Uej1UqSmVDocax9ERKCln\nPztycb88pV27ofhw1b+uzXxoadgQeLf8u2zqUNb58+djy5YtCA8Px5YtW7BgwQK5S6Jn0KS4/Dci\nU9vLfTN70nYySdfUB0Jp/GctlEromvrIUxDZLZsZOQBAixYtsGPHDrnLoEqKTvTB5LY3jKaWXHRK\nRCf6lP8Eftq1mEcjLVVqysN96ugIXVMfjsDIbDYVDlQ9PDoqqaJHK+ma+kB145rkSNZn+bT756Oe\nPkpuXu46R3Wm9/BgGFClMRzIKkZkejzx0FUJhQJ4/JQbhcL0Y03Y1jDbaMSS6lyCCb7XUKbTm1cL\n0X8ps7Nr7CjMptYcqGZSpaZA8adzMRVCPPyjNMO8linlHiU1r6V57RABjx1FV1ICBQBFSQlUSTeg\nzM6Wu7QqwXAg+VloQdrco6TI/m1rmI1WwWfh1PskWgWfxbaGlnvjftJRdDUBp5VsmKWGtDY/NLbQ\ngnSTYkekOkvbMXmU1DMwd1/a/L63Y+VNI05u+/BscItMI9bwo+g4crBRlhrS2sPQWGi1+PMFvsR/\nt5sjOtEHLjrj/9JPPErKTObuS3vY9/bM6tOIpj6c1JCj6BgONspSQ1p7GBorhMCfl58V/91ujhGZ\nHlhzpRWaFjlCIYCmRY5Yd83XYovR5u5Le9j39sza04g1/ZwRTivZKksNaWvY0PjPR0lp1CpoYaEz\nUc3dlzVs31c1a08j1vRzRhgOtspSJ4bxBDPLMXdfct9bldknWz6DmnzOCKeVbJSlhrT2MDQWDg7l\nrzk42NZnF3P3pT3se3tW3jTimiuteE6LhdjWXx8ZWGpIaw9DY/3zLaC6Ib2ctP75FjJUY5q5+9Ie\n9r29M/tkS6owhoMNs9SQ1taHxqrUlHIXpG3xqqzm7ktb3/dEpnBaieTHhVsim8NwIPnV8OPJiWwR\nw4Fkx4VbItvDNQeSHRduiWwPw4FsAhduiWwLp5WIiEiC4UBERBIMByIikmA4EBGRBMOBiIgkGA5E\nRCTBcCAiIgmbCIfdu3djwIABaNu2LbZs2SJ3OURENZ5NhEObNm2wYsUKREREyF0KERHBRs6Qbt26\nNQBAqbSJrCIiqvFsIhwsReOgBNQq67Vvxbblxr7Zr+rcP/bNyhxMfyCvknAYPHgw0tPTy73v9OnT\nUKkss5O0ZXqg1EJfJv8nGrUKWiu1LTf2zX5V5/6xb1WgTA+NibuqJBx27dpVFS9DREQWwkl+IiKS\nsIlwSEhIQI8ePfDdd99h5cqV6NGjBxITE+Uui4ioxrKJBemIiAgexkpEZENsYuRARES2heFAREQS\nDAciIpJgOBARkQTDgYiIJBgOREQkwXAgIiIJhgMREUkwHIiISILhQEREEjZx+QyLadDAem07KIEy\nvfXalxP7Zr+qc//YN+t7wnumQgghqrAUIiKyA5xWIiIiCYYDERFJMByIiEiC4UBERBIMByIikmA4\nEBGRBMOBiIgkGA5ERCTBcCAiIgmGgxkWLFiAfv36ITIyEsOHD8elS5fkLslidu/ejQEDBqBt27bY\nsmWL3OVYRHJyMoYNG4bw8HAMGzYMKSkpcpdkETExMQgLC4Ovry+uX78udzkWlZeXh7/97W8IDw/H\ngAED8PbbbyM3N1fusixq8uTJiIyMxKBBgzBy5EhcvXpV7pLKJ6jCjhw5IrRareHnXr16yVyR5Vy7\ndk3cuHFDfPDBB+Lzzz+XuxyLGD16tIiPjxdCCBEfHy9Gjx4tc0WWce7cOZGeni5CQ0PFtWvX5C7H\novLy8sRPP/1kuL1kyRLxz3/+U8aKLO/+/fuGnw8dOiQGDRokYzWmceRghtDQUKjVagBAx44dkZmZ\nCb3eBi6eZQGtW7dGy5YtoVRWj/8SOTk5uHLlCiIiIgAAERERuHLlSrX4FOrv7w8vLy+5y7AKV1dX\nBAYGGm537NgR6enpMlZkeXXq1DH8nJ+fD4VCIWM1plWvq7JWoa1bt6Jnz57V5s20usnIyICnpydU\nKhUAQKVSwcPDAxkZGXB3d5e5OqoIvV6Pbdu2ISwsTO5SLG727Nk4deoUhBDYsGGD3OWUi+HwmMGD\nB5v8lHL69GnDG83evXuxZ88ebN26tSrLq5SK9o3IVixcuBAuLi4YNWqU3KVY3OLFiwEA8fHxWLp0\nKdavXy9zRVIMh8fs2rXrqY85dOgQVqxYgc2bN+O5556rgqosoyJ9q068vLyQlZUFnU4HlUoFnU6H\n7OzsajsdU93ExMTg5s2biIuLq9aj80GDBmHevHnIy8uDm5ub3OUYqb573QqOHj2Kjz/+GBs3boS3\nt7fc5dAT1K9fH23atEFCQgIAICEhAW3atOGUkh1Yvnw5Ll++jNjYWGg0GrnLsaiCggJkZGQYbh85\ncgT16tWDq6urjFWVj1/2Y4auXbtCrVYbvcFs3rzZ5hL/WSQkJGDp0qW4f/8+1Go1nJ2dsWnTJrRs\n2VLu0p5ZUlISZs6cifv376Nu3bqIiYlB8+bN5S6r0hYtWoSDBw/i7t27cHNzg6urK/bu3St3WRZx\n48YNREREwMfHB05OTgAAb29vxMbGylyZZdy9exeTJ09GUVERlEol6tWrhxkzZqBdu3ZylybBcCAi\nIglOKxERkQTDgYiIJBgOREQkwXAgIiIJhgMREUkwHIgq4datW/D19UVZWdkzPd/X1xc3b960cFVE\nlcdwIKqAsLAwnD59Wu4yiKoMw4GIiCQYDkRm0Ol0iImJQWBgIHr16oXjx48b3b9z5070798ffn5+\n6NWrF7788kuj+zds2IDg4GAEBwfj66+/NrpPq9UiJiYGPXv2RLdu3TBv3jwUFxdbvU9E5WE4EJlh\n+/btOHr0KOLj47Fz50589913RvfXr18fa9euxc8//4yPP/4YH3/8MX777TcAwIkTJ7Bp0yZs2rQJ\nBw8exI8//mj03GXLliE5ORnx8fE4ePAgsrOzq81lI8j+MByIzLB//36MHTsWXl5ecHV1xcSJE43u\n79mzJ5o2bQqFQoGAgAB0794d58+fNzx3yJAhaN26NVxcXPD2228bnieEwPbt2zFr1iy4urqidu3a\nmDhxYrW5ZhLZH16ym8gMf77sd6NGjYzuP378OGJjY5GSkgK9Xo/i4mK0bt3a8Nz27dsbHtu4cWPD\nz7m5uSgqKsKQIUMM24QQ1eabBsn+MByIzNCgQQOjSy4//rNWq8U777yDmJgY9OrVC2q1GpMnT8aj\na1s++ia6Rx7/8iU3Nzc4OTlh79698PT0rIKeED0Zp5WIzNC/f398/vnnyMzMxL1797Bu3TrDfVqt\nFlqtFu7u7nBwcMDx48dx6tQpw/39+vXDrl27kJiYiKKiIqxevdpwn1KpRFRUFD766CPk5OQAALKy\nsnDy5Mmq6xzRYxgORGYYOnQogoODMXDgQAwePBh9+/Y13Fe7dm3MmTMH7777Lrp06YKEhASj7z8O\nCQnB2LFjMXbsWPTp0wddu3Y1avuDDz5As2bNMHToUHTq1Amvv/46kpOTq6xvRI/j9zkQEZEERw5E\nRCTBcCAiIgmGAxERSTAciIhIguFAREQSDAciIpJgOBARkQTDgYiIJBgOREQk8f8AZLakbv3GHVkA\nAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + } + ] +} \ No newline at end of file From 02ef4dd22cf45c0df61d24a50a8f778a0417cca1 Mon Sep 17 00:00:00 2001 From: Jairo Souza Date: Fri, 22 Nov 2019 02:22:15 -0300 Subject: [PATCH 14/14] Delete Regressao_Logistica.ipynb --- notebooks/1_semana/Regressao_Logistica.ipynb | 1242 ------------------ 1 file changed, 1242 deletions(-) delete mode 100644 notebooks/1_semana/Regressao_Logistica.ipynb diff --git a/notebooks/1_semana/Regressao_Logistica.ipynb b/notebooks/1_semana/Regressao_Logistica.ipynb deleted file mode 100644 index 3e93dd1..0000000 --- a/notebooks/1_semana/Regressao_Logistica.ipynb +++ /dev/null @@ -1,1242 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Regressao_Logistica.ipynb", - "provenance": [], - "collapsed_sections": [ - "0KkcOxCxjptF", - "gIqtlsYGmOYq" - ], - "toc_visible": true, - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EB3dPPlgQeVt", - "colab_type": "text" - }, - "source": [ - "#Modelos de Classificação : Regressão Logística" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "0KkcOxCxjptF", - "colab_type": "text" - }, - "source": [ - "### Importando libs e funções" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "k6l8c0olEHpN", - "colab_type": "text" - }, - "source": [ - "Importando libs" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "i7FF5Glb_NrK", - "colab_type": "code", - "colab": {} - }, - "source": [ - "import pandas as pd\n", - "import random\n", - "import numpy as np\n", - "from sklearn.preprocessing import StandardScaler \n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import f1_score\n", - "from matplotlib.colors import ListedColormap\n", - "from sklearn.metrics import confusion_matrix\n", - "\n", - "# Importando libs de visualização de dados\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns; sns.set()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "L7RydZ0qEIl4", - "colab_type": "text" - }, - "source": [ - "Importando funções" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KxneBJZUEIz4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Função que calcula os reais positivos\n", - "def rp(tp, fn):\n", - " return tp + fn\n", - "\n", - "# Função que calcula os reais negativos \n", - "def rn(fp, tn):\n", - " return fp + tn\n", - "\n", - "# Função que calcula as predicoes positivas \n", - "def pp(tp, fp):\n", - " return tp + fp\n", - "\n", - "# Função que calcula as predicoes negativas \n", - "def pn(fn, tn):\n", - " return fn + tn\n", - "\n", - "# Função que calcula acurácia do modelo\n", - "def accuracy (tp, fp, fn, tn):\n", - " accuracy = ((tp + tn) / (tp + tn + fp + fn))\n", - " return (accuracy)\n", - " \n", - "# Função que calcula a precisão \n", - "def precision (tp, fp):\n", - " precision = (tp / (tp + fp)) #predições positivas\n", - " return precision\n", - "\n", - "# Função que calcula o recall\n", - "def recall(tp, fn):\n", - " recall = (tp / (tp + fn)) # reais positivos\n", - " return recall\n", - "\n", - "## Função que calcula o f-measure (media harmonica entre precision e recall)\n", - "def f_measure(tp, fp, fn):\n", - " f_measure = (2 * precision(tp, fp) * recall(tp, fn)) / (recall(tp, fn) + precision(tp, fp))\n", - " return f_measure\n", - " \n", - "# Função que calcula o Informedness \n", - "def informedness(tp, fp, fn, tn):\n", - " inform = ((tp/rp(tp, fn)) - (fp/rn(fp, tn)))\n", - " return inform\n", - "\n", - "# Função que calcula o Markedness\n", - "def markdness(tp, fp, fn, tn): \n", - " mark = ((tp/pp(tp,fp)) - (fn/pn(fn,tn)))\n", - " return mark\n", - "\n", - "# Função de escalonamento\n", - "def feature_scaling(data):\n", - " sc = StandardScaler()\n", - " return sc.fit_transform(data)\n", - "\n", - "# Função que gera o gráfico dos resultados de classificação\n", - "def plot_results_class(X, y, classifier, title):\n", - " X_set, y_set = X, y\n", - " X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),\n", - " np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))\n", - " plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),\n", - " alpha = 0.75, cmap = ListedColormap(('red', 'green')))\n", - " plt.xlim(X1.min(), X1.max())\n", - " plt.ylim(X2.min(), X2.max())\n", - " for i, j in enumerate(np.unique(y_set)):\n", - " plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],\n", - " c = ListedColormap(('red', 'green'))(i), label = j)\n", - " plt.title(title)\n", - " plt.xlabel('Idade')\n", - " plt.ylabel('Tarifa')\n", - " plt.legend()\n", - " plt.show()" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "8CLZyvMlh_Qj", - "colab_type": "text" - }, - "source": [ - "### Etapa de exploração e tratamento dos dados" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZfESkLx0EjB8", - "colab_type": "text" - }, - "source": [ - "Importando os dados dos passageiros do titanic e selecionando uma amostragem dos dados para uma melhor visualização. O objetivo dessa tarefa de classificação é prever os passageiros sobreviventes com base nas suas informações pessoais.\n", - "\n", - "Fonte: [Kaggle](https://www.kaggle.com/c/titanic/data)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Yq6eIh3NJnuN", - "colab_type": "code", - "colab": {} - }, - "source": [ - "df = pd.read_csv('https://raw.githubusercontent.com/intelligentagents/aprendizagem-supervisionada/master/data/pricing_houses_small.csv')\n", - "\n", - "#Selecionando uma amostragem dos dados para uma melhor visualização\n", - "df = df.loc[:, ['LotArea', 'PoolArea', 'GarageArea', 'OverallCond','YearBuilt', 'MSZoning', 'SalePrice']]" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "g-LzSHX1Jpg1", - "colab_type": "text" - }, - "source": [ - "Descrevendo o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "hpLEK45DJomb", - "colab_type": "code", - "outputId": "c9ce32b0-021e-404c-8e77-78b4975dfa7b", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 238 - } - }, - "source": [ - "# Exporando o dataset\n", - "df.info()" - ], - "execution_count": 22, - "outputs": [ - { - "output_type": "stream", - "text": [ - "\n", - "Int64Index: 100 entries, 44 to 20\n", - "Data columns (total 8 columns):\n", - "Unnamed: 0 100 non-null int64\n", - "LotArea 100 non-null int64\n", - "PoolArea 100 non-null int64\n", - "GarageArea 100 non-null int64\n", - "OverallCond 100 non-null int64\n", - "YearBuilt 100 non-null int64\n", - "MSZoning 100 non-null object\n", - "SalePrice 100 non-null int64\n", - "dtypes: int64(7), object(1)\n", - "memory usage: 7.0+ KB\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "HQOuXFFIi8OZ", - "colab_type": "code", - "outputId": "6ffbf191-4651-45b5-a166-b8d966ecdfa1", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 297 - } - }, - "source": [ - "# Visualizando o sumário das colunas numéricas do dataset\n", - "df.describe()" - ], - "execution_count": 23, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltSalePrice
count100.000000100.000000100.0100.000000100.000000100.000000100.000000
mean775.81000010898.0900000.0522.9300005.8900001970.320000199800.560000
std394.2436746259.6402080.0233.0492321.30186331.13829776041.565893
min26.0000001477.0000000.00.0000003.0000001875.00000080000.000000
25%546.7500008381.2500000.0440.0000005.0000001950.000000148375.000000
50%802.00000010760.5000000.0551.0000005.0000001976.000000195000.000000
75%1039.00000012068.7500000.0616.5000007.0000002002.000000235032.000000
max1442.00000046589.0000000.01014.0000009.0000002009.000000437154.000000
\n", - "
" - ], - "text/plain": [ - " Unnamed: 0 LotArea ... YearBuilt SalePrice\n", - "count 100.000000 100.000000 ... 100.000000 100.000000\n", - "mean 775.810000 10898.090000 ... 1970.320000 199800.560000\n", - "std 394.243674 6259.640208 ... 31.138297 76041.565893\n", - "min 26.000000 1477.000000 ... 1875.000000 80000.000000\n", - "25% 546.750000 8381.250000 ... 1950.000000 148375.000000\n", - "50% 802.000000 10760.500000 ... 1976.000000 195000.000000\n", - "75% 1039.000000 12068.750000 ... 2002.000000 235032.000000\n", - "max 1442.000000 46589.000000 ... 2009.000000 437154.000000\n", - "\n", - "[8 rows x 7 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 23 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "tgh2pe9lJtr6", - "colab_type": "text" - }, - "source": [ - "Visualizando o dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "EvY28fJdJxey", - "colab_type": "code", - "outputId": "78c50f90-226c-4e9b-daaf-9d7ad88be480", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df.head(5)" - ], - "execution_count": 20, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
4496411316051052002RL214900
471887018052851979RL153337
5315313500056471960RL235000
078912205044481966RL187500
378216285060552001RL187100
\n", - "
" - ], - "text/plain": [ - " Unnamed: 0 LotArea PoolArea ... YearBuilt MSZoning SalePrice\n", - "44 964 11316 0 ... 2002 RL 214900\n", - "47 188 7018 0 ... 1979 RL 153337\n", - "53 153 13500 0 ... 1960 RL 235000\n", - "0 789 12205 0 ... 1966 RL 187500\n", - "3 782 16285 0 ... 2001 RL 187100\n", - "\n", - "[5 rows x 8 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 20 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jiMAqVghJylz", - "colab_type": "text" - }, - "source": [ - "Preenchendo os valores númericos nulos (NA) com a mediana." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "KFDodNK4JzlR", - "colab_type": "code", - "outputId": "d5d62346-ce53-4ac0-e74d-6d447c2d23a5", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "df = df.fillna(df.median())\n", - "\n", - "df.head(5)" - ], - "execution_count": 21, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0LotAreaPoolAreaGarageAreaOverallCondYearBuiltMSZoningSalePrice
4496411316051052002RL214900
471887018052851979RL153337
5315313500056471960RL235000
078912205044481966RL187500
378216285060552001RL187100
\n", - "
" - ], - "text/plain": [ - " Unnamed: 0 LotArea PoolArea ... YearBuilt MSZoning SalePrice\n", - "44 964 11316 0 ... 2002 RL 214900\n", - "47 188 7018 0 ... 1979 RL 153337\n", - "53 153 13500 0 ... 1960 RL 235000\n", - "0 789 12205 0 ... 1966 RL 187500\n", - "3 782 16285 0 ... 2001 RL 187100\n", - "\n", - "[5 rows x 8 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 21 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jXWksGyoJ0u3", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis independentes e visualizando as 5 primeiras:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "lJ0y3JijJ1ii", - "colab_type": "code", - "outputId": "0187a2d8-9a56-42f8-f315-176ec59a1219", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X = df.iloc[:, [5, 9]].values\n", - "X[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[ 26. , 14.4583],\n", - " [ 26. , 7.55 ],\n", - " [ 7. , 29.125 ],\n", - " [ 26. , 146.5208],\n", - " [ 29. , 15.2458]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 8 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "uISYBhKqUqpQ", - "colab_type": "text" - }, - "source": [ - "Definindo as variáveis dependentes e visualizando as 5 primeiras:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "okQl0J1SUq9h", - "colab_type": "code", - "outputId": "42cd730b-3886-48a1-e117-54da7663f8db", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "y = df.iloc[:, 1].values\n", - "y[:5]\n" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([0, 0, 0, 1, 1])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 9 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yzJ08rJ4J3CS", - "colab_type": "text" - }, - "source": [ - " Criando os subconjuntos de treinamento e testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "tVz1mTUOJ4Tb", - "colab_type": "code", - "outputId": "c97d6fa7-10ea-4bec-c1d6-a67ad0a0b8c7", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .2, random_state = 42)\n", - "\n", - "print(\"Tamanho do Dataset. {}\".format(df.shape[0]))\n", - "print(\"Tamanho do Conjunto de Treinamento. {}\".format(len(X_train)))\n", - "print(\"Tamanho do Conjunto de Testes. {}\".format(len(X_test)))" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Tamanho do Dataset. 100\n", - "Tamanho do Conjunto de Treinamento. 80\n", - "Tamanho do Conjunto de Testes. 20\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OcQtLvcXJ7NT", - "colab_type": "text" - }, - "source": [ - "Normalizando as features e exibindo as 5 primeiras:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "aXvlvQ9DJ7i3", - "colab_type": "code", - "outputId": "1bbd577a-6f18-4d0b-c924-4f4d0baa371e", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "source": [ - "X_train = feature_scaling(X_train)\n", - "X_test = feature_scaling(X_test)\n", - "\n", - "X_train[:5]" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[-0.2233842 , 0.62589282],\n", - " [ 0.50330481, -0.63776468],\n", - " [ 0.35796701, -0.68999987],\n", - " [-0.0780464 , -0.55753246],\n", - " [-0.58672871, -0.2466326 ]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 11 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "jGXuG35WJ_Tj", - "colab_type": "text" - }, - "source": [ - "Treinando o modelo de Árvore de Decisão com o Conjunto de Treinamento" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "gIqtlsYGmOYq" - }, - "source": [ - "### Etapa de Treinamento e Validação do Modelo" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "oF9z-OwymOYs" - }, - "source": [ - "Importando e treinando o modelo com o conjunto de treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "8d5f3b06-3372-42a4-fe53-7affbad191ba", - "id": "G1uuhHzumOYt", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 136 - } - }, - "source": [ - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "classifier = LogisticRegression(random_state = 0)\n", - "classifier.fit(X_train, y_train)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", - " FutureWarning)\n" - ], - "name": "stderr" - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", - " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", - " multi_class='warn', n_jobs=None, penalty='l2',\n", - " random_state=0, solver='warn', tol=0.0001, verbose=0,\n", - " warm_start=False)" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 12 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "sKGRDMbWmOY1" - }, - "source": [ - "Prevendo os resultados do modelo criado com o conjunto de testes" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "10be0e36-54f6-4530-8378-9c4b2f72ff8e", - "id": "FAvYq8NemOY3", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "y_pred = classifier.predict(X_test)\n", - "\n", - "y_pred" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 13 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "2qVdkDyzmOY_" - }, - "source": [ - "Criando e exibindo os valores da matriz de confusão com o conjunto de testes " - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "412d2fd2-d655-4a5c-c8c0-b906049447ec", - "id": "dzm-N1R7mOZD", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - } - }, - "source": [ - "tn, fp, fn, tp = confusion_matrix(y_test, y_pred).ravel()\n", - "\n", - "confusion_matrix(y_test, y_pred)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[14, 1],\n", - " [ 3, 2]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 14 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "Vl2JrA-cmOZI" - }, - "source": [ - "Visualizando a matriz de confusão" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "b66d506b-fa33-4666-a495-c5587d614bf7", - "id": "o8x_wA2CmOZJ", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 241 - } - }, - "source": [ - "mat = confusion_matrix(y_test, y_pred)\n", - "sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False)\n", - "plt.xlabel('true label')\n", - "plt.ylabel('predicted label');" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "y6TAt9MomOZL" - }, - "source": [ - "Visualizando a métrica de **acurácia** utilizando as funções criadas e a bibilioteca sklearn:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "680fcd92-32f2-4554-b847-0b75b5942e39", - "id": "rMMCqczomOZM", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "accuracy(tp, fp, fn, tn)\n", - "classifier.score(X_test, y_test)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.8" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 16 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "rAL1ztqJmOZP" - }, - "source": [ - "Exibindo a medida **f-measure**:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "60cff7ee-505a-4dc2-eb59-73785668ef2f", - "id": "dcg2oWJImOZQ", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "f_measure(tp, fp, fn)\n", - "f1_score(y_test, y_pred) " - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "0.5" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 17 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "6SG8SzeXmOZS" - }, - "source": [ - "Exibindo os resultados do conjunto de treinamento:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "8e82d219-2e85-4201-a88e-b4cbecb69c00", - "id": "_xENnpTxmOZU", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 355 - } - }, - "source": [ - "plot_results_class(X_train, y_train, classifier, 'Regressão Logística (Conj. de Treinamento)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" - ], - "name": "stderr" - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\ncgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "QwmncO8mmOZa" - }, - "source": [ - "Exibindo os resultados do conjunto de testes:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "outputId": "62772bbd-82e5-4f3a-fe3c-2f1f92430914", - "id": "tA-DeHAMmOZb", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 355 - } - }, - "source": [ - "plot_results_class(X_test, y_test, classifier, 'Regressão Logística (Conj. de Testes)')" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n", - "'c' argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with 'x' & 'y'. Please use a 2-D array with a single row if you really want to specify the same RGB or RGBA value for all points.\n" - ], - "name": "stderr" - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - } - ] -} \ No newline at end of file