【问题标题】:visualize error based on 2 factors基于 2 个因素可视化错误
【发布时间】:2012-11-17 19:40:58
【问题描述】:

我已经实现了一种算法(RLSR),它有两个正则化因子。基于这两个因素的不同值,我的成本函数会减少或增加。现在我通过将错误作为结果颜色传递给plt.scatter 来可视化我的错误:

但这里的问题是我在 y 轴上的值非常小,所以你可以看到它们重叠,我看不到我的部分结果。

alpha_list=[1e-11,1e-10,1e-10,5*1e-10,8*1e-10,1e-8,1e-8,5*1e-8,8*1e-6, 1e-6,1e-6,5*1e-6,8*1e-6,1e-4,1e-4,5*1e-4,8*1e-4,1e-3,1e-3,5* 1e-3,6*1e-3,8*1e-3]

我尝试降低透明度,但没有多大帮助!

这就是我实现它的方式:

eigenvalues,alphaa  = np.meshgrid(eigRange,alpha_list )

fig = plt.figure()
DatavmaxTrain = np.max(normCostTrain)
DatavminTrain = np.min(normCostTrain)

DatavmaxTest = np.max(normCostTest)
DatavminTest = np.min(normCostTest)

plt.subplot(211)

plt.scatter(eigenvalues,alphaa,s=130, c=normCostTrain,cmap=cm.PuOr, vmin=DatavminTrain, vmax=DatavmaxTrain, alpha=0.70) #-----for train 



cb1=plt.colorbar()
cb1.set_label("normalized square error")

plt.title("Train ")
plt.xlabel("No. of Eigenvalues")
plt.ylabel("Regualrization parameter")

所以我正在寻找一种更好的方法来可视化我的数据。

谢谢

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    如何绘制alpha_list 值的日志?

    alpha_list = np.log(alpha_list)
    

    仍有一些重叠,但至少值分布更均匀:

    import matplotlib.pyplot as plt
    import numpy as np
    
    alpha_list=[1e-11,1e-10,1e-10,5*1e-10,8*1e-10,1e-8,1e-8,5*1e-8,8*1e-6,1e-6,1e-6,5*1e-6,8*1e-6,1e-4,1e-4,5*1e-4,8*1e-4,1e-3,1e-3,5*1e-3,6*1e-3,8*1e-3]
    alpha_list = np.log(alpha_list)
    eigRange = np.linspace(0,19,20)
    
    eigenvalues,alphaa  = np.meshgrid(eigRange,alpha_list )
    normCostTrain = np.random.random((len(alpha_list),len(eigRange)))
    
    fig = plt.figure()
    DatavmaxTrain = np.max(normCostTrain)
    DatavminTrain = np.min(normCostTrain)
    
    plt.scatter(eigenvalues,alphaa,s = 130, c=normCostTrain,cmap=plt.get_cmap('PuOr'),
                vmin=DatavminTrain, vmax=DatavmaxTrain, alpha=0.70) #-----for train 
    
    cb1=plt.colorbar()
    cb1.set_label("normalized square error")
    
    plt.title("Train ")
    plt.xlabel("No. of Eigenvalues")
    plt.ylabel("Log(Regularization parameter)")
    plt.show()
    

    产量


    这是相同数据的 3D 散点图示例,z 轴(和颜色)都用于表示“归一化平方误差”。

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.cm as cm
    import numpy as np
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection = '3d')
    
    alpha_list = [1e-11, 1e-10, 1e-10, 5*1e-10, 8*1e-10, 1e-8, 1e-8, 5*1e-8, 8*1e-6,
                  1e-6, 1e-6, 5*1e-6, 8*1e-6, 1e-4, 1e-4, 5*1e-4, 8*1e-4, 1e-3, 1e-3,
                  5*1e-3, 6*1e-3, 8*1e-3]
    
    alpha_list = np.log(alpha_list)
    eigRange = np.linspace(0, 19, 20)
    
    eigenvalues, alphaa  = np.meshgrid(eigRange, alpha_list )
    eigenvalues = eigenvalues.ravel()
    alphaa = alphaa.ravel()
    normCostTrain = np.random.random((len(alpha_list), len(eigRange))).ravel()
    
    DatavmaxTrain = np.max(normCostTrain)
    DatavminTrain = np.min(normCostTrain)
    
    PuOr = plt.get_cmap('PuOr')
    ax.scatter(eigenvalues, alphaa, normCostTrain,
               c = normCostTrain.ravel(),
               s = 30,
               cmap = PuOr,
               vmin = DatavminTrain,
               vmax = DatavmaxTrain,
               alpha = 0.70
               ) #-----for train
    
    m = cm.ScalarMappable(cmap = PuOr)
    m.set_array(normCostTrain)
    
    cb1 = plt.colorbar(m)
    cb1.set_label("normalized square error")
    
    plt.title("Train ")
    ax.set_xlabel("No. of Eigenvalues")
    ax.set_ylabel("Log(Regularization parameter)")
    ax.set_zlabel("normalized square error")
    plt.show()
    

    我不确定这是否是一种改进。这些点有点杂乱无章,但如果您拖动鼠标旋转绘图,则可以区分。

    【讨论】:

    • 谢谢!我应该早点试试!但是有没有更好的替代情节风格更适合我的问题?
    • @Moj:您可以尝试使用3D scatter plot。
    • 我试过一次,但不知道如何使用它或我的目的。你能给我一些提示吗!我放了 ax.scatter(eigenvalues, alphas,c=normCostTrain, marker="o") 但收到以下错误:' File "/usr/lib/pymodules/python2.7/mpl_toolkits/mplot3d/proj3d.py", line 184、在vec_pad_ones vec = np.array([xs,ys,zs,np.ones((len(xs)))]) ValueError: setting an array element with a sequence.',
    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多