因此,我在应用 TF-IDF(词频-逆文档频率)后调用了这些向量matrix_,并将其转换为 dataframe matrixDF_。
我想用sklearnmatrix_中的 MiniBatchKMeans 对这些向量进行聚类。但是由于向量很大(569 行和 829 列),所以我需要先找到最佳的 K-Cluster。
这就是我使用Yellowbrick的 KElbowVisualizer 的原因。起初,它工作得很好,我得到了最佳的 k-cluster。但是,当再次重新运行它时,它向我显示了不同数量的 k-cluster。这就是我当时感到困惑的地方。
任何人都可以帮我解决这个问题吗?
这是我的代码:
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import MiniBatchKMeans
from scipy.spatial.distance import cdist
from sklearn.metrics import silhouette_score
from yellowbrick.cluster import KElbowVisualizer
""" vectorize the words. getting the tf-idf of each words """
vec = TfidfVectorizer(
lowercase = True,
stop_words = 'english',
use_idf=True
)
matrix_ = vec.fit_transform(df)
matrixDF_ = pd.DataFrame(matrix_.toarray(), columns=vec.get_feature_names())
model = MiniBatchKMeans(MiniBatchKMeans(init_size=559, random_state=None))
visualizer = KElbowVisualizer(model,k=(2, 11), metric='distortion',
timings=True, size=(1080, 720))
visualizer.fit(matrix_) # Fit the data to the visualizer
visualizer.show()
我还尝试将数据框适合matrixDF_.可视化工具,但每次运行后的每个输出都有不同的输出编号。

