Diyelim ki yapay zeka, makine öğrenmesi, derin öğrenme veya veri bilimi ile uğraşıyorsunuz. Elinizde bir veri var ve bu veri içinde kaç küme olduğunu bilmiyorsunuz ya da karar vermek istiyorsunuz. Kullanacağınız yöntemlerden birisi de Elbow Method'dur.
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.cluster import KMeans
# Sayısal ve kategorik sütunları ayır
numeric_cols = df_cl.select_dtypes(include=['int64', 'float64']).columns
categorical_cols = df_cl.select_dtypes(include=['object', 'category']).columns
# Ön işleme
preprocessor = ColumnTransformer([
("num", StandardScaler(), numeric_cols),
("cat", OneHotEncoder(), categorical_cols)
])
# Veriyi dönüştür
X_processed = preprocessor.fit_transform(df_cl)
# Sparse matrisi dense yap
X_processed = X_processed.toarray()
# Elbow yöntemi
wcss = []
K = range(1, 11)
for k in K:
kmeans = KMeans(
n_clusters=k,
init='k-means++',
random_state=42,
n_init=10
)
kmeans.fit(X_processed)
wcss.append(kmeans.inertia_)
# Grafik
plt.figure(figsize=(8,5))
plt.plot(K, wcss, marker='o')
plt.title("Elbow Method")
plt.xlabel("Küme Sayısı")
plt.ylabel("WCSS")
plt.xticks(K)
plt.grid(True)
plt.show()

