Загрузка данных


from sklearn . datasets import load_iris
import numpy as np
import pandas as pd
import matplotlib . pyplot as plt
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA

iris = load_iris()
X = iris.data

k_values = [2, 3, 4]

plt.figure(figsize=(15, 4))

for i, k in enumerate(k_values):
    kmeans = KMeans(n_clusters=k, random_state=42, n_init=10)
    labels = kmeans.fit_predict(X)

    pca = PCA(n_components=2)
    X_2d = pca.fit_transform(X)

    plt.subplot(1, 3, i+1)
    plt.scatter(X_2d[:, 0], X_2d[:, 1], c=labels, cmap='viridis')
    plt.title(f"k = {k}")

plt.tight_layout()
plt.show()

inertias = []
K_range = range(1, 11)

for k in K_range:
    kmeans = KMeans(n_clusters=k, random_state=42, n_init=10)
    kmeans.fit(X)
    inertias.append(kmeans.inertia_)

plt.figure(figsize=(6, 4))
plt.plot(K_range, inertias, 'o-')
plt.xlabel("Кол-во. кластеров (k)")
plt.ylabel("Инерция")
plt.title("Метод локтя")
plt.grid()
plt.show()