-2

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

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

现在我正在尝试使用seaborn

sns.scatterplot(data=train_data_array).plot

但是没有剧情。

4

1 回答 1

0

有两个问题。

  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'])

在此处输入图像描述

于 2020-09-24T21:44:22.457 回答