【问题标题】:Cluster on two features and plot results在两个特征上聚类并绘制结果
【发布时间】:2017-05-16 00:15:04
【问题描述】:

我有两个密集矩阵(titlepara)。我希望使用亲和传播算法对它们进行聚类,然后绘制聚类。

我编写了以下代码,这些代码基于一个特性进行聚类。我怎样才能使它适应这两个特征的聚类,然后绘制结果?

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)

这是主动学习方法的一部分,我使用它通过聚类来实现查询,从而将整个数据集聚类,并且聚类的质心形成训练数据集,从而生成代表整个数据集的训练数据集。

【问题讨论】:

    标签: python matplotlib scikit-learn cluster-analysis


    【解决方案1】:

    有无数种方法可以做到这一点(但当然只有有限数量的结果),因此您需要更准确地确定最佳结果是什么。

    例如,您可以将相似性传播应用于

    alpha * para + (1 - alpha) * title
    

    【讨论】:

    • 在这种情况下,它们的权重不相等?
    • 它们可能无法比较,因此即使将 alpha 设置为 0.5,它们的影响也不会相等。
    【解决方案2】:

    您想要做的是将您拥有的数组组合成一个大数组,以便它们都可以聚集在一起,您可以使用 numphy 附加库示例:

    X = np.append(title, para, axis =0)
    af = AffinityPropagation().fit(X)
    

    现在它们已组合在一起,可以对它们进行聚类以找到它们组合的中心。

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 2020-07-18
      • 1970-01-01
      • 2019-12-10
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      相关资源
      最近更新 更多