【发布时间】:2019-01-01 00:29:41
【问题描述】:
我正在尝试进行聚类。我正在使用 pandas 和 sklearn。
import pandas
import pprint
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score
from sklearn.feature_extraction.text import TfidfVectorizer
dataset = pandas.read_csv('text.csv', encoding='utf-8')
dataset_list = dataset.values.tolist()
vectors = TfidfVectorizer()
X = vectors.fit_transform(dataset_list)
clusters_number = 20
model = KMeans(n_clusters = clusters_number, init = 'k-means++', max_iter = 300, n_init = 1)
model.fit(X)
centers = model.cluster_centers_
labels = model.labels_
clusters = {}
for comment, label in zip(dataset_list, labels):
print ('Comment:', comment)
print ('Label:', label)
try:
clusters[str(label)].append(comment)
except:
clusters[str(label)] = [comment]
pprint.pprint(clusters)
但我有以下错误,即使我从未使用过lower():
File "clustering.py", line 19, in <module>
X = vetorizer.fit_transform(dataset_list)
File "/usr/lib/python3/dist-packages/sklearn/feature_extraction/text.py", line 1381, in fit_transform
X = super(TfidfVectorizer, self).fit_transform(raw_documents)
File "/usr/lib/python3/dist-packages/sklearn/feature_extraction/text.py", line 869, in fit_transform
self.fixed_vocabulary_)
File "/usr/lib/python3/dist-packages/sklearn/feature_extraction/text.py", line 792, in _count_vocab
for feature in analyze(doc):
File "/usr/lib/python3/dist-packages/sklearn/feature_extraction/text.py", line 266, in <lambda>
tokenize(preprocess(self.decode(doc))), stop_words)
File "/usr/lib/python3/dist-packages/sklearn/feature_extraction/text.py", line 232, in <lambda>
return lambda x: strip_accents(x.lower())
AttributeError: 'list' object has no attribute 'lower'
我不明白,我的文本 (text.csv) 已经是小写了。而且我从来没有调用过lower()
数据:
您好希望取消订单谢谢您的确认
你好想取消今天的订单 商店世界
尺寸床不兼容想知道如何通过取消退款今天就发送
您好,请取消订单
你好想取消订单申请退款
您好希望取消此订单可亲切说明处理
您好,看到交货日期想取消订单,谢谢
你好想取消匹配订单良好的交货n°111111
您好想取消此订单
你好订单产品商店取消行为doublon提前衷心感谢您
您好希望取消订单谢谢您退款问候
您好,可以取消订单,请提前致谢
【问题讨论】:
-
试试
vectors = TfidfVectorizer(lowercase=False) -
您可以尝试将脚本名称从 clustering.py 更改为 my_clustering.py 吗?
-
可以添加数据吗?
-
text.csv中有多少列?如果多于一列,则不能在其上使用 TfidfVectorizer。 -
您能否确认
pd.read_csv正在返回单列数据。试试print(len(dataset.columns))。您能否展示您实际 test.csv 的一部分(不是句子示例),我可以像使用pd.read_csv一样加载它吗?
标签: python python-3.x pandas scikit-learn