4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jupyter Notebookで再現性を確保する10の方法

Posted at

はじめに

  • 自己紹介:UbuntuでPythonを書いてデータ分析とか異常検知してます
  • Jupyter Notebookで再現性を確保する10の方法というpaperが良かった
  • https://arxiv.org/abs/1810.08055
  • 翻訳しました

目次

  1. ストーリーを伝える
  2. 結果だけでなく過程もドキュメント化する
  3. ステップを明確にする
  4. コードをモジュール化する
  5. 環境の依存関係を記録する
  6. バージョン管理する
  7. パイプラインを作る
  8. データをシェアし、説明する
  9. notebookを公開する
  10. スタックは共有してOSSに貢献する

ストーリーを伝える

ストーリーを伝えたい人のレベルに合わせて伝えよう。
「伝えたい人」はエンジニアなのか?技術の知識がない人なのか考えること。
もしかしたら1ヶ月後の自分かもしれない。

結果だけでなく過程もドキュメント化する

「なぜ」「何を」「どのように」行ったのか記入しよう。

ステップを明確にする

コードをセル毎にモジュール化し、その上にマークダウンでラベルを付けよう。
各セルは、1つの段落、1つの機能、または1つのタスクを行うように区切ろう。
notebookが長くなりすぎたら、別のファイルに分けても良い。

コードをモジュール化する

コードのコピペはやめよう。(修正の時が大変だ!)
関数やクラスを作ってそれを呼び出すようにしよう。

依存関係を記録する

Condaのenvironment.ymlやpipのrequirements.txtを使って、依存関係を明示しよう。

バージョン管理する

GitやGitHubを活用しよう。
nbdimeなどのツールで差分を明確化しよう。

パイプラインを作る

汎用のパイプラインを作ろう。
複雑な分析の実行を長いnotebookで行うのはやめよう。
「欠損処理用」「自然言語のクリーニング用」など小さなnotebookに分割して行おう。
訳注:おすすめEDAスニペット
https://qiita.com/TaigoKuriyama/items/8f9286b5c882819adebb
papermillやMakefileなども試してみよう。
大切なことは継続的インテグレーションだ!

データをシェアする

結果だけでなく、データセット全体をnotebookそのものを相手と共有しよう。

notebookを公開する

可能であれば、外部の人にもnotebookを公開しよう。
Github, Docker, Nbviewer などのツールを使ってみよう。

スタックを共有してOSSに貢献する

再現性は共同研究の重要ポイント。
必要ならば再現性の確保に専念してみよう。
また、問題に突き当たったり、それを解決したときは、ぜひ共有してコミュニティ全体に貢献しよう!

#終わりに

  • 「ここがまちがってる」「「こういう資料もあるよ」などコメントお待ちしてます
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?