Ошибка: графики данных алгоритма K-Mean Clustering не отображаются в Python

1

Привет, я хочу реализовать алгоритм кластеризации K-Means.

Для этого я получаю данные из файла sample.csv и применяю кластеризацию K-Means на нем. Вот мой исходный код

## K-Means.py

# clustering dataset
import pandas

from sklearn.cluster import KMeans
from sklearn import metrics
import numpy as np
import matplotlib.pyplot as plt

variables = pandas.read_csv("/Users/srikanth/Desktop/sample1.csv")
print(variables)
x1 = variables[['X']]
x2 = variables[['Y']]
print(x1)
print(x2)

plt.plot()
plt.xlim([0, 10])
plt.ylim([0, 10])
plt.title('Dataset')
plt.xlabel('X - Values')
plt.ylabel('Y - Values')
plt.scatter(x1, x2)
plt.show()

# create new plot and data
plt.plot()
X = np.array(list(zip(x1, x2))).reshape(len(x1), 2)
colors = ['b', 'g', 'r']
markers = ['o', 'v', 's']

# KMeans algorithm
K = 3
kmeans_model = KMeans(n_clusters=K).fit(X)

plt.plot()
for i, l in enumerate(kmeans_model.labels_):
    plt.plot(x1[i], x2[i], color=colors[l], marker=markers[l],ls='None')
    plt.xlim([0, 10])
    plt.ylim([0, 10])
    plt.show()

После запуска приведенного выше кода в терминале вывод:

Изображение 174551

Изображение 174551

На приведенном выше рисунке не отображаются какие-либо кластерные графики данных, поэтому я хочу визуально увидеть мои кластерные данные. Как я могу это исправить. Я новичок в этой области. Спасибо

  • 0
    Если вы говорите о первом рассеянии, я думаю, вы должны изменить пределы. Из-за наличия только до 10, где данные лежат вокруг ([150, 190]) и ([40, 90]). Кстати, у вас есть сюжет в цикле, и вы заговор для каждой точки ??.
  • 0
    Кстати, вы не реализуете K-means, вы просто хотите использовать существующую реализацию (scikit-learn here) ...
Показать ещё 2 комментария
Теги:
machine-learning
python-3.x
k-means

1 ответ

1
Лучший ответ
from sklearn.cluster import KMeans
from sklearn import metrics
import numpy as np
import matplotlib.pyplot as plt

variables = pandas.read_csv("/Users/srikanth/Desktop/sample1.csv")
print(variables)
x1 = variables[['X']]
x2 = variables[['Y']]
plt.plot()
plt.xlim([150, 190])
plt.ylim([40, 90])
plt.title('Dataset')
plt.xlabel('X - Values')
plt.ylabel('Y - Values')
plt.scatter(x1, x2)
plt.show()

Разброс, который он производит для 10 очков:

Изображение 174551

Для кода, использующего модель кластеров kmeans, вы создаете график для каждой метки в модели, которая будет создавать 10 графиков. Просто изменение пределов должно делать магию.

  • 0
    Большое вам спасибо, это сработало. Но я изменил предельные значения, такие как plt.xlim ([100, 150]) plt.ylim ([40, 60]), после повторного запуска этих значений не отображаются какие-либо графики, даже значения 46, 52, 55, 59, 60 доступны в Y. что за ошибку я сделал ??
  • 0
    @WeCan ничего не должно отображаться для графика, потому что на x_axis (для выбранных пределов) не указывается значение, и поэтому он не может отображать какие-либо точки на графике.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню