Machine Learning (ML) é uma habilidade essencial para qualquer cientista de dados. Para ajudar iniciantes a entender melhor como aplicar ML, vamos criar um exemplo prático completo utilizando Python e a biblioteca Scikit-Learn. Este exemplo abordará a análise de dados, pré-processamento, treinamento de modelo, avaliação e otimização.
1. Introdução
Neste exemplo, usaremos o conjunto de dados “Iris”, um clássico em machine learning, que contém informações sobre três espécies de íris (setosa, versicolor e virginica) com medidas de comprimento e largura das sépalas e pétalas. O objetivo é classificar a espécie da flor com base nessas medidas.
Bibliotecas Necessárias
Certifique-se de ter as bibliotecas necessárias instaladas:
pip install pandas scikit-learn matplotlib seaborn
2. Carregando e Explorando os Dados
Primeiro, vamos carregar o conjunto de dados e explorar suas características.
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # Carregando o conjunto de dados Iris from sklearn.datasets import load_iris iris = load_iris() # Convertendo para DataFrame df = pd.DataFrame(data=iris.data, columns=iris.feature_names) df['species'] = iris.target # Visualizando as primeiras linhas do DataFrame print(df.head()) # Visualizando a distribuição das espécies sns.pairplot(df, hue='species') plt.show()
3. Pré-processamento dos Dados
Dividiremos os dados em conjuntos de treino e teste e normalizaremos os dados.
from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # Dividindo os dados em variáveis independentes (X) e dependentes (y) X = df.drop('species', axis=1) y = df['species'] # Dividindo os dados em conjuntos de treino e teste X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Normalizando os dados scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test)
4. Treinamento do Modelo
Usaremos um classificador K-Nearest Neighbors (KNN) para treinar nosso modelo.
from sklearn.neighbors import KNeighborsClassifier # Criando o modelo model = KNeighborsClassifier(n_neighbors=3) # Treinando o modelo model.fit(X_train, y_train)
5. Avaliação do Modelo
Vamos avaliar a precisão do modelo utilizando o conjunto de teste.
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report # Fazendo previsões y_pred = model.predict(X_test) # Avaliando o modelo accuracy = accuracy_score(y_test, y_pred) print(f'Acurácia: {accuracy}') # Matriz de Confusão print('Matriz de Confusão:') print(confusion_matrix(y_test, y_pred)) # Relatório de Classificação print('Relatório de Classificação:') print(classification_report(y_test, y_pred))
6. Otimização de Hiperparâmetros
Utilizaremos GridSearchCV para encontrar os melhores hiperparâmetros para o modelo KNN.
from sklearn.model_selection import GridSearchCV # Definindo os parâmetros a serem testados param_grid = {'n_neighbors': [3, 5, 7, 9]} # Implementando o GridSearchCV grid = GridSearchCV(KNeighborsClassifier(), param_grid, refit=True, verbose=3) grid.fit(X_train, y_train) # Melhores parâmetros print('Melhores Parâmetros:') print(grid.best_params_) # Avaliando o modelo otimizado best_model = grid.best_estimator_ y_pred_optimized = best_model.predict(X_test) optimized_accuracy = accuracy_score(y_test, y_pred_optimized) print(f'Acurácia do Modelo Otimizado: {optimized_accuracy}')
7. Conclusão
Neste artigo, exploramos um exemplo prático completo de machine learning com Python, utilizando a biblioteca Scikit-Learn. Passamos por todas as etapas: carregamento e exploração dos dados, pré-processamento, treinamento, avaliação e otimização do modelo.
Este exemplo fornece uma base sólida para iniciantes em machine learning e demonstra como aplicar técnicas básicas para resolver problemas reais de classificação. Continue praticando e experimentando com diferentes conjuntos de dados e algoritmos para aprimorar suas habilidades.