gpt4 book ai didi

python - 向 k 均值添加特征

转载 作者:行者123 更新时间:2023-11-30 09:36:57 25 4
gpt4 key购买 nike

我正在尝试使用 k-means 聚类对文本文档进行分类。是否可以对一组文档进行 tfidf 向量化并执行计算,然后添加更多要分类的文档?

这就是我目前所拥有的

true_k = 4
vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
model.fit(X)

如何向 X 添加更多文档?因为我想 pickle X 并保存它。

最佳答案

实际上这非常简单(与公认的答案相反,这表明这很复杂 - 事实并非如此)。只需连接您的数据,然后重复使用相同的矢量化器(如果您创建新的矢量化器,或按照已接受的答案中的建议重新安装旧的矢量化器,它将更改其估计并且因此你会得到不同的特征空间),因此你也必须腌制它

true_k = 4
vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)
model = KMeans(n_clusters=true_k, init='k-means++', max_iter=100, n_init=1)
model.fit(X)

现在您获得了新数据、文档2,然后只需执行即可

X2 = vectorizer.transform(documents2)
X = np.vstack((X, X2))
model.fit(X) # optimally you would start from the previous solution, but sklearn does not yet support it

但是,请记住,这假设您的第一批文档已经代表整个数据集。换句话说,您将限制自己使用第一个文档中的单词,并且 idf 规范化也不会被重新调整。您实际上可以消除这两个限制,但您必须实现自己的在线 tfidf 矢量化器,它可以更新其估计。这并不难做到,但您必须(在每批新文档之后)也更新以前的文档(因为 idf 部分会发生变化)。更简单的解决方案是只保留 countvectorizer 并更新它,并独立计算“idf”部分并将其应用在顶部(就在 kmeans 之前)。

关于python - 向 k 均值添加特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37308238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com