使用matplotlib可视化10维数据

kin*_*o-d 6 python numpy matplotlib data-science

我有这样的数据:

ID    x1   x2   x3    x4    x5    x6    x7   x8   x9   x10
1   -0.18   5 -0.40 -0.26  0.53 -0.66  0.10   2 -0.20    1
2   -0.58   5 -0.52 -1.66  0.65 -0.15  0.08   3  3.03   -2
3   -0.62   5 -0.09 -0.38  0.65  0.22  0.44   4  1.49    1
4   -0.22  -3  1.64 -1.38  0.08  0.42  1.24   5 -0.34    0
5    0.00   5  1.76 -1.16  0.78  0.46  0.32   5 -0.51   -2
Run Code Online (Sandbox Code Playgroud)

什么是可视化这些数据的最佳方法,我使用matplotlib对其进行可视化,并使用pandas从csv中读取它

谢谢

Ang*_*ams 19

在高维空间中可视化数据始终是一个难题.常用的一种解决方案(现在可用pandas)是检查数据的所有1D和2D投影.它没有提供有关数据的所有信息,但除非您能在10D中看到,否则无法进行可视化!这是一个如何使用pandas(版本0.7.3向上)执行此操作的示例:

import numpy as np 
import pandas as pd
from pandas.tools.plotting import scatter_matrix

#first make some fake data with same layout as yours
data = pd.DataFrame(np.random.randn(100, 10), columns=['x1', 'x2', 'x3',\
                    'x4','x5','x6','x7','x8','x9','x10'])

#now plot using pandas 
scatter_matrix(data, alpha=0.2, figsize=(6, 6), diagonal='kde')
Run Code Online (Sandbox Code Playgroud)

这将生成一个图表,其中所有2D投影都是散点图,以及一维投影的KDE直方图:

在此输入图像描述

我在github页面上也有一个纯matplotlib方法,它产生一个非常相似类型的绘图(它是为MCMC输出设计的,但在这里也是合适的).这是你在这里使用它的方式:

import corner_plot as cp

cp.corner_plot(data.as_matrix(),axis_labels=data.columns,nbins=10,\
              figsize=(7,7),scatter=True,fontsize=10,tickfontsize=7)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述