【问题标题】:Plot high dimensional data on scatter plot - is this doable?在散点图上绘制高维数据 - 这可行吗?
【发布时间】:2020-11-05 21:21:49
【问题描述】:

我有一个直观的问题。让我们来

import pandas as pd
import numpy as np
df1 =5*pd.DataFrame(np.random.randn(N, 3), columns=['A', 'B','C'])
df2 =10+10*pd.DataFrame(np.random.randn(N, 3), columns=['A', 'B','C'])

Data=np.concatenate((df1, df2), axis=0)
Data[:,2]=1
Data[0:,2]=0
y=Data[:,2]
df=pd.DataFrame(np.c_[Data[:,0],Data[:,1]])
df1=df
df1['^2']=Data[:,1]**2
df1['^3']=Data[:,1]**3
df1['^4']=Data[:,1]**4

我的任务是绘制以下散点图:

但由于数据维度,我非常怀疑它是否可行。我的论点是你不能在散点图或任何类型的图(甚至是 3d)上绘制数据我正确吗?

【问题讨论】:

标签: python pandas numpy


【解决方案1】:

您最多可以绘制 4D(这相当于在 3D 中创建“热图”)。更多信息请参见链接here

绘制“高维”数据的一种方法是使用降维技术(例如Principal Component Analysis (PCA))来降低数据的维数,同时尽可能多地保留有关数据分布方式的信息。

如果您对此感兴趣,您可以做的一件事是使用 PCA 将您的 5D 数据投影到 4D 数据中(这可以通过 sklearn 完成),然后使用上面链接的代码在 4D 中绘图:

import numpy as np
from sklearn.decomposition import PCA
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

# Project data down to 4D
X = df.values  # This could be done after you raise your data to different powers
pca = PCA(n_components=4)  # n_components is the number of dimensions to project to
X_four_d = pca.fit_transform(X)

# Now plot in 4D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = X_four_d[:,0]
y = X_four_d[:,1]
z = X_four_d[:,2]
c = X_four_d[:,3]

img = ax.scatter(x, y, z, c=c, cmap=plt.hot())
fig.colorbar(img)
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多