Mineração de Dados com K-Means em Python: Um Guia Passo a Passo

Mineração de Dados com K-Means em Python: Um Guia Passo a Passo

A mineração de dados é essencial para extrair insights valiosos de grandes volumes de informações. Um dos algoritmos mais populares para agrupamento é o K-Means. Neste tutorial, você aprenderá a aplicar o K-Means para segmentação de dados usando Python.


📌 Pré-requisitos

Antes de começar, certifique-se de ter as bibliotecas necessárias instaladas. Se ainda não as tiver, instale com o comando:

pip install numpy pandas matplotlib seaborn scikit-learn

🔹 1. Importando as Bibliotecas

Vamos começar importando as bibliotecas essenciais para o nosso exemplo:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

🔹 2. Criando um Conjunto de Dados

Para este exemplo, vamos criar um conjunto de dados sintético com duas variáveis para facilitar a visualização dos clusters.

# Gerando dados sintéticos
np.random.seed(42)

# Criando dois clusters distintos
cluster1 = np.random.normal(loc=[5, 5], scale=1.0, size=(100, 2))
cluster2 = np.random.normal(loc=[10, 10], scale=1.0, size=(100, 2))

# Concatenando os dados
dados = np.vstack((cluster1, cluster2))

# Criando um DataFrame
df = pd.DataFrame(dados, columns=["Feature 1", "Feature 2"])

Vamos visualizar os dados brutos antes do agrupamento:

plt.figure(figsize=(8, 6))
sns.scatterplot(x=df["Feature 1"], y=df["Feature 2"], s=50)
plt.title("Dados Antes do Agrupamento")
plt.show()

🔹 3. Normalizando os Dados

O K-Means é sensível à escala das variáveis, então é importante padronizá-las:

scaler = StandardScaler()
df_normalizado = scaler.fit_transform(df)

Agora nossos dados estão prontos para serem clusterizados!


🔹 4. Aplicando o Algoritmo K-Means

Vamos definir o número de clusters e aplicar o K-Means:

kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(df_normalizado)

Depois de treinar o modelo, podemos obter os rótulos dos clusters atribuídos a cada ponto:

df["Cluster"] = kmeans.labels_

🔹 5. Visualizando os Resultados

Agora, vamos visualizar os clusters gerados pelo K-Means:

plt.figure(figsize=(8, 6))
sns.scatterplot(x=df["Feature 1"], y=df["Feature 2"], hue=df["Cluster"], palette="viridis", s=50)
plt.title("Clusters Identificados pelo K-Means")
plt.show()

🔹 6. Escolhendo o Número Ótimo de Clusters (Método do Cotovelo)

O método do cotovelo nos ajuda a encontrar o número ideal de clusters. Ele calcula a inércia (soma das distâncias quadradas dos pontos ao centro do cluster) para diferentes valores de k.

inercias = []
k_values = range(1, 10)

for k in k_values:
    kmeans = KMeans(n_clusters=k, random_state=42)
    kmeans.fit(df_normalizado)
    inercia = kmeans.inertia_
    inercias.append(inercia)

plt.figure(figsize=(8, 6))
plt.plot(k_values, inercias, marker='o', linestyle='--')
plt.xlabel("Número de Clusters")
plt.ylabel("Inércia")
plt.title("Método do Cotovelo")
plt.show()

O ponto onde a curva começa a achatar indica o número ideal de clusters.


🎯 Conclusão

O K-Means é uma poderosa técnica de agrupamento que pode ser usada para segmentação de clientes, análise de padrões e muito mais. Neste tutorial, você aprendeu:

✅ Como gerar e visualizar dados;
✅ Como normalizar os dados para o K-Means;
✅ Como aplicar o algoritmo e interpretar os clusters;
✅ Como usar o método do cotovelo para escolher o melhor k.

Agora é sua vez de testar! Experimente com seus próprios dados e veja os resultados. 🚀🔥

Read more