![](/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.