在两个特征上聚类并绘制结果
Posted
技术标签:
【中文标题】在两个特征上聚类并绘制结果【英文标题】:Cluster on two features and plot results 【发布时间】:2017-05-16 00:15:04 【问题描述】:我有两个密集矩阵(title
和 para
)。我希望使用亲和传播算法对它们进行聚类,然后绘制聚类。
我编写了以下代码,这些代码基于一个特性进行聚类。我怎样才能使它适应这两个特征的聚类,然后绘制结果?
import os
import time
import string
import pickle
import matplotlib.pyplot as plt
from sklearn.cluster import AffinityPropagation
from sklearn import metrics
import matplotlib.pyplot as plt
from itertools import cycle
#from sklearn.ensemble import RandomForestClassifier
#Opens and stores preprocessed data.
filepath = '...'
with open((filepath + 'para.dat'), 'rb') as infile:
para = pickle.load(infile)
with open(filepath + 'title.dat', 'rb') as infile:
title = pickle.load(infile)
with open(filepath + 'y.dat', 'rb') as infile:
y = pickle.load(infile)
af = AffinityPropagation().fit(para)
cluster_centers_indices = af.cluster_centers_indices_
labels = af.labels_
n_clusters_= len(cluster_centers_indices)
这是主动学习方法的一部分,我使用它通过聚类来实现查询,从而将整个数据集聚类,并且聚类的质心形成训练数据集,从而生成代表整个数据集的训练数据集。
【问题讨论】:
【参考方案1】:有无数种方法可以做到这一点(但当然只有有限数量的结果),因此您需要更准确地确定最佳结果是什么。
例如,您可以将相似性传播应用于
alpha * para + (1 - alpha) * title
【讨论】:
在这种情况下,它们的权重不相等? 它们可能无法比较,因此即使将 alpha 设置为 0.5,它们的影响也不会相等。【参考方案2】:您想要做的是将您拥有的数组组合成一个大数组,以便它们都可以聚集在一起,您可以使用 numphy 附加库示例:
X = np.append(title, para, axis =0)
af = AffinityPropagation().fit(X)
现在它们已组合在一起,可以对它们进行聚类以找到它们组合的中心。
【讨论】:
以上是关于在两个特征上聚类并绘制结果的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 的 Scikit-Learn 库对文本数据进行聚类并绘图
R语言层次聚类(hierarchical clustering):使用scale函数进行特征缩放hclust包层次聚类(创建距离矩阵聚类绘制树状图dendrogram,在树状图上绘制红色矩形框)