Python 如何加快在Jupyter笔记本中创建的程序?

Python 如何加快在Jupyter笔记本中创建的程序?,python,jupyter-notebook,Python,Jupyter Notebook,我有一个python程序,它是在Jupter笔记本中创建的。由于我使用的数据量和优化算法,在一定范围内进行4倍的自定义交叉验证需要大约30分钟才能完成 我的电脑环境:CPU i5 3.3 GHz,8 GB DDR3 RAM,SSD 我在想 如果可以将其部署到某个服务器上,并且可以使速度加快一点?(数据文件只有30MB左右,我认为可以同时上传数据和程序)。这也可以帮助其他想要使用该程序的人 我能做些什么来加速交叉验证吗?这是一种手动过程。我使用sklearn.cross_validation.KF

我有一个python程序,它是在Jupter笔记本中创建的。由于我使用的数据量和优化算法,在一定范围内进行4倍的自定义交叉验证需要大约30分钟才能完成

我的电脑环境:CPU i5 3.3 GHz,8 GB DDR3 RAM,SSD

我在想

  • 如果可以将其部署到某个服务器上,并且可以使速度加快一点?(数据文件只有30MB左右,我认为可以同时上传数据和程序)。这也可以帮助其他想要使用该程序的人

  • 我能做些什么来加速交叉验证吗?这是一种手动过程。我使用
    sklearn.cross_validation.KFold
    提取训练集和测试集。然后我循环通过每个折叠来构建模型并测试其结果。我不确定是否可以封装我的模型构建方法并在Parralel中执行交叉验证


  • 1:有几个付费的HPC服务器,比如亚马逊,但这是离题的

    2:交叉验证的迭代可以并行进行

    由于交叉验证没有连接,我建议如下:

    import multiprocessing
    
    def validation_function(args):
        do_validation
        ...
        ...
    
    p = multiprocessing.Pool(processes=multiprocessing.cpu_count()) 
    for _ in p.imap_unordered(validation_function, args):
        pass
    

    是否有任何文档推荐?我从未使用过多处理,我正在阅读,但它似乎太长了。我想这是一个很好的开始。并行化并不是一件容易的事情,最后,我使用了
    joblib
    。这是一个非常简单的并行工作。你也可以使用这个功能吗?交叉验证。交叉验证分数(clf、X数字、y数字、cv=kfold、n作业=-1)。然后n_jobs将是指定所用进程/CPU数量的参数。@Ohumeronen但是定制
    clf
    非常困难。在我的自定义交叉验证中,它涉及KDE、优化算法和其他一些?对于您的第一个问题,我建议您租用或设置一台服务器,并熟悉SSH。可能使用-X参数对服务器进行可视间隔。@Ohumeronen,是的,但这只是几个步骤。