<jupyter_start><jupyter_text>----Pré processamento base de dados de credito bancario----  Tratamento de valores inconsistentes<jupyter_code>import pandas as pd
base = pd.read_csv('C:/Users/682481/OneDrive - Indra/Escritorio/Python/AnaliseDeDadosDeCreditoBancario/DataBase/credit_data.csv')
df = pd.DataFrame(base) #Convertendo para tabela
df
df.describe() # Resumo sobre o DataFrame
df.loc[df['age'] < 0]  #Localizando clientes com idades negativas
media = df['age'][df.age > 0].mean() #Verificando a média das idades com valores positivos
media
df.loc[df.age < 0, 'age'] = media #Substituindo os valores negativos por essa média de idades
df.loc[df['age'] < 0] #Localizando clientes com idades negativas
df.describe()<jupyter_output><empty_output><jupyter_text>Tratamento de valores faltantes<jupyter_code>pd.isnull(df).sum() #Verificando quantos dados nulos existem no DataFrame
df.loc[pd.isnull(df['age'])] # Verificando quais linhas da coluna 'age' possuem dados nulos
# Dividindo atributos previsores e classificadores
previsores = df.iloc[:, 1:4].values #Pegamos todas as linhas do DF e Pegamos as 3 ultimas colunas, desconsiderando a coluna ID e a coluna Default
pd.DataFrame(previsores)
classe = df.iloc[:, 4].values #Pegamos todas as linhas do DF e Pegamos a ultima coluna
pd.DataFrame(classe)
#Tratando valores nulos
import numpy as np
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(previsores[:,0:3]) #Encaixando a variavel "iputer a base de dados - com o metodo "fit()""
previsores[:,0:3] = imputer.transform(previsores[:,0:3]) #Atribuindo a transformação ao atributo previsores

pd.isnull(previsores).sum() #Verificando quantos dados nulos existem no Atributo<jupyter_output><empty_output><jupyter_text>Escalonamento de atributos<jupyter_code>from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
previsores = scaler.fit_transform(previsores)#Padronização
pd.DataFrame(previsores) #Atributos com a mesma escala<jupyter_output><empty_output><jupyter_text>Divisão de base de dados em treinamento e teste<jupyter_code># Utilizaremos 25% da base de dados para teste (test_size=0.25)

from sklearn.model_selection import train_test_split
previsores_treinamento, previsores_teste, classe_treinamento, classe_teste = train_test_split(previsores, classe, test_size=0.25, random_state=0)
pd.DataFrame(previsores_treinamento)
pd.DataFrame(previsores_teste)
pd.DataFrame(classe_treinamento)
pd.DataFrame(classe_teste)<jupyter_output><empty_output><jupyter_text>----Aprendizagem bayesiana----<jupyter_code>from sklearn.naive_bayes import GaussianNB
classificador = GaussianNB()
classificador.fit(previsores_treinamento,classe_treinamento) #treinando o algritmo
previsoes = classificador.predict(previsores_teste) #testanto a previsao do alogritmo
pd.DataFrame(previsoes) #previsao com erros, correto seria igual a classe_teste<jupyter_output><empty_output><jupyter_text>Identificando o percentual de acerto do agoritmo<jupyter_code>#comparando previsao com erros, com o correto classe_teste para identificar o percentual de acerto do agoritmo
from sklearn.metrics import confusion_matrix,accuracy_score
precisao = accuracy_score(classe_teste,previsoes)
precisao*100 #percentual de acerto do algoritmo de 94%
matriz = confusion_matrix(classe_teste,previsoes) #matriz de confusão, para verificar qual classe o algoritmo está acertando e qual ele está errando mais
pd.DataFrame(matriz) # O algoritmo acerta mais da classe 0 e erra mais da classe 1
# Analisando a matriz de confusão 
# linha classe 0, não pagou - linha classe 1, pagou
# linha classe 0 - 428 registros acertados e 8 errados
# linha classe 1 - 41 registros acertados e 23 errados
# Para contar quantos registros foram classificados corretamente, basta somar os registos acertados (428 + 41 = 469)
# Ou seja, dos 500 registros colocados para teste, 469 foram classificados corretamente - efetividade de acerto do algoritmo de 93.8%<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08349900596421471, 'fraction_numerical': 0.016153081510934395, 'mean_word_length': 7.01792828685259, 'pattern_counts': {'":': 0, '<': 28, '<?xml version=': 0, '>': 26, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '611859', 'license': 'MIT', 'n_tokens_mistral': 1482, 'n_tokens_neox': 1424, 'n_words': 385, 'path': 'AnaliseDeDadosDeCreditoBancario.ipynb', 'repo_name': 'EraldoMaia/AnaliseDeDadosDeCreditoBancario', 'size': '4024'}