![](/img/trans.png)
[英]Reusing an sklearn text classification model with tf-idf feature selection
[英]finding the number of clusters in a vectorized text document with sklearn tf-idf
我正在嘗試使用sklearn tf-idf
和k-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.