Я пытаюсь реализовать и визуализировать код алгоритма K-средних в Python.У меня есть набор данных, который я создал с помощью make_blobs
, затем я подгоняю данные с помощью K-средних и визуализирую результаты с помощью matplotlib.pyplot.scatter
.
Вот мой код:
Импорт ишаг создания данных
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
n_samples = 3000
random_state = 1182
X, y = make_blobs(n_samples=n_samples, random_state=random_state)
# X.shape = (3000, 2)
# y.shape = (3000,) -> y's values range from 0 to 2.
Точечный график исходных данных
plt.scatter(X[:, 0], X[:, 1])
plt.title("Original Dataset Scatter Plot")
plt.xlabel("X[:, 0]")
plt.ylabel("X[:, 1]")
plt.show()
K-Средства обучения и визуализации
kmeans_model = KMeans(n_clusters=3, random_state=1)
kmeans_model.fit(X)
colors = { 0: 'r',
1: 'b',
2: 'g'}
label_color = [colors[l] for l in y]
plt.scatter(X[:, 0], kmeans_model.labels_, c=label_color)
plt.title("K-Means Scatter Plot")
plt.xlabel("X[:, 0]")
plt.ylabel("Labels")
plt.show()
Мой вопрос это: когда я использую plt.scatter
с X[:, 1]
вместо X[:, 0]
, как я делал в данном коде, я получаю другой график, хотя и с такими же кластерами, как:
Будет ли это по-прежнему считаться правильной реализацией и использованием K-средних и точечных диаграмм?Если да, то есть ли конкретная причина, по которой следует выбирать определенные значения x
над другими?