为kmeans scikit堆叠3个变量

Posted

技术标签:

【中文标题】为kmeans scikit堆叠3个变量【英文标题】:stacking 3 variables for kmeans scikit 【发布时间】:2015-02-15 09:23:13 【问题描述】:

我有 3 个变量要适合 kmeans 模型。一个是 TFIDF 向量,一个是 Count 向量,第三个是文档中的单词数(sentence_list_len)。

这是我的代码:

vectorizer=TfidfVectorizer(min_df=1, max_df=0.9, stop_words='english', decode_error='ignore')
vectorized=vectorizer.fit_transform(sentence_list)

count_vectorizer=CountVectorizer(min_df=1, max_df=0.9, stop_words='english', decode_error='ignore')
count_vectorized=count_vectorizer.fit_transform(sentence_list)

sentence_list_len # for each document, how many words are there

km=KMeans(n_clusters=num_clusters, init='k-means++',n_init=10, verbose=1)
km.fit(vectorized)

如何将 3 个变量拟合到 km.fit 中?具体来说,我如何将它们全部堆叠起来并将其提供给 km.fit()?

【问题讨论】:

【参考方案1】:

简单地连接你的向量。请参阅 numpy.concatenatenumpy.vstack / numpy.hstack。但是,请注意,kmeans 不适用于高维数据,它可能会忽略“小”特征。您拥有三种不同尺度的特征,这将严重影响聚类结果。一般来说,kmeans 不是 NLP 聚类任务的好方法。

【讨论】:

【参考方案2】:

官方的方式是使用FeatureUnion:

from sklearn.pipeline import FeatureUnion

tfidf =TfidfVectorizer()
cvect = CountVectorizer()
features = FeatureUnion([('cvect', cvect), ('tfidf', tfidf)])
X = features.fit_transform(sentence_list)

【讨论】:

这与您使用 hstack 的示例 ***.com/questions/27496014/… 有何不同? 没有太大区别。在那里你加入转换后的矩阵,在这里你直接使用矢量化器。这也可以在管道中使用,因此更容易使用,例如在交叉验证中。我当时也想,既然你还在学习,最好还是看看幕后发生的事情。

以上是关于为kmeans scikit堆叠3个变量的主要内容,如果未能解决你的问题,请参考以下文章

堆叠条形图将变量转换为ggplot2 R中不相关变量的基于存在缺失的百分比

更改代码以允许超过 3 个堆叠条

如何在单次访问报告中将 3 个连续行放入 3 个堆叠行中

R语言ggplot2可视化:可视化人口金字塔图直方图(堆叠直方图连续变量堆叠直方图离散变量堆叠直方图)密度图箱图(添加抖动数据点tufte箱图多分类变量分组箱图)小提琴图

如何在堆叠栏中为每个日期范围显示多个堆叠列

如何使用 PHP 将 WordPress 帖子堆叠到 3 个单独的列中?