首页 > 解决方案 > 散点图两个特征向量集在同一个图中

问题描述

我想在同一图中的散点图中绘制两个特征向量。我正在做 MNIST 的 PCA 分析。

当前的特征向量可以称为它Elements有 784 行。

print Elements.shape
(784,)

我想在同一个图中绘制Elements[-20]Elements[-19]散点图,并希望实现如下所示。

我正在努力将这两个元素添加到具有不同颜色的同一个图中。

plt.scatter(X[-20], X[-19], c= 'r')只产生一种颜色,没有分散值的区别。

正如下面突出显示的那样,我的一些数据集是重叠的,因此下面的 SO 解决方案不起作用。解决方案

在此处输入图像描述

X[-20] 的前 20 个数据元素如下。

0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
  0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
  2.84343259e-03  6.22613687e-03 -7.95592208e-15 -1.69063344e-14
  1.34798763e-14  0.00000000e+00  6.36473767e-14 -3.18236883e-14

标签: pythonmatplotlibpca

解决方案


关于可视化问题

您似乎正在为您的情节添加一个标量。您需要做的是首先分离您的数据,然后为每个集合绘制一个图。像这样:

import numpy as np
import matplotlib.pyplot as plt

def populate(a=2,b=5,dev=10, number=400):
    X = np.random.uniform(0, 50, number)
    Y = a*X+b + np.random.normal(0, dev, X.shape[0])
    return X, Y

num = 3000
x1, y1 = populate(number=num)
x2, y2 = populate(-0.2, 110, number=num)

x = np.hstack((x1, x2))
y = np.hstack((y1, y2))

fig, ax = plt.subplots(nrows=1, ncols=1)

plt.scatter(x[:num], y[:num], color="blue", alpha=0.3)
plt.scatter(x[num:], y[num:], color="red", alpha=0.3)

ax = plt.gca()
howblack = 0.15
ax.set_facecolor((howblack, howblack, howblack))
plt.show()

,结果如下:

分散的人口

有数字程序可以分离您的数据,但这不是可视化问题。有关一些聚类方法,请参阅scikit-learn。在您的示例中,假设Elements是某种数组,您需要找到一种方法来分离数据。


关于特征向量

散点图通常假设您至少有 X 和 Y 数据(因此是 2D 或更多)。

您似乎指的是一个特征向量,这显然不是足够的信息,因为向量的 700 个维度并不容易显示。因此,您需要在散点图中决定什么是 X,什么是 Y,以及将什么分成不同颜色的群体。


推荐阅读