我有两个密集矩阵(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)
这是主动学习方法的一部分,我正在使用这种方法通过聚类实现查询,其中整个数据集被聚类,聚类的质心形成训练数据集,生成代表整个数据集的训练数据集。
有无限多种方法可以做到这一点(当然只有有限数量的结果),因此您需要更精确地确定最佳结果是什么。
例如,可以将关联性传播应用于
alpha * para + (1 - alpha) * title
您要做的是将您拥有的数组组合成一个大数组,以便它们可以全部聚集在一起,您可以这样做的一种方法是使用 numphy 追加库 Exzample:
X = np.append(title, para, axis =0)
af = AffinityPropagation().fit(X)
现在,它们已组合在一起,可以对它们进行聚类以找到它们组合的中心。