Jupyter Notebook のベストプラクティス
セルの番号付け、コミット前の出力クリア、パラメータ化実行のための papermill を学びます。
「Jupyter Notebook のベストプラクティス」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
ノートブックの両刃の剣
Jupyterノートブックは、コードをセルで実行し、プロットをインラインで確認しながら素早く試行錯誤できるため、探索に最適です。しかし、その柔軟性は、規律を守らなければ、整理されておらず再現できない作業を生み出す原因にもなります。
このレッスンでは、ノートブックを整理され、信頼できる状態に保つための習慣を扱います。
隠れた状態:核心的な問題
セルは任意の順序で実行でき、以前の結果はメモリに残り続けます。この隠れた状態により、ノートブックには正しい出力が表示されていても、最初から実行すると再現できないことがあります。
ノートブックのベストプラクティスのほとんどは、隠れた状態への対策です。
セルを順番に実行する
セルの横に表示される実行番号([1]、[2])は、上から下に向かって増えている必要があります。[7] が [3] より上にあるような順序外の番号は、ノートブックが隠れた状態に依存している危険信号です。
ノートブックは、上から順に読み進めるだけで内容を理解できるように記述します。
カーネルを再起動してすべて実行する
黄金律は、ノートブックを信頼したりコミットしたりする前に、カーネル → 再起動 & すべて実行を行うことです。これによりメモリが消去され、すべてのセルが最初から実行されます。
上から下まで問題なく実行できれば、そのノートブックは再現可能です。途中でエラーになれば、隠れた状態によるバグを発見できたことになります。
セルの役割を絞る
1つのセルに1つの論理的なステップだけを含めると、ノートブックが読みやすくなり、再実行もしやすくなります。10個の処理を行う巨大なセルや、1つの操作を多数の小さすぎるセルに分散させる構成は避けます。
レポートのように各セクションの内容を説明するには、Markdownセルを使用します。
再利用可能なコードをモジュールに移す
ある関数が役立つと分かったら、ノートブックの外にある src/ へ移してインポートします。これにより、ノートブックを簡潔に保ち、コードをテスト可能にし、ノートブック間でコピー&ペーストしたコードが少しずつずれていく問題を防げます。
from src.features.build_features import make_features
X = make_features(df) # logic lives in a tested module出力による差分の問題
ノートブックは、セルの出力(テキスト、大きな表、base64画像)を .ipynb JSONの内部に保存します。それらをコミットすると、Gitの差分が大きく煩雑になるうえ、データが漏えいする可能性もあります。
解決策は、コミット前に出力を削除することです。
nbstripoutで出力を削除する
nbstripoutは、ノートブックから出力を自動的に削除します。Gitフィルターとしてインストールすれば、覚えておかなくてもコミットのたびに出力が削除されます。
# pip install nbstripout
nbstripout --install # adds a git filter for this repo
# now committed notebooks have clean, output-free diffspapermillでノートブックをパラメータ化する
papermillは、関数を呼び出すように、パラメータを注入してノートブックをプログラムから実行します。セルに parameters というタグを付けると、papermillは実行ごとにその値を上書きします。
# pip install papermill
# papermill analysis.ipynb out.ipynb -p dataset "may.csv" -p seed 42コードでパラメータ付き実行を行う
Pythonからpapermillを実行して、同じ分析ノートブックをさまざまな入力に対して実行することもできます。これは、実験をまとめて実行するためのすっきりした方法です。
import papermill as pm
for ds in ["jan.csv", "feb.csv", "mar.csv"]:
pm.execute_notebook(
"analysis.ipynb",
f"out_{ds}.ipynb",
parameters={"dataset": ds, "seed": 42},
)ノートブックの整理チェックリスト
ノートブックを共有またはコミットする前に、次を確認します。
- カーネルを再起動してすべて実行し、問題なく完了する
- セルが上から下へ順番に実行され、実行番号が増えている
- 再利用可能なロジックを
src/に移している - 出力を削除している(nbstripout)
- Markdownで内容の流れを説明している
クイックチェック:ノートブックの信頼性を確認する
コミットする前に、ノートブックが再現可能で、隠れた状態によるバグがないことを確認したいとします。
まとめ:ノートブックのベストプラクティス
ノートブックを整理され、再現可能な状態に保つ方法を学びました。
- 隠れた状態に対処するため、セルを順番に実行する
- 信頼したりコミットしたりする前に、再起動 & すべて実行を行う
- 再利用可能なコードを
src/モジュールに移す - きれいなGit差分を保つため、nbstripoutで出力を削除する
- パラメータ付きのノートブックの一括実行には、papermillを使用する
これで、AIプロジェクト構成とGitワークフローのコースは完了です。
よくある質問
「Jupyter Notebook のベストプラクティス」レッスンは無料ですか?
はい。「Jupyter Notebook のベストプラクティス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「Jupyter Notebook のベストプラクティス」で何を学びますか?
セルの番号付け、コミット前の出力クリア、パラメータ化実行のための papermill を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Jupyter Notebook のベストプラクティス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- プロフェッショナルな AI プロジェクトのディレクトリ構成
- AI プロジェクトのための Git
- 再現性:シード、設定、環境
- Jupyter Notebook のベストプラクティス