Buscar

Primera Red Neuronal

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

{
 "cells": [
 {
 "cell_type": "code",
 "execution_count": 4,
 "metadata": {},
 "outputs": [],
 "source": [
 "import numpy as np\n",
 "import matplotlib.pyplot as plt\n",
 "import pandas as pd"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 5,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/html": [
 "<div>\n",
 "<style scoped>\n",
 " .dataframe tbody tr th:only-of-type {\n",
 " vertical-align: middle;\n",
 " }\n",
 "\n",
 " .dataframe tbody tr th {\n",
 " vertical-align: top;\n",
 " }\n",
 "\n",
 " .dataframe thead th {\n",
 " text-align: right;\n",
 " }\n",
 "</style>\n",
 "<table border=\"1\" class=\"dataframe\">\n",
 " <thead>\n",
 " <tr style=\"text-align: right;\">\n",
 " <th></th>\n",
 " <th>RowNumber</th>\n",
 " <th>CustomerId</th>\n",
 " <th>Surname</th>\n",
 " <th>CreditScore</th>\n",
 " <th>Geography</th>\n",
 " <th>Gender</th>\n",
 " <th>Age</th>\n",
 " <th>Tenure</th>\n",
 " <th>Balance</th>\n",
 " <th>NumOfProducts</th>\n",
 " <th>HasCrCard</th>\n",
 " <th>IsActiveMember</th>\n",
 " <th>EstimatedSalary</th>\n",
 " <th>Exited</th>\n",
 " </tr>\n",
 " </thead>\n",
 " <tbody>\n",
 " <tr>\n",
 " <th>0</th>\n",
 " <td>1</td>\n",
 " <td>15634602</td>\n",
 " <td>Hargrave</td>\n",
 " <td>619</td>\n",
 " <td>France</td>\n",
 " <td>Female</td>\n",
 " <td>42</td>\n",
 " <td>2</td>\n",
 " <td>0.00</td>\n",
 " <td>1</td>\n",
 " <td>1</td>\n",
 " <td>1</td>\n",
 " <td>101348.88</td>\n",
 " <td>1</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>1</th>\n",
 " <td>2</td>\n",
 " <td>15647311</td>\n",
 " <td>Hill</td>\n",
 " <td>608</td>\n",
 " <td>Spain</td>\n",
 " <td>Female</td>\n",
 " <td>41</td>\n",
 " <td>1</td>\n",
 " <td>83807.86</td>\n",
 " <td>1</td>\n",
 " <td>0</td>\n",
 " <td>1</td>\n",
 " <td>112542.58</td>\n",
 " <td>0</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>2</th>\n",
 " <td>3</td>\n",
 " <td>15619304</td>\n",
 " <td>Onio</td>\n",
 " <td>502</td>\n",
 " <td>France</td>\n",
 " <td>Female</td>\n",
 " <td>42</td>\n",
 " <td>8</td>\n",
 " <td>159660.80</td>\n",
 " <td>3</td>\n",
 " <td>1</td>\n",
 " <td>0</td>\n",
 " <td>113931.57</td>\n",
 " <td>1</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>3</th>\n",
 " <td>4</td>\n",
 " <td>15701354</td>\n",
 " <td>Boni</td>\n",
 " <td>699</td>\n",
 " <td>France</td>\n",
 " <td>Female</td>\n",
 " <td>39</td>\n",
 " <td>1</td>\n",
 " <td>0.00</td>\n",
 " <td>2</td>\n",
 " <td>0</td>\n",
 " <td>0</td>\n",
 " <td>93826.63</td>\n",
 " <td>0</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>4</th>\n",
 " <td>5</td>\n",
 " <td>15737888</td>\n",
 " <td>Mitchell</td>\n",
 " <td>850</td>\n",
 " <td>Spain</td>\n",
 " <td>Female</td>\n",
 " <td>43</td>\n",
 " <td>2</td>\n",
 " <td>125510.82</td>\n",
 " <td>1</td>\n",
 " <td>1</td>\n",
 " <td>1</td>\n",
 " <td>79084.10</td>\n",
 " <td>0</td>\n",
 " </tr>\n",
 " </tbody>\n",
 "</table>\n",
 "</div>"
 ],
 "text/plain": [
 " RowNumber CustomerId Surname CreditScore Geography Gender Age \\\n",
 "0 1 15634602 Hargrave 619 France Female 42 \n",
 "1 2 15647311 Hill 608 Spain Female 41 \n",
 "2 3 15619304 Onio 502 France Female 42 \n",
 "3 4 15701354 Boni 699 France Female 39 \n",
 "4 5 15737888 Mitchell 850 Spain Female 43 \n",
 "\n",
 " Tenure Balance NumOfProducts HasCrCard IsActiveMember \\\n",
 "0 2 0.00 1 1 1 \n",
 "1 1 83807.86 1 0 1 \n",
 "2 8 159660.80 3 1 0 \n",
 "3 1 0.00 2 0 0 \n",
 "4 2 125510.82 1 1 1 \n",
 "\n",
 " EstimatedSalary Exited \n",
 "0 101348.88 1 \n",
 "1 112542.58 0 \n",
 "2 113931.57 1 \n",
 "3 93826.63 0 \n",
 "4 79084.10 0 "
 ]
 },
 "execution_count": 5,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "dataset = pd.read_csv('Churn_Modelling.csv')\n",
 "dataset.head()"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 6,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "array([[619, 'France', 'Female', ..., 1, 1, 101348.88],\n",
 " [608, 'Spain', 'Female', ..., 0, 1, 112542.58],\n",
 " [502, 'France', 'Female', ..., 1, 0, 113931.57],\n",
 " ...,\n",
 " [709, 'France', 'Female', ..., 0, 1, 42085.58],\n",
 " [772, 'Germany', 'Male', ..., 1, 0, 92888.52],\n",
 " [792, 'France', 'Female', ..., 1, 0, 38190.78]], dtype=object)"
 ]
 },
 "execution_count": 6,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "X = dataset.iloc[:, 3:13].values\n",
 "X"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 7,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "array([1, 0, 1, ..., 1, 1, 0], dtype=int64)"
 ]
 },
 "execution_count": 7,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "y = dataset.iloc[:, 13].values\n",
 "y"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 8,
 "metadata": {},
 "outputs": [],
 "source": [
 "from sklearn.preprocessing import LabelEncoder\n",
 "labelencoder_X1 = LabelEncoder()\n",
 "X[:,1] = labelencoder_X1.fit_transform(X[:,1])"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 9,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "array([[619, 0, 'Female', ..., 1, 1, 101348.88],\n",
 " [608, 2, 'Female', ..., 0, 1, 112542.58],\n",
 " [502, 0, 'Female', ..., 1, 0, 113931.57],\n",
 " ...,\n",
 " [709, 0, 'Female', ..., 0, 1, 42085.58],\n",
 " [772, 1, 'Male', ..., 1, 0, 92888.52],\n",
 " [792, 0, 'Female', ..., 1, 0, 38190.78]], dtype=object)"
 ]
 },
 "execution_count": 9,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "X"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 10,
 "metadata": {},
 "outputs": [],
 "source": [
 "labelencoder_X2 = LabelEncoder()\n",
 "X[:,2] = labelencoder_X2.fit_transform(X[:,2])"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 11,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
"array([[619, 0, 0, ..., 1, 1, 101348.88],\n",
 " [608, 2, 0, ..., 0, 1, 112542.58],\n",
 " [502, 0, 0, ..., 1, 0, 113931.57],\n",
 " ...,\n",
 " [709, 0, 0, ..., 0, 1, 42085.58],\n",
 " [772, 1, 1, ..., 1, 0, 92888.52],\n",
 " [792, 0, 0, ..., 1, 0, 38190.78]], dtype=object)"
 ]
 },
 "execution_count": 11,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "X"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 12,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "array([[1.0, 0.0, 0.0, ..., 1, 1, 101348.88],\n",
 " [0.0, 0.0, 1.0, ..., 0, 1, 112542.58],\n",
 " [1.0, 0.0, 0.0, ..., 1, 0, 113931.57],\n",
 " ...,\n",
 " [1.0, 0.0, 0.0, ..., 0, 1, 42085.58],\n",
 " [0.0, 1.0, 0.0, ..., 1, 0, 92888.52],\n",
 " [1.0, 0.0, 0.0, ..., 1, 0, 38190.78]], dtype=object)"
 ]
 },
 "execution_count": 12,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "from sklearn.preprocessing import OneHotEncoder\n",
 "from sklearn.compose import ColumnTransformer\n",
 "\n",
 "transformer = ColumnTransformer(\n",
 " transformers=[\n",
 " (\"Churn_Modelling\", # Un nombre de la transformación\n",
 " OneHotEncoder(categories='auto'), # La clase a la que transformar\n",
 " [1] # Las columnas a transformar.\n",
 " )\n",
 " ], remainder='passthrough'\n",
 ")\n",
 "\n",
 "X = transformer.fit_transform(X)\n",
 "X"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 13,
 "metadata": {},
 "outputs": [],
 "source": [
 "X = X[:, 1:]"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 20,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "numpy.ndarray"
 ]
 },
 "execution_count": 20,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "type(X)"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 15,
 "metadata": {},
 "outputs": [],
 "source": [
 "from sklearn.model_selection import train_test_split\n",
 "X_train, X_test, Y_train, Y_test = train_test_split(X,y, test_size = 0.2, random_state = 0)\n",
 "\n",
 "from sklearn.preprocessing import StandardScaler\n",
 "sX = StandardScaler()\n",
 "X_train = sX.fit_transform(X_train)\n",
 "X_test = sX.transform(X_test)"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 21,
 "metadata": {},
 "outputs": [
 {
 "name": "stderr",
 "output_type": "stream",
 "text": [
 "Using TensorFlow backend.\n",
 "C:\\Users\\artur\\.conda\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:11: UserWarning: Update your `Dropout` call to the Keras 2 API: `Dropout(rate=0.1)`\n",
 " # This is added back by InteractiveShellApp.init_path()\n",
 "C:\\Users\\artur\\.conda\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:15: UserWarning: Update your `Dropout` call to the Keras 2 API: `Dropout(rate=0.1)`\n",
 " from ipykernel import kernelapp as app\n"
 ]
 },
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "Epoch 1/100\n",
 "8000/8000 [==============================] - 1s 183us/step - loss: 0.4939 - accuracy: 0.7950\n",
 "Epoch 2/100\n",
 "8000/8000 [==============================] - 1s 151us/step - loss: 0.4291 - accuracy: 0.8133\n",
 "Epoch 3/100\n",
 "8000/8000 [==============================] - 1s 156us/step - loss: 0.4253 - accuracy: 0.8191\n",
 "Epoch 4/100\n",
 "8000/8000 [==============================] - 1s 164us/step - loss: 0.4220 - accuracy: 0.8207\n",
 "Epoch 5/100\n",
 "8000/8000 [==============================] - 1s 183us/step - loss: 0.4170 - accuracy: 0.8214\n",
 "Epoch 6/100\n",
 "8000/8000 [==============================] - 1s 159us/step - loss: 0.4120 - accuracy: 0.8246\n",
 "Epoch 7/100\n",
 "8000/8000 [==============================] - 1s 160us/step - loss: 0.4070 - accuracy: 0.8231\n",
 "Epoch 8/100\n",
 "8000/8000 [==============================] - 1s 158us/step - loss: 0.4093 - accuracy: 0.8221\n",
 "Epoch 9/100\n",
 "8000/8000 [==============================] - 1s 157us/step - loss: 0.4061 - accuracy: 0.8201\n",
 "Epoch 10/100\n",
 "8000/8000 [==============================] - 1s 158us/step - loss: 0.3987 - accuracy: 0.8231\n",
 "Epoch 11/100\n",
 "8000/8000 [==============================] - 1s 159us/step - loss: 0.4030 - accuracy: 0.8232\n",
 "Epoch 12/100\n",
 "8000/8000 [==============================] - 1s 167us/step - loss: 0.4001 - accuracy: 0.8235\n",
 "Epoch 13/100\n",
 "8000/8000 [==============================] - 1s 157us/step - loss: 0.4014 - accuracy: 0.8274\n",
 "Epoch 14/100\n",
 "8000/8000 [==============================] - 1s 160us/step - loss: 0.3991 - accuracy: 0.8355\n",
 "Epoch 15/100\n",
 "8000/8000 [==============================] - 1s 155us/step - loss: 0.3947 - accuracy: 0.8325\n",
 "Epoch 16/100\n",
 "8000/8000 [==============================] - 1s 156us/step - loss: 0.3925 - accuracy: 0.8324\n",
 "Epoch 17/100\n",
 "8000/8000 [==============================] - 1s 161us/step - loss: 0.3934 - accuracy: 0.8322\n",
 "Epoch 18/100\n",
 "8000/8000 [==============================] - 1s 163us/step - loss: 0.3924 - accuracy: 0.8342\n",
 "Epoch 19/100\n",
 "8000/8000 [==============================] - 1s 154us/step - loss: 0.3938 - accuracy: 0.8335\n",
 "Epoch 20/100\n",
 "8000/8000 [==============================] - 1s 150us/step - loss: 0.3882 - accuracy: 0.8391\n",
 "Epoch 21/100\n",
 "8000/8000 [==============================] - 1s 153us/step - loss: 0.3927 - accuracy: 0.8345\n",
 "Epoch 22/100\n",
 "8000/8000 [==============================] - 1s 152us/step - loss: 0.3875 - accuracy: 0.8365\n",
 "Epoch 23/100\n",
 "8000/8000 [==============================] - 1s 149us/step - loss: 0.3940 - accuracy: 0.8340\n",
 "Epoch 24/100\n",
 "8000/8000 [==============================] - 1s 151us/step - loss: 0.3930 - accuracy: 0.8378\n",
 "Epoch 25/100\n",
 "8000/8000 [==============================] - 1s 161us/step - loss: 0.3869 - accuracy: 0.8356\n",
 "Epoch 26/100\n",
 "8000/8000 [==============================] - 1s 168us/step - loss: 0.3937 - accuracy: 0.8329\n",
 "Epoch 27/100\n",
 "8000/8000 [==============================] - 1s 165us/step - loss: 0.3918 - accuracy: 0.8364\n",
 "Epoch 28/100\n",
 "8000/8000 [==============================] - 1s 159us/step - loss: 0.3893 - accuracy: 0.8349\n",
 "Epoch 29/100\n",
 "8000/8000 [==============================] - 1s 156us/step - loss: 0.3895 - accuracy: 0.8342\n",
 "Epoch 30/100\n",
 "8000/8000 [==============================] - 1s 165us/step - loss: 0.3876 - accuracy: 0.8390\n",
 "Epoch 31/100\n",
 "8000/8000 [==============================] - 1s 160us/step - loss: 0.3890 - accuracy: 0.8370\n",
 "Epoch 32/100\n",
 "8000/8000 [==============================] - 1s 150us/step - loss: 0.3899 - accuracy: 0.8366\n",
 "Epoch 33/100\n",
 "8000/8000 [==============================] - 1s 159us/step - loss: 0.3888 - accuracy: 0.8372\n",
 "Epoch 34/100\n",
 "8000/8000 [==============================] - 1s 160us/step - loss: 0.3890 - accuracy: 0.8353\n",
 "Epoch 35/100\n",
 "8000/8000 [==============================] - 1s 166us/step - loss: 0.3920 - accuracy: 0.8361\n",
 "Epoch 36/100\n",
 "8000/8000 [==============================] - 1s 161us/step - loss: 0.3886 - accuracy: 0.8361\n",
 "Epoch 37/100\n",
 "8000/8000 [==============================] - 1s
156us/step - loss: 0.3903 - accuracy: 0.8354\n",
 "Epoch 38/100\n",
 "8000/8000 [==============================] - 1s 156us/step - loss: 0.3869 - accuracy: 0.8400\n",
 "Epoch 39/100\n",
 "8000/8000 [==============================] - 1s 152us/step - loss: 0.3912 - accuracy: 0.8346\n",
 "Epoch 40/100\n",
 "8000/8000 [==============================] - 1s 157us/step - loss: 0.3908 - accuracy: 0.8357\n",
 "Epoch 41/100\n",
 "8000/8000 [==============================] - 1s 164us/step - loss: 0.3855 - accuracy: 0.8372\n",
 "Epoch 42/100\n",
 "8000/8000 [==============================] - 1s 168us/step - loss: 0.3887 - accuracy: 0.8389\n",
 "Epoch 43/100\n",
 "8000/8000 [==============================] - 2s 190us/step - loss: 0.3869 - accuracy: 0.8401\n",
 "Epoch 44/100\n",
 "8000/8000 [==============================] - 1s 168us/step - loss: 0.3850 - accuracy: 0.8378\n",
 "Epoch 45/100\n",
 "8000/8000 [==============================] - 1s 161us/step - loss: 0.3891 - accuracy: 0.8379\n",
 "Epoch 46/100\n",
 "8000/8000 [==============================] - 1s 165us/step - loss: 0.3857 - accuracy: 0.8394\n",
 "Epoch 47/100\n",
 "8000/8000 [==============================] - 1s 149us/step - loss: 0.3868 - accuracy: 0.8355\n",
 "Epoch 48/100\n",
 "8000/8000 [==============================] - 1s 151us/step - loss: 0.3881 - accuracy: 0.8380\n",
 "Epoch 49/100\n",
 "8000/8000 [==============================] - 1s 151us/step - loss: 0.3827 - accuracy: 0.8370\n",
 "Epoch 50/100\n",
 "8000/8000 [==============================] - 1s 154us/step - loss: 0.3877 - accuracy: 0.8395\n",
 "Epoch 51/100\n",
 "8000/8000 [==============================] - 1s 154us/step - loss: 0.3913 - accuracy: 0.8360\n",
 "Epoch 52/100\n",
 "8000/8000 [==============================] - 1s 168us/step - loss: 0.3841 - accuracy: 0.8370\n",
 "Epoch 53/100\n",
 "8000/8000 [==============================] - 1s 160us/step - loss: 0.3862 - accuracy: 0.8371\n",
 "Epoch 54/100\n",
 "8000/8000 [==============================] - 1s 154us/step - loss: 0.3865 - accuracy: 0.8364\n",
 "Epoch 55/100\n",
 "8000/8000 [==============================] - 1s 186us/step - loss: 0.3903 - accuracy: 0.8382\n",
 "Epoch 56/100\n",
 "8000/8000 [==============================] - 1s 163us/step - loss: 0.3888 - accuracy: 0.8345\n",
 "Epoch 57/100\n",
 "8000/8000 [==============================] - 1s 157us/step - loss: 0.3855 - accuracy: 0.8374\n",
 "Epoch 58/100\n",
 "8000/8000 [==============================] - 1s 150us/step - loss: 0.3853 - accuracy: 0.8384\n",
 "Epoch 59/100\n",
 "8000/8000 [==============================] - 1s 151us/step - loss: 0.3898 - accuracy: 0.8344\n",
 "Epoch 60/100\n",
 "8000/8000 [==============================] - 1s 163us/step - loss: 0.3921 - accuracy: 0.8369\n",
 "Epoch 61/100\n",
 "8000/8000 [==============================] - 1s 163us/step - loss: 0.3840 - accuracy: 0.8430\n",
 "Epoch 62/100\n",
 "8000/8000 [==============================] - 1s 158us/step - loss: 0.3825 - accuracy: 0.8409\n",
 "Epoch 63/100\n",
 "8000/8000 [==============================] - 1s 150us/step - loss: 0.3850 - accuracy: 0.8414\n",
 "Epoch 64/100\n",
 "8000/8000 [==============================] - 1s 172us/step - loss: 0.3888 - accuracy: 0.8381\n",
 "Epoch 65/100\n",
 "8000/8000 [==============================] - 1s 175us/step - loss: 0.3869 - accuracy: 0.8375\n",
 "Epoch 66/100\n",
 "8000/8000 [==============================] - 1s 170us/step - loss: 0.3850 - accuracy: 0.8389\n",
 "Epoch 67/100\n",
 "8000/8000 [==============================] - 2s 218us/step - loss: 0.3860 - accuracy: 0.8372\n",
 "Epoch 68/100\n",
 "8000/8000 [==============================] - 1s 178us/step - loss: 0.3911 - accuracy: 0.8375\n",
 "Epoch 69/100\n",
 "8000/8000 [==============================] - 1s 156us/step - loss: 0.3853 - accuracy: 0.8370\n",
 "Epoch 70/100\n",
 "8000/8000 [==============================] - 1s 162us/step - loss: 0.3850 - accuracy: 0.8399\n",
 "Epoch 71/100\n",
 "8000/8000 [==============================] - 1s 169us/step - loss: 0.3860 - accuracy: 0.8397\n",
 "Epoch 72/100\n",
 "8000/8000 [==============================] - 1s 168us/step - loss: 0.3873 - accuracy: 0.8380\n",
 "Epoch 73/100\n",
 "8000/8000 [==============================] - 1s 166us/step - loss: 0.3823 - accuracy: 0.8428\n",
 "Epoch 74/100\n",
 "8000/8000 [==============================] - 1s 167us/step - loss: 0.3860 - accuracy: 0.8395\n",
 "Epoch 75/100\n",
 "8000/8000 [==============================] - 1s 156us/step - loss: 0.3854 - accuracy: 0.8355\n",
 "Epoch 76/100\n",
 "8000/8000 [==============================] - 1s 164us/step - loss: 0.3847 - accuracy: 0.8391\n",
 "Epoch 77/100\n",
 "8000/8000 [==============================] - 1s 171us/step - loss: 0.3873 - accuracy: 0.8353\n",
 "Epoch 78/100\n"
 ]
 },
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "8000/8000 [==============================] - 1s 155us/step - loss: 0.3868 - accuracy: 0.8405\n",
 "Epoch 79/100\n",
 "8000/8000 [==============================] - 1s 168us/step - loss: 0.3855 - accuracy: 0.8371\n",
 "Epoch 80/100\n",
 "8000/8000 [==============================] - 1s 165us/step - loss: 0.3903 - accuracy: 0.8360\n",
 "Epoch 81/100\n",
 "8000/8000 [==============================] - 1s 164us/step - loss: 0.3862 - accuracy: 0.8365\n",
 "Epoch 82/100\n",
 "8000/8000 [==============================] - 1s 167us/step - loss: 0.3892 - accuracy: 0.8391\n",
 "Epoch 83/100\n",
 "8000/8000 [==============================] - 1s 167us/step - loss: 0.3877 - accuracy: 0.8389\n",
 "Epoch 84/100\n",
 "8000/8000 [==============================] - 1s 157us/step - loss: 0.3857 - accuracy: 0.8369\n",
 "Epoch 85/100\n",
 "8000/8000 [==============================] - 1s 166us/step - loss: 0.3870 - accuracy: 0.8405\n",
 "Epoch 86/100\n",
 "8000/8000 [==============================] - 1s 158us/step - loss: 0.3859 - accuracy: 0.8394\n",
 "Epoch 87/100\n",
 "8000/8000 [==============================] - 1s 162us/step - loss: 0.3918 - accuracy: 0.8388\n",
 "Epoch 88/100\n",
 "8000/8000 [==============================] - 1s 159us/step - loss: 0.3864 - accuracy: 0.8346\n",
 "Epoch 89/100\n",
 "8000/8000 [==============================] - 1s 166us/step - loss: 0.3921 - accuracy: 0.8360\n",
 "Epoch 90/100\n",
 "8000/8000 [==============================] - 1s 166us/step - loss: 0.3856 - accuracy: 0.8405\n",
 "Epoch 91/100\n",
 "8000/8000 [==============================] - 1s 176us/step - loss: 0.3835 - accuracy: 0.8406\n",
 "Epoch 92/100\n",
 "8000/8000 [==============================] - 1s 175us/step - loss: 0.3874 - accuracy: 0.8380\n",
 "Epoch 93/100\n",
 "8000/8000 [==============================] - 1s 161us/step - loss: 0.3865 - accuracy: 0.8378\n",
 "Epoch 94/100\n",
 "8000/8000 [==============================] - 1s 151us/step - loss: 0.3893 - accuracy: 0.8382\n",
 "Epoch 95/100\n",
 "8000/8000 [==============================] - 1s 149us/step - loss: 0.3861 - accuracy: 0.8379\n",
 "Epoch 96/100\n",
 "8000/8000 [==============================] - 1s 153us/step - loss: 0.3899 - accuracy: 0.8380\n",
 "Epoch 97/100\n",
 "8000/8000 [==============================] - 1s 152us/step - loss: 0.3833 - accuracy: 0.8395\n",
 "Epoch 98/100\n",
 "8000/8000 [==============================] - 1s 152us/step - loss: 0.3823 - accuracy: 0.8386\n",
 "Epoch 99/100\n",
 "8000/8000 [==============================] - 1s 153us/step - loss: 0.3845
