Kmean кластеризация или любые другие методы кластеризации для словаря - PullRequest
0 голосов
/ 20 апреля 2020

Здесь у меня есть эта python функция, которая подсчитывает, сколько раз было получено уникальное значение из электронной таблицы, результаты собраны в формате dict и представлены в виде диаграммы разброса. Пока все хорошо.

Проблема в том, что я не знаю, нужно ли применять к ней кластеризацию kmean. Я даже пытался преобразовать его в массив, но он все еще не работает. Когда я пытаюсь запустить, он говорит, что есть ошибка в строке, где "kmeans.fit (data)". Я попытался изменить значение в скобках, но не повезло.

Можете ли вы помочь. Вот мой код:

def unique_2(X):
# sorting the values in ascending order
X1 = sorted(X)

# counting each unique values
X2 = {}
for item in X1:
    if item in X2.keys():
        X2[item] += 1

    else:
        X2[item] = 1

# X2 is a dictionary, not an array.
# PLoting the values.
plt.scatter(range(len(X2)), list(X2.values()))

# For large range of values the text will have  a smaller font.

if len(X2) < 10:
    plt.xticks(rotation=90, fontsize=8)
    plt.xticks(range(len(X2)), list(X2.keys()))
elif len(X2) < 100:
    plt.xticks(rotation=90, fontsize=5.5)
    plt.xticks(range(len(X2)), list(X2.keys()))
else:
    plt.xticks(rotation=90, fontsize=5)
    plt.xticks(range(len(X2)), list(X2.keys()))

plt.margins(0.0)
plt.show()
# converting X2 into an array in order to apply kmean clustering
data = list(X2.items())
table_of_results = np.array(data)
x_axis = table_of_results[:, 0]
y_axis = table_of_results[:, 1]

# checking to see the convertion
print(table_of_results)

# implementing kmean clustering

kmeans = KMeans(n_clusters=3)
kmeans.fit(data)

print(kmeans.cluster_centers_)

print(kmeans.labels_)

plt.figure()

plt.scatter(x_axis, y_axis, label='True Position', c=kmeans.labels_, cmap='rainbow')

plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], color='black')

plt.show()

return X2
...