K-means 在只有一列的数据帧上聚类

数据挖掘 机器学习 scikit-学习 熊猫 k-均值
2021-09-18 19:58:11

unsup_df是一个DataFrame只有一列:review

我想形成 2 个评论集群。

from sklearn.cluster import KMeans

tfidf_vectorizer = TfidfVectorizer()  
tfidf_matrix = tfidf_vectorizer.fit_transform(unsup_df)  
num_clusters = 2  
km = KMeans(n_clusters=num_clusters)  
km.fit(tfidf_matrix)   
clusters = km.labels_.tolist()

上面这段代码抛出了一个错误:

ValueError: n_samples=1 应该 >= n_clusters=2

在线上km.fit(tfidf_matrix)

2个回答

以下是如何将 k-means 拟合到 Pandas 中的一维文本数据:

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.feature_extraction.text import TfidfVectorizer


df = pd.DataFrame({"corpus": ["I am Sam. Sam-I-am",
                              "That Sam-I-am! That Sam-I-am! I do not like that Sam-I-am",
                              "Do you like green eggs and ham?",
                              "I do not like them, Sam-I-am. I do not like green eggs and ham"]})

x = TfidfVectorizer().fit_transform(df.corpus)
km = KMeans(n_clusters=2).fit(x)
km.labels_.tolist() # Results in a list similar to this: [0, 0, 1, 1]

unsup_df的形状一定是错误的。否则,它应该工作。

在此处输入图像描述