Как реализовать кластеризацию DBSCAN, Optics и Meanshift с расстояния по косинусу, используя python 3.7? - PullRequest
0 голосов
/ 09 марта 2020

Я хочу сравнить различные алгоритмы кластеризации. Я уже выполнил 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. При необходимости я также могу предоставить полный код.

Заранее спасибо.

...