【问题标题】:matplotlib does not support generators as inputmatplotlib 不支持生成器作为输入
【发布时间】:2019-05-20 14:35:33
【问题描述】:

我在这个站点https://github.com/vsmolyakov/experiments_with_python/blob/master/chp01/ensemble_methods.ipynb 运行笔记本来练习python 的集成方法,在python 3 中运行这部分代码时出错:

plt.figure()
(_, caps, _) = plt.errorbar(num_est, bg_clf_cv_mean, yerr=bg_clf_cv_std, c='blue', fmt='-o', capsize=5)
for cap in caps:
    cap.set_markeredgewidth(1)                                                                                                                                
plt.ylabel('Accuracy'); plt.xlabel('Ensemble Size'); plt.title('Bagging Tree Ensemble');
plt.show()

错误是“matplotlib 不支持生成器作为输入” 解决办法是什么? 最好的问候

【问题讨论】:

  • 导致错误的行是什么?你给 matplotlib 提供什么样的输入?

标签: python python-3.x matplotlib generator ensemble-learning


【解决方案1】:

在那个例子中 有一行num_est = map(int, np.linspace(1,100,20))。这会在 python 2.7 中生成一个列表。但在 python 3 中,它只是一个生成器。无论如何,地图很奇怪,所以我建议用

替换该行
num_est = np.linspace(1,100,20).astype(int)

【讨论】:

  • 可以输入列表(地图)吗?如何找到哪个更有效?
  • @AAI .astype(int) 速度更快,但如果您只有大约 20 个元素,两者仍将处于微秒级或更低。