在下面的代码中,我遍历了由2个参数组成的网格,以查看哪一组参数将产生最佳结果。
from sklearn.grid_search import ParameterGrid
ar1= np.arange(1,10,0.1)
ar2= np.arange(0.1,3,0.01)
param_grid = {'p1': ar1, 'p2' : ar2}
grid = ParameterGrid(param_grid)
result=[]
p1=[]
p2=[]
for params in grid:
r = getresult(params['p1'], params['p2'])
result.append(r)
p1.append(params['p1'])
p2.append(params['p2'])因此,我得到了3个数组,一个具有每次迭代的结果,两个数组(p1,p2)具有相应的参数。现在,我想用matplotlib绘制这些数据,以便可视化结果在参数平面上的变化。
我尝试了以下方法,但我得到了一个空白的情节:
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(p1, p2, result)理想情况下,我希望能够创建类似下面的情节。如何使用matplotlib实现这一点?

发布于 2017-04-09 03:04:49
最后,我提出了以下解决方案:
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(X, Y, Z, cmap=cm.jet, linewidth=0)
fig.tight_layout()
plt.show()上述结果产生了所需的可视化,如下所示:

发布于 2017-04-08 23:20:00
plot_surface要求输入数组是二维的.正如我所解释的,您的数组是一维的。因此,将它们改造成2D可能是一个解决方案。
import numpy as np
shape = (len(ar2), len(ar1))
p1 = np.array(p1).reshape(shape)
p2 = np.array(p2).reshape(shape)
result = result.reshape(shape)然后通过
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(p1, p2, result)可能有用。(我现在不能测试它。)
https://stackoverflow.com/questions/43301191
复制相似问题