Como Criar um Modelo de Machine Learning com Python

Machine Learning é uma área da programação que permite criar modelos capazes de aprender padrões a partir de dados. Antes de treinar um modelo, é necessário preparar a base, remover colunas desnecessárias, tratar valores vazios, transformar dados textuais em números e separar as informações que serão usadas para previsão.

Neste tutorial, você aprenderá como criar um modelo de Machine Learning em Python usando a base titanic.csv. O objetivo será treinar um modelo KNN para prever a sobrevivência dos passageiros com base em informações como classe, sexo, idade e tarifa.

Passo 1 — Instalar as bibliotecas

Antes de usar o Pandas no projeto, é necessário instalar a biblioteca no computador.

Abra o terminal do VS Code e digite:

				
					pip install pandas
				
			

Depois, instale também o Scikit-learn, que será usado para criar o modelo de Machine Learning:

				
					pip install scikit-learn
				
			

Passo 2 — Importar o Pandas

O primeiro passo é importar a biblioteca Pandas, que será usada para carregar e manipular a base de dados.

				
					import pandas as pd
				
			

O Pandas permite ler arquivos CSV, tratar valores vazios, remover colunas e transformar dados antes de enviá-los para o modelo.

Passo 3 — Carregar a base Titanic

Agora vamos carregar o arquivo titanic.csv.

				
					df = pd.read_csv('titanic.csv')
				
			

A função read_csv() lê o arquivo e transforma os dados em um DataFrame, que funciona como uma tabela dentro do Python.

Passo 4 — Remover colunas desnecessárias

Algumas colunas não serão úteis para o treinamento do modelo.

				
					df.drop(['PassengerId', 'Name', 'Ticket', 'Cabin', 'Embarked'], axis = 1, inplace = True)
				
			

Neste caso, removemos:

  • PassengerId: apenas identifica o passageiro
  • Name: nome do passageiro
  • Ticket: número do bilhete
  • Cabin: cabine, com muitos valores ausentes
  • Embarked: embarqe, com muitos valores ausentes

Essas colunas não ajudam diretamente o modelo nesta etapa.

Passo 5 — Calcular a mediana da idade por classe

Alguns passageiros não possuem idade preenchida. Para resolver isso, vamos usar a mediana da idade de cada classe.

				
					age_1 = df[df['Pclass'] == 1]['Age'].median()
age_2 = df[df['Pclass'] == 2]['Age'].median()
age_3 = df[df['Pclass'] == 3]['Age'].median()
				
			

Aqui o código calcula:

  • idade mediana dos passageiros da 1ª classe
  • idade mediana dos passageiros da 2ª classe
  • idade mediana dos passageiros da 3ª classe

Isso ajuda a preencher os valores vazios de forma mais coerente.

Passo 6 — Criar a função para preencher idade

Agora vamos criar uma função para preencher a idade quando ela estiver vazia.

				
					def fill_age(row):
   if pd.isnull(row['Age']):
       if row['Pclass'] == 1:
           return age_1
       if row['Pclass'] == 2:
           return age_2
       return age_3
   return row['Age']
				
			

Essa função verifica se a idade está vazia. Se estiver, ela usa a mediana correspondente à classe do passageiro. Se a idade já estiver preenchida, ela mantém o valor original.

Passo 7 — Aplicar a função na coluna Age

Agora aplicamos a função em todas as linhas do DataFrame.

				
					df['Age'] = df.apply(fill_age, axis = 1)
				
			

O apply() executa a função fill_age linha por linha. O parâmetro axis = 1 indica que a função deve analisar cada linha completa da tabela.

Passo 8 — Transformar sexo em número

Modelos de Machine Learning trabalham melhor com valores numéricos. Por isso, vamos transformar a coluna Sex.

				
					def fill_sex(sex):
    if sex == 'male':
        return 1
    return 0

df['Sex'] = df['Sex'].apply(fill_sex)
				
			

Neste caso:

  • male vira 1
  • female vira 0

Assim, o modelo consegue interpretar essa informação.

Passo 9 — Importar as ferramentas do Scikit-learn

Agora vamos importar as bibliotecas necessárias para treinar e avaliar o modelo.

				
					from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, accuracy_score
				
			

Essas ferramentas serão usadas para:

  • separar dados de treino e teste
  • padronizar os valores
  • criar o modelo KNN
  • medir a acurácia
  • gerar a matriz de confusão

Passo 10 — Separar entradas e saída

Agora vamos separar os dados que o modelo usará para aprender.

				
					X = df.drop('Survived', axis = 1)
y = df['Survived']
				
			
  • X contém as informações usadas para prever
  • y contém o resultado esperado

Neste caso, Survived é a coluna que queremos prever.

Passo 11 — Dividir treino e teste

Agora dividimos a base em dados de treino e dados de teste.

				
					X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25)
				
			

Aqui, 25% dos dados serão usados para teste e 75% para treino.

Essa separação permite verificar se o modelo aprendeu bem e consegue prever dados que ainda não viu.

Passo 12 — Padronizar os dados

O KNN é sensível à escala dos dados, então precisamos padronizar os valores.

				
					sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
				
			

A padronização ajusta os dados para uma escala semelhante, evitando que colunas com valores muito grandes influenciem demais o modelo.

Passo 13 — Criar e treinar o modelo KNN

Agora vamos criar o classificador KNN.

				
					classifier = KNeighborsClassifier(n_neighbors = 5)
classifier.fit(X_train, y_train)
				
			

O KNN compara os passageiros com seus vizinhos mais próximos. Neste exemplo, o modelo usará 5 vizinhos para tomar a decisão.

O método fit() treina o modelo usando os dados de treino.

Passo 14 — Fazer previsões

Depois do treino, o modelo pode prever os resultados dos dados de teste.

				
					y_pred = classifier.predict(X_test)
				
			

A variável y_pred guarda as previsões feitas pelo modelo.

Passo 15 — Avaliar o modelo

Por fim, avaliamos o desempenho do modelo.

				
					print('Percentage of correctly predicted outcomes:', accuracy_score(y_test, y_pred) * 100)
print('Confusion matrix:')
print(confusion_matrix(y_test, y_pred))
				
			

A acurácia mostra a porcentagem de previsões corretas.

A matriz de confusão mostra:

  • quantos casos foram classificados corretamente
  • quantos foram classificados incorretamente

Resultado final

Um exemplo de saída possível para esse código seria:

				
					Percentage of correctly predicted outcomes: 78.47533632286996
Confusion matrix:
[[125  14]
 [ 34  51]]
				
			

A porcentagem pode mudar a cada execução, porque o train_test_split() separa os dados de treino e teste de forma aleatória.

Conclusão

Criar um modelo de Machine Learning com Pandas e Scikit-learn é um processo que envolve preparação dos dados, limpeza da base, transformação de informações textuais em valores numéricos e treinamento de um algoritmo. Neste tutorial, você aprendeu como usar a base Titanic para treinar um modelo KNN capaz de prever a sobrevivência de passageiros, além de avaliar o resultado com acurácia e matriz de confusão.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *