scikit-learn サイトには、テキスト マイニングに適用された k-means の例があります。興味のある抜粋は次のとおりです。
if opts.n_components:
original_space_centroids = svd.inverse_transform(km.cluster_centers_)
order_centroids = original_space_centroids.argsort()[:, ::-1]
else:
order_centroids = km.cluster_centers_.argsort()[:, ::-1]
terms = vectorizer.get_feature_names()
for i in range(true_k):
print("Cluster %d:" % i, end='')
for ind in order_centroids[i, :10]:
print(' %s' % terms[ind], end='')
print()
(例へのリンク)
私の最初の質問は、km.cluster_centers_ に関するものです。各用語は実際にはディメンションであるため、用語ごとのクラスター中心値は、用語ディメンション内の各クラスターの「位置」です。各用語次元の特定の用語の値が高いほど、クラスタを表す用語の「強さ」を表すため、これらの値はソートされていますか? もしそうなら、その理由を教えてください。
第 2 に、このアルゴリズムは、クラスタリングの前に用語ドキュメント マトリックスに対して LSA を実行するオプションを提供します。これは、次元の直交性を通じて各クラスターの一意性に役立つと思いますか? または、これが行う他の何かがありますか?クラスタリングの前に SVD を実行するのは一般的ですか?
前もって感謝します!