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 passageiroName: nome do passageiroTicket: número do bilheteCabin: cabine, com muitos valores ausentesEmbarked: 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:
malevira1femalevira0
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']
Xcontém as informações usadas para preveryconté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.