- accuracy: 0.8385\n",
 "Epoch 100/100\n",
 "8000/8000 [==============================] - 1s 151us/step - loss: 0.3898 - accuracy: 0.8349\n"
 ]
 },
 {
 "data": {
 "text/plain": [
 "<keras.callbacks.callbacks.History at 0x1bf32632e08>"
 ]
 },
 "execution_count": 21,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "#construimos nuestra red neuronal\n",
 "import keras\n",
 "from keras.models import Sequential\n",
 "from keras.layers import Dense\n",
 "from keras.layers import Dropout\n",
 "\n",
 "clf = Sequential()\n",
 "\n",
 "#primera capa\n",
 "clf.add(Dense(units = 6,kernel_initializer = \"uniform\", activation = \"relu\", input_dim = 11))\n",
 "clf.add(Dropout(p=0.1))\n",
 "\n",
 "#segunda capa\n",
 "clf.add(Dense(units = 6,kernel_initializer = \"uniform\", activation = \"relu\"))\n",
 "clf.add(Dropout(p=0.1))\n",
 "\n",
 "#segunda capa\n",
 "clf.add(Dense(units = 1,kernel_initializer = \"uniform\", activation = \"sigmoid\"))\n",
 "\n",
 "#compilador de la RNA\n",
 "clf.compile(optimizer = \"adam\", loss = \"binary_crossentropy\", metrics = [\"accuracy\"])\n",
 "\n",
 "clf.fit(X_train, Y_train, batch_size = 10, epochs = 100)\n",
 "\n"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 22,
 "metadata": {},
 "outputs": [],
 "source": [
 "%matplotlib inline\n",
 "import itertools\n",
 "import matplotlib.pyplot as plt\n",
 "\n",
 "def plot_confusion_matrix(cm, classes,\n",
 " normalize=False,\n",
 " title='Confusion matrix',\n",
 " cmap=plt.cm.Blues):\n",
 " \"\"\"\n",
 " This function prints and plots the confusion matrix.\n",
 " Normalization can be applied by setting `normalize=True`.\n",
 " \"\"\"\n",
 " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
 " plt.title(title)\n",
 " plt.colorbar()\n",
 " tick_marks = np.arange(len(classes))\n",
 " plt.xticks(tick_marks, classes, rotation=45)\n",
 " plt.yticks(tick_marks, classes)\n",
 "\n",
 " if normalize:\n",
 " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
 " print(\"Normalized confusion matrix\")\n",
 " else:\n",
 " print('Confusion matrix, without normalization')\n",
 "\n",
 " print(cm)\n",
 "\n",
 " thresh = cm.max() / 2.\n",
 " for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
 " plt.text(j, i, cm[i, j],\n",
 " horizontalalignment=\"center\",\n",
 " color=\"white\" if cm[i, j] > thresh else \"black\")\n",
 "\n",
 " plt.tight_layout()\n",
 " plt.ylabel('True label')\n",
 " plt.xlabel('Predicted label')"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 23,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "array([[0.2783052 ],\n",
 " [0.23257479],\n",
 " [0.13026379],\n",
 " ...,\n",
 " [0.24824134],\n",
 " [0.17281795],\n",
 " [0.22080016]], dtype=float32)"
 ]
 },
 "execution_count": 23,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "#predecir\n",
 "y_pred = clf.predict(X_test)\n",
 "y_pred"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 24,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "array([[False],\n",
 " [False],\n",
 " [False],\n",
 " ...,\n",
 " [False],\n",
 " [False],\n",
 " [False]])"
 ]
 },
 "execution_count": 24,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "y_pred = (y_pred>0.5)\n",
 "y_pred"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 26,
 "metadata": {},
 "outputs": [
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "0.856\n"
 ]
 }
 ],
 "source": [
 "# Elaborar una matriz de confusión\n",
 "from sklearn.metrics import confusion_matrix\n",
 "cm = confusion_matrix(Y_test, y_pred)\n",
 "print((cm[0][0]+cm[1][1])/cm.sum())"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 27,
 "metadata": {},
 "outputs": [
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "Confusion matrix, without normalization\n",
 "[[1539 56]\n",
 " [ 232 173]]\n"
 ]
 },
 {
 "data": {
 "image/png": "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\n",
"text/plain": [
 "<Figure size 432x288 with 2 Axes>"
 ]
 },
 "metadata": {
 "needs_background": "light"
 },
 "output_type": "display_data"
 }
 ],
 "source": [
 "plot_confusion_matrix(cm, ['Si deja el banco','No deja el banco'],title='Matriz de confusión')"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": null,
 "metadata": {},
 "outputs": [],
 "source": []
 }
 ],
 "metadata": {
 "kernelspec": {
 "display_name": "Python 3",
 "language": "python",
 "name": "python3"
 },
 "language_info": {
 "codemirror_mode": {
 "name": "ipython",
 "version": 3
 },
 "file_extension": ".py",
 "mimetype": "text/x-python",
 "name": "python",
 "nbconvert_exporter": "python",
 "pygments_lexer": "ipython3",
 "version": "3.7.9"
 }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando