【问题标题】:How to plot OPTICS clustering results using seaborn?如何使用 seaborn 绘制 OPTICS 聚类结果?
【发布时间】:2021-01-08 13:37:52
【问题描述】:

我使用 CNN 从 2 个类别(猫和狗)的 10 张图像中获得了特征。所以我有一个 (10, 2500) numpy 数组。我在数组上应用了 OPTICS 聚类算法来查找哪个图像属于哪个聚类

clustering = OPTICS(min_samples=2).fit(train_data_array)

现在我正在尝试使用 seaborn 绘制集群

sns.scatterplot(data=train_data_array).plot

但是没有情节。

【问题讨论】:

标签: python python-3.x seaborn cluster-analysis optics-algorithm


【解决方案1】:

有两个问题。

  1. OPTICS 返回的对象只包含标签,所以你需要 将其添加到您的训练数据中。
  2. 训练数据有 2500 个变量,您很可能需要进行降维才能渲染二维图。

以下是使用 iris 数据集的示例:

from sklearn.cluster import OPTICS
import seaborn as sns
import pandas as pd

df = sns.load_dataset("iris").iloc[:,:4]

像你一样执行聚类:

clustering = OPTICS(min_samples=20).fit(df)

使用 4 个变量对此数据执行 PCA,返回前 2 个组件:

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(df)

将PC分数和聚类结果添加到训练数据中,也可以制作单独的data.frame:

df['PC1'] = pca.fit_transform(df)[:,0]
df['PC2'] = pca.fit_transform(df)[:,1]
df['clustering'] = clustering.labels_

剧情:

sns.scatterplot(data=df,x="PC1",y="PC2",hue=df['clustering'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2020-06-17
    • 2017-05-16
    相关资源
    最近更新 更多