我有两个密集矩阵(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)
这是主动学习方法的一部分,我使用它来通过聚类实现查询,其中整个数据集被聚类,聚类的质心形成训练数据集,产生代表整个数据集的训练数据集。
答案 0 :(得分:0)
有很多方法可以这么做(但当然只有有限数量的结果),所以你需要更精确地确定最佳结果。
例如,您可以将亲和力传播应用到
alpha * para + (1 - alpha) * title
答案 1 :(得分:0)
你想要做的是将你拥有的数组合并到一个大数组中,这样它们就可以通过使用numphy附加库 Exzample:以一种方式聚集在一起。
X = np.append(title, para, axis =0)
af = AffinityPropagation().fit(X)
现在它们被组合在一起,它们可以被聚类以找到它们的中心。