{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Máquina de Vetores de Suporte com Python\n",
    "#### Realizando a classificação de uma base de dados do censo usando o método máquinas de vetores de suporte (SVM) com a linguagem de programação Python."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Pré-processamento dos dados"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca pandas do python\n",
    "import pandas as pd\n",
    "\n",
    "# atribuindo os registros da base de dados para o objeto \"dataframe\"\n",
    "dataframe = pd.read_csv('census.csv', encoding = 'utf-8', sep = ',')\n",
    "\n",
    "# separando os atributos previsores e classe \n",
    "previsores = dataframe.iloc[:, 0:14].values\n",
    "classe = dataframe.iloc[:, 14].values\n",
    "\n",
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.preprocessing import LabelEncoder, OneHotEncoder\n",
    "# LabelEncoder é uma função responsável por  normalizar rótulos\n",
    "# o objetivo é transoformar variáveis categóricas em numéricas\n",
    "# função \"OneHotEncoder\" responsável por fazer a trasnformação em variáveis \"dummy\"\n",
    "\n",
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.compose import ColumnTransformer\n",
    "# função \"ColumnTransformer\" responsável por definir quais colunas o objeto irá agir na alteração\n",
    "\n",
    "# criando o objeto \"labelencoder_previsores\" para fazer a transformação dos atributos categóricos em numéricos\n",
    "labelencoder_previsores = LabelEncoder()\n",
    "\n",
    "# aplicando a transformação em todos os campos de dados categóricos usando o objeto criado e definido \n",
    "# \"LabelEncoder_previsores\"\n",
    "previsores[:,1] = labelencoder_previsores.fit_transform(previsores[:,1])\n",
    "previsores[:,3] = labelencoder_previsores.fit_transform(previsores[:,3])\n",
    "previsores[:,5] = labelencoder_previsores.fit_transform(previsores[:,5])\n",
    "previsores[:,6] = labelencoder_previsores.fit_transform(previsores[:,6])\n",
    "previsores[:,7] = labelencoder_previsores.fit_transform(previsores[:,7])\n",
    "previsores[:,8] = labelencoder_previsores.fit_transform(previsores[:,8])\n",
    "previsores[:,9] = labelencoder_previsores.fit_transform(previsores[:,9])\n",
    "previsores[:,13] = labelencoder_previsores.fit_transform(previsores[:,13])\n",
    "\n",
    "# criando e configurando o objeto onehotencoder\n",
    "onehotencoder = ColumnTransformer(transformers = [('OneHot', OneHotEncoder(), [1,3,5,6,7,8,9,13])], \n",
    "                                  remainder = 'passthrough')\n",
    "\n",
    "# transformando os atributos previsores em variáveis do tipo \"dummy\"\n",
    "previsores = onehotencoder.fit_transform(previsores).toarray()\n",
    "\n",
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# criando e configurando o objeto \"scaler\"\n",
    "scaler = StandardScaler()\n",
    "\n",
    "# aplicando o escaolonamento nos atributos previsores\n",
    "previsores = scaler.fit_transform(previsores)\n",
    "\n",
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.model_selection import train_test_split\n",
    "# a função \"train_test_split\" tem a função de separar modelos de treinamento e modelos de teste em uma base \n",
    "#de dados\n",
    "\n",
    "# separando as bases de dados entre modelos de treinamento e modelos de teste\n",
    "previsores_treinamento, previsores_teste, classe_treinamento, classe_teste = train_test_split(previsores, \n",
    "                                                                                             classe,\n",
    "                                                                                             test_size = 0.15, \n",
    "                                                                                             random_state = 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> **OBS** = Esse foi o melhor pré-processamento feito na base de dados para obter bons resultados."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Máquinas de Vetores de Suporte com Python (kernel linear)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.svm import SVC\n",
    "# função 'SVC' responsável pela apicação do algoritmo SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# criando o objeto classificador e configurando-o para a treinamento usando o SVM\n",
    "classificador = SVC(kernel = 'linear', random_state = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='scale', kernel='linear',\n",
       "    max_iter=-1, probability=False, random_state=1, shrinking=True, tol=0.001,\n",
       "    verbose=False)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# fazendo o treinamento do algoritmo usando a base de dados e o objeto criado\n",
    "classificador.fit(previsores_treinamento, classe_treinamento)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# realizando a predição usando o algoritmo e uma base de dados para teste\n",
    "previsoes = classificador.predict(previsores_teste)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' >50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados obtida pelo algoritmo com a base de dados de teste\n",
    "print(previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' <=50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados original para a base de dados de teste\n",
    "print(classe_teste)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analisando a capacidade de predição do algoritmo (kernel linear)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a precisão de acertos do algoritmo\n",
    "precisao = accuracy_score(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8507676560900717\n"
     ]
    }
   ],
   "source": [
    "# analisando a precisão de acertos do algoritmo\n",
    "print(precisao)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "O algoritmo (kernel linear) teve uma precisão de acertos de **85.07%**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a matriz de confusão das predições feitas pelo algoritmo\n",
    "matriz = confusion_matrix(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[3459  234]\n",
      " [ 495  697]]\n"
     ]
    }
   ],
   "source": [
    "# analisando a matriz de confusão das predições feitas pelo algoritmo\n",
    "print(matriz)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Observando a matriz de confusão acima, 3459 dados relativos a pessoas que recebem menos que 50 mil por ano foram classificados corretamente, juntamente com 697 dados para pessoas que recebem a mais que essa quantia. Entretanto, 234 dados relativos a pessoas que recebem menos que a quantia em questão foram classificados de forma incorreta como se recebessem mais que isso, assim como 495 dados relativos a pessoas que recebem a mais foram classificadas incorretamente como se recebessem menos."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Máquinas de Vetores de Suporte com Python (kernel poly)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.svm import SVC\n",
    "# função 'SVC' responsável pela apicação do algoritmo SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# criando o objeto classificador e configurando-o para a treinamento usando o SVM\n",
    "classificador = SVC(kernel = 'poly', random_state = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='scale', kernel='poly',\n",
       "    max_iter=-1, probability=False, random_state=1, shrinking=True, tol=0.001,\n",
       "    verbose=False)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# fazendo o treinamento do algoritmo usando a base de dados e o objeto criado\n",
    "classificador.fit(previsores_treinamento, classe_treinamento)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# realizando a predição usando o algoritmo e uma base de dados para teste\n",
    "previsoes = classificador.predict(previsores_teste)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' >50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados obtida pelo algoritmo com a base de dados de teste\n",
    "print(previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' <=50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados original para a base de dados de teste\n",
    "print(classe_teste)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analisando a capacidade de predição do algoritmo (kernel poly)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a precisão de acertos do algoritmo\n",
    "precisao = accuracy_score(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8296827021494371\n"
     ]
    }
   ],
   "source": [
    "# analisando a precisão de acertos do algoritmo\n",
    "print(precisao)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A precisão de acertos para o algoritmo (kernel poly) foi de **82.96%**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a matriz de confusão das predições feitas pelo algoritmo\n",
    "matriz = confusion_matrix(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[3478  215]\n",
      " [ 617  575]]\n"
     ]
    }
   ],
   "source": [
    "# analisando a matriz de confusão das predições feitas pelo algoritmo\n",
    "print(matriz)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Observando a matriz de confusão acima, 3478 dados relativos a pessoas que recebem menos que 50 mil por ano foram classificados corretamente, juntamente com 575 dados para pessoas que recebem a mais que essa quantia. Entretanto, 215 dados relativos a pessoas que recebem menos que a quantia em questão foram classificados de forma incorreta como se recebessem mais que isso, assim como 617 dados relativos a pessoas que recebem a mais foram classificadas incorretamente como se recebessem menos."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Máquinas de Vetores de Suporte com Python (kernel sigmoid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.svm import SVC\n",
    "# função 'SVC' responsável pela apicação do algoritmo SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# criando o objeto classificador e configurando-o para a treinamento usando o SVM\n",
    "classificador = SVC(kernel = 'sigmoid', random_state = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='scale', kernel='sigmoid',\n",
       "    max_iter=-1, probability=False, random_state=1, shrinking=True, tol=0.001,\n",
       "    verbose=False)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# fazendo o treinamento do algoritmo usando a base de dados e o objeto criado\n",
    "classificador.fit(previsores_treinamento, classe_treinamento)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# realizando a predição usando o algoritmo e uma base de dados para teste\n",
    "previsoes = classificador.predict(previsores_teste)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' >50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados obtida pelo algoritmo com a base de dados de teste\n",
    "print(previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' <=50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados original para a base de dados de teste\n",
    "print(classe_teste)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analisando a capacidade de predição do algoritmo (kernel sigmoid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a precisão de acertos do algoritmo\n",
    "precisao = accuracy_score(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8216990788126919\n"
     ]
    }
   ],
   "source": [
    "# analisando a precisão de acertos do algoritmo\n",
    "print(precisao)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A capacidade de predição do algoritmo (kernel sigmoid) foi de **82.16%**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a matriz de confusão das predições feitas pelo algoritmo\n",
    "matriz = confusion_matrix(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[3341  352]\n",
      " [ 519  673]]\n"
     ]
    }
   ],
   "source": [
    "# analisando a matriz de confusão das predições feitas pelo algoritmo\n",
    "print(matriz)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Observando a matriz de confusão acima, 3341 dados relativos a pessoas que recebem menos que 50 mil por ano foram classificados corretamente, juntamente com 673 dados para pessoas que recebem a mais que essa quantia. Entretanto, 352 dados relativos a pessoas que recebem menos que a quantia em questão foram classificados de forma incorreta como se recebessem mais que isso, assim como 519 dados relativos a pessoas que recebem a mais foram classificadas incorretamente como se recebessem menos."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Máquinas de Vetores de Suporte com Python (kernel rbf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.svm import SVC\n",
    "# função 'SVC' responsável pela apicação do algoritmo SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# criando o objeto classificador e configurando-o para a treinamento usando o SVM\n",
    "classificador = SVC(kernel = 'rbf', random_state = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,\n",
       "    decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',\n",
       "    max_iter=-1, probability=False, random_state=1, shrinking=True, tol=0.001,\n",
       "    verbose=False)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# fazendo o treinamento do algoritmo usando a base de dados e o objeto criado\n",
    "classificador.fit(previsores_treinamento, classe_treinamento)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "# realizando a predição usando o algoritmo e uma base de dados para teste\n",
    "previsoes = classificador.predict(previsores_teste)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' >50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados obtida pelo algoritmo com a base de dados de teste\n",
    "print(previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[' <=50K' ' <=50K' ' <=50K' ... ' <=50K' ' <=50K' ' <=50K']\n"
     ]
    }
   ],
   "source": [
    "# observando a saída de dados original para a base de dados de teste\n",
    "print(classe_teste)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analisando a capacidade de predição do algoritmo (kernel rbf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca sklearn do python\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a precisão de acertos do algoritmo\n",
    "precisao = accuracy_score(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8493346980552713\n"
     ]
    }
   ],
   "source": [
    "# analisando a precisão de acertos do algoritmo\n",
    "print(precisao)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "O algoritmo de classificação pelo método SVM (kernel rbf) obteve uma precisão de acertos de **84.93%**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "# obtendo a matriz de confusão das predições feitas pelo algoritmo\n",
    "matriz = confusion_matrix(classe_teste, previsoes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[3470  223]\n",
      " [ 513  679]]\n"
     ]
    }
   ],
   "source": [
    "# analisando a matriz de confusão das predições feitas pelo algoritmo\n",
    "print(matriz)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Observando a matriz de confusão acima, 3470 dados relativos a pessoas que recebem menos que 50 mil por ano foram classificados corretamente, juntamente com 679 dados para pessoas que recebem a mais que essa quantia. Entretanto, 223 dados relativos a pessoas que recebem menos que a quantia em questão foram classificados de forma incorreta como se recebessem mais que isso, assim como 513 dados relativos a pessoas que recebem a mais foram classificadas incorretamente como se recebessem menos."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Observando o balaceamento das classes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# importando a biblioteca collections do python\n",
    "import collections"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Counter({' <=50K': 3693, ' >50K': 1192})"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# visualizando a quantidade de registros para cada uma das classes\n",
    "collections.Counter(classe_teste)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Alguma dúvida? Entre em contato comigo:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- [Me envie um e-mail](mailto:alysson.barbosa@ee.ufcg.edu.br);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}