Я хочу сравнить различные алгоритмы кластеризации. Я уже выполнил K-средства и иерархическую кластеризацию. Я хочу также реализовать кластеризацию DBSCAN, Optics и Meanshift. Я выполняю кластеризацию по текстовым данным. Сначала я рассчитал матрицу tfidf, и из этого я вычислил косинусное расстояние. Пример кода для матрицы tfidf и косинусного расстояния.
from sklearn.feature_extraction.text import TfidfVectorizer
#define vectorizer parameters
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000,
min_df=0.2, stop_words='english',
use_idf=True, tokenizer=tokenize_and_stem, ngram_range=(1,3))
%time tfidf_matrix = tfidf_vectorizer.fit_transform(Strategies) #fit the vectorizer to synopses
terms = tfidf_vectorizer.get_feature_names()
from sklearn.metrics.pairwise import cosine_similarity
dist = 1 - cosine_similarity(tfidf_matrix)
Используя матрицу tfidf, я вычислил K-средних и, используя dist (косинусное расстояние), я рассчитал иерархическую кластеризацию. Ниже приведен код для иерархической кластеризации.
from scipy.cluster.hierarchy import ward, dendrogram
linkage_matrix = ward(dist) #define the linkage_matrix using ward clustering pre-computed distances
fig, ax = plt.subplots(figsize=(15, 20)) # set size
ax = dendrogram(linkage_matrix, orientation="right", labels=Countries);
plt.tick_params(\
axis= 'x', # changes apply to the x-axis
which='both', # both major and minor ticks are affected
bottom='off', # ticks along the bottom edge are off
top='off', # ticks along the top edge are off
labelbottom='off')
plt.tight_layout() #show plot with tight layout
plt.savefig('Hierarchical Clustering.png')
Есть ли способ использовать косинусное расстояние для реализации в других алгоритмах кластеризации, таких как DBSCAN, Optics и Meanshift?
Я просто новичок в Python и кластеризация, я нашел код на inte rnet. При необходимости я также могу предоставить полный код.
Заранее спасибо.