首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python可视化优化参数

Python可视化优化参数
EN

Stack Overflow用户
提问于 2017-04-08 22:56:21
回答 2查看 902关注 0票数 4

在下面的代码中,我遍历了由2个参数组成的网格,以查看哪一组参数将产生最佳结果。

代码语言:javascript
复制
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绘制这些数据,以便可视化结果在参数平面上的变化。

我尝试了以下方法,但我得到了一个空白的情节:

代码语言:javascript
复制
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(p1, p2, result)

理想情况下,我希望能够创建类似下面的情节。如何使用matplotlib实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-09 03:04:49

最后,我提出了以下解决方案:

代码语言:javascript
复制
fig = plt.figure()
ax = fig.gca(projection='3d')

ax.plot_trisurf(X, Y, Z, cmap=cm.jet, linewidth=0)
fig.tight_layout()
plt.show()

上述结果产生了所需的可视化,如下所示:

票数 2
EN

Stack Overflow用户

发布于 2017-04-08 23:20:00

plot_surface要求输入数组是二维的.正如我所解释的,您的数组是一维的。因此,将它们改造成2D可能是一个解决方案。

代码语言:javascript
复制
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)

然后通过

代码语言:javascript
复制
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(p1, p2, result)

可能有用。(我现在不能测试它。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43301191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档