Jupyter(iPython)笔记本当之无愧地被认为是一个很好的工具,用于对代码进行原型设计并以交互方式进行各种机器学习.但是当我使用它时,我不可避免地遇到以下问题:
假设我在jupyter中开发了一个整机学习管道,包括从各种来源获取原始数据,清理数据,特征工程和培训模型.现在用高效可读的代码从中制作脚本的最佳逻辑是什么?到目前为止,我曾经用几种方法解决它:
只需将.ipynb转换为.py,只需稍加修改,就可以将笔记本中的所有管道硬编码为一个python脚本.
制作一个包含许多函数的单个脚本(对于每一个或两个单元格大约有1个函数),尝试使用单独的函数组成管道的各个阶段,并相应地命名它们.然后通过指定所有参数和全局常量argparse.
与point(2)相同,但现在将所有函数包装在类中.现在,所有全局常量以及每个方法的输出都可以存储为类属性.
使用多个脚本将笔记本转换为python模块.我没有试过这个,但我怀疑这是解决这个问题的最长方法.
我想,这种整体设置在数据科学家中非常普遍,但令人惊讶的是我无法找到任何有用的建议.
伙计们,请分享您的想法和经验.你有没有遇到过这个问题?你是怎么解决它的?
我试图找出matplotlib和seaborn绘图函数是如何关联的.特别是,我想知道什么样的pyplot参数可以传递给关键字dicts marginal_kws和annot_kws函数seaborn.jointplot().
假设我们有data包含列c0和的DataFrame c1.我猜测joint_kws接受来自的参数pyplot.hexbin(),所以当我试图用那里的参数调整外观时,它工作得很好:
import seaborn as sns
sns.jointplot('c0', 'c1', data=data, kind='hex',
joint_kws={'gridsize':100, 'bins':'log', 'xscale':'log', 'yscale':'log'})
Run Code Online (Sandbox Code Playgroud)
然后我试图在直方图轴与参数设置日志规模log=True从pyplot.hist():
sns.jointplot('c0', 'c1', data=data, kind='hex',
joint_kws={'gridsize':100, 'bins':'log', 'xscale':'log', 'yscale':'log'},
marginal_kws={'log':True})
Run Code Online (Sandbox Code Playgroud)
这导致了
TypeError: distplot() got an unexpected keyword argument 'log'
Run Code Online (Sandbox Code Playgroud)
怎么说得对?
PS这个问题不是关于在seaborn中设置日志比例(JointGrid我知道),而是将matplotlib参数作为一个整体传递给seaborn函数.