Você está na página 1de 5

perceptron_aplication

November 6, 2018

1 Aplicação do Perceptron
• Por Jorge Zavaleta

2 1. Algoritmo do perceptron
Fonte: Suyong Eum and Hua Yang, "Practical Machine Learning",08/11/2018.

3 2. Aplicação para Cartão de Credito


Dados do cartão de crédito para análise de credito:

In [12]: import os
import numpy as np
import pandas as pd
from sklearn.linear_model import Perceptron
import matplotlib.pyplot as plt
# criando um dataset para consumidores do cartão de crédito
dados = {'Idade': [24, 30],
'Salário Anual' : [1500, 6000],
'Tempo de trabalho' : [0.5, 13],
'Débito corrente' : [2000, 1000]
}
dados_panda = pd.DataFrame(dados)
# plot o dataframe
display(dados_panda)

Idade Salário Anual Tempo de trabalho Débito corrente


0 24 1500 0.5 2000
1 30 6000 13.0 1000

Analisando o movimento do cartão de crédito será aprovado um crédito (1) ou negado o cred-
ito (-1)

1
algoritmo Perceptron

3.1 2.1 Dados do cartão de crédito


In [26]: # dados de treinamento
path=os.getcwd()
caminho = path+"\data"
# carregando dos dados
dados_treinamento = pd.read_csv(caminho+r'\traindata.csv')
dados_pandas = pd.DataFrame(dados_treinamento)
display(dados_pandas)

x_1 x_2 y
0 0.9 3.3 -1.0
1 0.8 2.6 -1.0
2 1.3 2.7 -1.0
3 0.8 2.0 1.0
4 1.0 1.5 1.0
5 1.4 3.0 -1.0
6 1.3 2.2 1.0
7 1.5 1.4 1.0
8 1.8 1.7 1.0
9 1.8 2.9 -1.0
10 2.1 2.8 -1.0
11 2.1 3.5 -1.0
12 2.1 2.0 1.0
13 2.2 1.4 1.0
14 2.8 3.6 -1.0
15 2.6 2.5 1.0
16 2.7 3.2 -1.0
17 3.2 3.4 -1.0
18 2.7 1.7 1.0

2
19 2.9 1.9 1.0

In [23]: treinamento_x = dados_treinamento.iloc[:,:-1]

In [48]: treinamento_y = dados_treinamento.iloc[:,-1]

In [28]: # dados de teste


dados_teste = pd.read_csv(caminho+r'\testdata.csv')

In [29]: teste_x = dados_teste.iloc[:,:-1] # seleciona as 2 primeras colunas

In [30]: teste_y = dados_teste.iloc[:,-1] # seleciona a ultima coluna

3.2 2.2 Algoritmo do Perceptron


In [31]: # Número máximo de iterações
MaxIter = 20
per = Perceptron(max_iter=MaxIter, eta0=0.1, shuffle=True)
per.fit(treinamento_x,treinamento_y)
#
Teste_Y = pd.Series(per.predict(teste_x),name='y')
testedata = teste_x.join(Teste_Y,how='outer')
#
# grava os resultados num arquivo
testedata.to_csv(caminho+r'\zava.csv',index=False)

3.3 2.3 Graficando os dados de treinamento


In [103]: #plotando os dados de treinamento
label=treinamento_y.copy()
label[label<0]=0
label=label.astype(int)
label=label.values
colormap=np.array(['r','b'])
plt.scatter(treinamento_x.iloc[:,0], treinamento_x.iloc[:,1], marker='o', c=colormap[
plt.xlabel('Dados de treinamento para o perceptron')
plt.show()
##

3
3.4 2.4 Graficando os dados de teste e o hiperplano(linha reta)
In [95]: #plotando os dados de teste
labelt=Teste_Y.copy()
labelt[labelt<0]=0
labelt=labelt.astype(int)
labelt=labelt.values
plt.scatter(teste_x.iloc[:,0], teste_x.iloc[:,1], marker='o', c=colormap[labelt])
#calcula o hiperplano
w=per.coef_[0]
xx=np.linspace(0, 4)
yy=-(w[0]*xx+per.intercept_[0])/w[1]
#
#plot a linhda de separação
g = plt.plot(xx, yy, 'k-', label='$reta$')
plt.title(u'Nro. de Iterações = %d' % MaxIter)
plt.xlabel('Aplicação do Perceptron em Catões de Crédito')
plt.legend(g[:1], ['linha reta'])
#plt.gca().legend(('y0','1'))
plt.show()

4
3.5 2.5 Acurácia
In [43]: #calculando a acurácia do algoritmo
count=0
for i in range(len(Teste_Y)):
if teste_y.iloc[i]==Teste_Y.iloc[i]:
count+=1.0
acuracia=count/float(len(Teste_Y))*100
print('Porcentagem de acuracia: %.2f%%' % acuracia)

Porcentagem de acuracia: 100.00%

In [ ]:

Você também pode gostar