簡體   English   中英

使用sklearn tf-idf查找矢量化文本文檔中的簇數

[英]finding the number of clusters in a vectorized text document with sklearn tf-idf

我正在嘗試使用sklearn tf-idfk-means聚集對話框。 我使用輪廓分數計算了最佳聚類數,但它幾乎呈線性增加。 那么,還有其他方法嗎,或者我做錯了什么?

碼:

tfidfV = TfidfVectorizer(max_features = 40000, ngram_range = ( 1, 3 ), sublinear_tf = True)
...
X = tfidfV.fit_transform(docm2)
...
for numb in nn:
    km = KMeans(n_clusters=numb)
    clabels = km.fit_predict(X)
    silhouette_avg = silhouette_score(X, clabels)
    print("For n_clusters = ", numb, "The average silhouette_score is: ", silhouette_avg)

根本的問題要嚴重得多,並且沒有簡單的解決方案:

K均值對異常值非常敏感。 但是在典型的文本數據中,有很多離群值。 大多數文檔都以一種或另一種不同的方式出現。 因此,“最佳”解決方案是將所有非重復的點放在它們自己的群集中,即,使用一個非常大的k。 除非您處於非常理想的場景(例如20newsgroups),否則這不僅會大大增加運行時間,而且還會使結果幾乎毫無用處。

因此,請使用在這種情況下效果更好的主題建模或類似算法。 但是我對替代群集沒有任何建議。 沒有無休止的參數選擇,似乎沒有一種方法能很好地發揮作用,具有普遍的用途。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM