Я использую реализацию Silhouette_score, davies_bouldin_score и scikit-learn. Calinski_harabasz_score доступен в модуле sklearn.metrics.
Он работает, но для sihouette_score он указывает, что я могу использовать матрицу расстояний. В случае двух других показателей это не так.
Я могу передать матрицу расстояний как в davies_bouldin_score, так и в Calinski_harabasz_score, но они ожидают n_samples x N_features матрица. Я предполагаю, что они рассматривают матрицу расстояний как матрицу признаков. Правильно ли будет подсчитывать балл таким образом?
В ответе на предыдущий вопрос упоминается, что это возможно.
Тогда мой вопрос: можно ли с математической точки зрения использовать матрицу расстояний для вычисления этих оценок?
Мой код работает, и я могу вывести оценку, поэтому моя проблема больше: делает ли то, что я делаю, смысл?
Вот минимальный рабочий пример:
Код: Выделить всё
import numpy as np
from sklearn.cluster import AgglomerativeClustering
from sklearn import metrics
# Generate random points in a 2D space
num_points = 5 # Adjust the number of points
points = np.random.rand(num_points, 2)
# Compute the Euclidean distance matrix
distance_matrix = np.linalg.norm(points[:, np.newaxis] - points, axis=2)
# Clustering
thresholds = [0.25, 0.35]
for t in thresholds:
c = AgglomerativeClustering(n_clusters=None,
metric="precomputed",
linkage="average",
distance_threshold=t)
clusters = c.fit(distance_matrix)
s_score = metrics.silhouette_score(distance_matrix,
clusters.labels_,
metric="precomputed")
dbi_score = metrics.davies_bouldin_score(distance_matrix,
clusters.labels_)
ch_score = metrics.calinski_harabasz_score(distance_matrix,
clusters.labels_)
print(f"Threshold = {t}")
print(f"\tSilhouette score:\t\t{s_score:.3f}")
print(f"\tDavies-Bouldin score:\t\t{dbi_score:.3f}")
print(f"\tCalinski-Harabasz score:\t{ch_score:.3f}")
# Output:
# Threshold = 0.25
# Silhouette score: 0.311
# Davies-Bouldin score: 0.114
# Calinski-Harabasz score: 21.653
# Threshold = 0.35
# Silhouette score: 0.533
# Davies-Bouldin score: 0.343
# Calinski-Harabasz score: 9.360
Подробнее здесь: https://stackoverflow.com/questions/791 ... ance-matri
Мобильная версия