У меня есть набор данных, каждый из которых имеет разреженные метки.Итак, ниже показано, как выглядят данные.
[["Снег", "Зима", "Замораживание", "Веселье", "Шапочка", "Обувь", "Головные уборы", "Мех", ""Игра в снегу »,« Фотография »], [« Дерево »,« Небо »,« Дневное время »,« Городской район »,« Филиал »,« Городской район »,« Зима »,« Город »,« Город »,«Уличный фонарь»], ...]
Общее количество этикеток составляет около 50, а количество данных - 200К.И я хочу кластеризовать эти данные, но у меня возникают проблемы с этим.
Я хочу кластеризовать эти данные с помощью четырех алгоритмов кластеризации (AgglomerativeClustering, SpectralClustering, MiniBatchKMeans, KMeans), но ни один из них не работает, потому чтопроблем с памятью.
Ниже приведен мой код.
from scipy.sparse import csr_matrix
from sklearn.cluster import KMeans
from sklearn.cluster import MiniBatchKMeans
from sklearn.cluster import AgglomerativeClustering
from sklearn.cluster import SpectralClustering
import json
NUM_OF_CLUSTERS = 10
with open('./data/sample.json') as json_file:
json_data = json.load(json_file)
indptr = [0]
indices = []
data = []
vocabulary = {}
for d in json_data:
for term in d:
index = vocabulary.setdefault(term, len(vocabulary))
indices.append(index)
data.append(1)
indptr.append(len(indices))
X = csr_matrix((data, indices, indptr), dtype=int).toarray()
# None of these algorithms work properly. I think it's because of memory issues.
# miniBatchKMeans = MiniBatchKMeans(n_clusters=NUM_OF_CLUSTERS, n_init=5, random_state=0).fit(X)
# agglomerative = AgglomerativeClustering(n_clusters=NUM_OF_CLUSTERS).fit(X)
# spectral = SpectralClustering(n_clusters=NUM_OF_CLUSTERS, assign_labels="discretize", random_state=0).fit(X)
#
# print(miniBatchKMeans.labels_)
# print(agglomerative.labels_)
# print(spectral.labels_)
with open('data.json', 'w') as outfile:
json.dump(miniBatchKMeans.labels_.tolist(), outfile)
Существуют ли решения или другие рекомендации по моей проблеме?