首页 > 解决方案 > 更高效的多变量可视化

问题描述

嗨,这是一个带有 6 维数据集的示例代码。

import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
from mpl_toolkits.mplot3d import Axes3D  
import numpy as np
import pandas as pd
import seaborn as sns

def f(a,b,c,d,e):
    return a*b*c*d*e/1e14
# characteristics
a=np.arange(1000,11000,1000)
b=np.arange(45,100,10)
c=np.arange(10000,60000,5000)
d=np.arange(1,6,.5)*1000
e=np.array([1,2])
gr=np.array(np.meshgrid(a,b,c,d,e)).T.reshape(-1,5)
cost=np.array([f(*j) for j in gr])
df=pd.DataFrame(np.column_stack([gr,cost]),columns=['a','b','c','d','e','cost'])

我想研究数据中可能的趋势。例如,我想知道“a”对“成本”的影响,同时保持其余列不变等。有没有比这更好的从数据中获得洞察力的方法?

fig = plt.figure(figsize=[10,8])
ax = Axes3D(fig)
temp=df[(df.a==4000) & (df.d==1000)]
ax.plot_trisurf(temp.b, temp.c, temp.cost, cmap=cm.jet, linewidth=0.2)
ax.set_xlabel('b', fontsize=16)
ax.set_ylabel('c', fontsize=16)
ax.set_zlabel('cost', fontsize=16)

我也尝试过这些,但不清楚它们的含义。例如,在这种情况下,成本变量对的热图中不应该所有相关值都相等吗?

# Various visualizaiton methods
#a)
f, ax = plt.subplots(figsize=(10, 6))
corr = df.corr()
hm = sns.heatmap(round(corr,2), annot=True, ax=ax, cmap="coolwarm",fmt='.2f',
                 linewidths=.05)
f.subplots_adjust(top=0.93)
#b)
pd.plotting.scatter_matrix(df, alpha=0.2, figsize=(16, 16))

标签: python-3.xdata-visualization

解决方案


推荐阅读