Привет, у меня есть маленький файл и большой файл, код здесь даже не работает для большого файла, только для маленького файла, так как я могу читать и выполнять действия с большим файлом? когда я читаю и пытаюсь сгруппировать в один l oop, это не работает, потому что каждая итерация только в строке. Здесь проблема с маленьким файлом: файл строк, и мне нужно разбить их на 3 группы. Я пробовал распространение сродства, но он не получает параметр размера группы, он дает мне 4 группы, в то время как у 4-й группы есть только одно слово, которое очень близко к другой группе:
0
- *Bras5emax Estates, L.T.D.
:* Bras5emax Estates, L.T.D.
1
- *BOZEMAN Enterprises
:* BBAZEMAX ESTATES, LTD
, BOZEMAN Ent.
, BOZEMAN Enterprises
, BOZERMAN ENTERPRISES
, BRAZEMAX ESTATYS, LTD
, Bozeman Enterprises
2
- *PC Adelman
:* John Smith
, Michele LTD
, Nadelman, Jr
, PC Adelman
3
- *Gramkai, Inc.
:* Gramkai Books
, Gramkai, Inc.
, Gramkat Estates, Inc., Gramkat, Inc.
, тогда я попробовал K-MEANS но результат:
0
- *Gramkai Books
, Gramkai, Inc.
, Gramkat Estates, Inc., Gramkat, Inc.
:*
1
- *BBAZEMAX ESTATES, LTD
, BOZEMAN Enterprises
, BOZERMAN ENTERPRISES
, BRAZEMAX ESTATYS, LTD
, Bozeman Enterprises
, Bras5emax Estates, L.T.D.
:*
2
- *BOZEMAN Ent.
, John Smith
, Michele LTD
, Nadelman, Jr
, PC Adelman
:*
, как вы можете видеть BOZEMAN Ent. находится в группе 2 вместо группы 1.
мой вопрос: есть ли способ улучшить сцепление? и есть ли cluster_center в K-MEANS?
код:
import numpy as np
import sklearn.cluster
import distance
f = open("names.txt", "r")
words = f.readlines()
words = np.asarray(words) #So that indexing with a list will work
lev_similarity = -1*np.array([[distance.levenshtein(w1,w2) for w1 in words] for w2 in words])
affprop = sklearn.cluster.KMeans(n_clusters=3)
affprop.fit(lev_similarity)
for cluster_id in np.unique(affprop.labels_):
print(cluster_id)
cluster = np.unique(words[np.nonzero(affprop.labels_==cluster_id)])
cluster_str = ", ".join(cluster)
print(" - *%s:*" % ( cluster_str))