在Amazon EC2集群上使用python scikit-learn库执行gridsearch

ak3*_*t0n 4 python amazon-ec2 scikit-learn

很抱歉,如果这个问题有点特定于python Scikit-learn库.

我正在尝试执行网格搜索以找到scikit-learn的GradientBoostingRegressor的最佳参数.问题是,我不知道从哪里开始.在过去,我使用过R和RStudio,但我现在正在尝试迁移到Python进行数据挖掘,Scikit看起来非常有前途.

任何人都可以共享他们可能已经用于在Amazon EC2集群上计算的一些简单设置代码,或者可能指向该库的其他机器学习算法的有用示例参考吗?

谢谢.

ogr*_*sel 7

据我所知,GBRT是一个非常顺序的算法,因此没有平行的方法来运行它.

随机森林/ ExtraTrees模型令人尴尬地平行,因此更适合在集群上训练模型.

scikit-learn使用joblib对单机多处理有一些内置支持(检查接受n_jobs参数的模型的docstring ).我们计划在某个时刻在joblib中实现一个任务调度框架.因此,我们可以利用IPython parallel作为后端在集群上运行.然而,目前没有什么可以开箱即用的.

如果你准备花一些时间自己做,我会建议你看一下StarCluster及其IPython插件:

  • 我打算在某个时候制作一个"GridSearchCV"的集群版本,但还没有准备好. (3认同)

Pet*_*fer 5

我完全同意ogrisel - StarCluster非常方便,因为它允许你在任何时候设置一个IPython集群,并支持很好的现场实例,因为它们比普通的便宜得多.

您可以在此要点中找到一些代码,向您展示如何在IPython集群上对sklearn的Gradient Boosting估算器进行分布式网格搜索.

它将网格搜索与交叉验证相结合,并将评估的网格点存储在MongoDB数据库中.

代码会根据平均交叉验证分数自动选择最佳数量的树.

快乐的调整!