基于两个因素的可视化错误

2024-04-19 05:48:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

enter image description here

但这里的问题是我的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")

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

谢谢


Tags: alpha算法nppltminmaxlistscatter
1条回答
网友
1楼 · 发布于 2024-04-19 05:48:31

绘制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()

收益率

enter image description here


这里是一个相同数据的三维散点图的例子,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()

enter image description here

我不确定这是否是一种进步。这些点有点杂乱,但如果拖动鼠标旋转绘图,这些点是可以区分的。你知道吗

相关问题 更多 >