2016-07-28 15 views
0

私はJupterノートブックで作成されたPythonプログラムを持っています。私が使用したデータサイズと最適化のために、ある範囲内で4倍のカスタムクロスバリデーションが完了するまでに約30分かかります。ジュピターノートブックで作成したプログラムをスピードアップするにはどうしたらいいですか?

マイコンピュータの環境:CPU i5 3.3 GHz、8 GB DDR3 RAM、SSD。

いくつかのサーバーにデプロイすることが可能になると速度が少し速く行うことができるなら、私は

  1. を思ったんだけど? (データファイルは約30MBしかないので、データとプログラムの両方をアップロードすることは可能だと思います)。そして、これはプログラムを使いたい人にも役立つかもしれません。

  2. クロスバリデーションを高速化するために何かできますか?それは親切な手作業です。私はsklearn.cross_validation.KFoldを使って列車とテストセットを抽出します。次に、各折り返しをループしてモデルを構築し、その結果をテストします。モデル構築メソッドをカプセル化し、parrallelで相互検証を実行できるかどうかはわかりません。

+0

あなたも、この機能を使用することができますか? cross_validation.cross_val_score(clf、X_digits、y_digits、cv = kfold、n_jobs = -1)。 n_jobsは、使用されたプロセス数/ cpusの数を指定するパラメータになります。 – Ohumeronen

+0

@Ohumeronenしかし、そのカスタムclfは作るのがかなり難しいです。私のカスタムクロスバリデーションでは、KDE、最適化アルゴリズム、その他のものが含まれています。 – cqcn1991

+0

clfパラメータには受け入れられない独自のクラシファイアを使用しますか?あなたの最初の質問のために、私はサーバーを借りたりセットアップしてSSHに慣れさせることを提案します。おそらく-Xパラメータを使用すると、サーバーとの視覚的なつながりが得られます。 – Ohumeronen

答えて

0

1:Amazonなどのいくつかの有料HPCサーバーがありますが、これはSOのトピックです。

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 
+0

ドキュメントの推奨はありますか?私はnerverが 'multiprocessing'を使用していますが、https://docs.python.org/2.7/library/multiprocessing.htmlを読んでいますが、時間がかかりすぎるようです。 – cqcn1991

+1

私はそれが始まるのが良い場所だと思います。並列化は簡単な作業ではありません –

+0

さらに、map reduceは私の問題に適していますか? – cqcn1991

関連する問題