Я пытаюсь выучить новые алгоритмы кластеризации, согласно документам, если я хочу меньше кластеров, мне посоветовали найти минимальное сходство и установить с ним свои предпочтения.
Я могу сделать это так:
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform
pairwise = pd.DataFrame(
squareform(pdist(df_scaled)),
columns = df_scaled.index,
index = df_scaled.index
)
max(pairwise.max()) # I copy that: 6.538470145026547
, и я использую это в качестве предпочтения:
from sklearn.cluster import AffinityPropagation
AP = AffinityPropagation(preference = -6.538470145026547)
При использовании алгоритма по умолчанию, что означает, что предпочтение установлено на медиану значение матрицы сходства дало мне 9 кластеров.
после изменения моего предпочтения на минимальное число в матрице сходства, новые номера кластеров равны 8. Не огромная разница.
Я могу снизить предпочтение еще больше , но это не рекомендуется авторами. Чтобы изменить количество кластеров, я могу использовать коэффициент демпфирования.
, например:
AP = AffinityPropagation(preference = -6.538470145026547,damping = 0.984)
Я хотел получить 3 разных кластера, и вот оно! Но разве я что-то сломал при этом?
это то, чего я не знаю, и то, что я прошу.
при использовании AffinityPropagation - это слишком высокий фактор демпфирования ?
Увеличивает ли мой коэффициент демпфирования, чтобы получить spesifi c количество кластеров, что-нибудь нарушает? Какие плюсы и минусы в этом?