from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.cluster import KMeans from sklearn.metrics import adjusted_rand_score vectorizer = TfidfVectorizer() #X = vectorizer.fit_transform(documents) X = vectorizer.fit_transform(df['content']) #按照5簇进行聚类 true_k = 5 model = KMeans(@@@@) model.fit(X) print("Top terms per cluster:") order_centroids = model.cluster_centers_.argsort()[:, ::-1] terms = vectorizer.get_feature_names() for i in range(true_k): print("Cluster %d:" % i), for ind in order_centroids[i, :10]: print(' %s' % terms[ind], end=','), print('\n')
时间: 2024-03-05 18:48:46 浏览: 229
这是一个使用sklearn库中的TfidfVectorizer和KMeans算法进行文本聚类的示例代码,具体如下:
1. 导入TfidfVectorizer、KMeans和adjusted_rand_score类。
```
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score
```
2. 初始化TfidfVectorizer对象,将文档集合转换为文档词频矩阵。
```
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df['content'])
```
3. 设置聚类数量k,初始化KMeans对象。
```
true_k = 5
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
```
其中,n_clusters指定聚类数量,init指定初始聚类中心的选择方法,max_iter指定最大迭代次数,n_init指定运行KMeans算法的次数。
4. 使用fit方法进行聚类。
```
model.fit(X)
```
5. 输出聚类结果,包括每个聚类的前10个关键词。
```
print("Top terms per cluster:")
order_centroids = model.cluster_centers_.argsort()[:, ::-1]
terms = vectorizer.get_feature_names()
for i in range(true_k):
print("Cluster %d:" % i)
for ind in order_centroids[i, :10]:
print(' %s' % terms[ind], end=',')
print('\n')
```
其中,order_centroids是聚类中心的索引,terms是每个单词的列表。对于每个聚类,输出其前10个关键词。
需要注意的是,这里使用了adjusted_rand_score来评估聚类效果。可以根据实际需求选择其他评估指标。
阅读全文