(初稿投稿日 2020/12/29)Kaggleをやっていて、ちょっとつまずいたけど 分かってみたら便利な小技等をメモしていきます。初心者のお役に立てれば幸いです。対処療法的なものもあるので、他により良い手段をご存知でしたらコメント頂けると嬉しいです。
【フォント装飾について】 厳密ではありませんが、おおよそ
Home(青太字):ページ
Edit(黒太字):ボタンコマンド
Script(赤太字):ボタンorメニューの奥にあるコマンド
File(斜体):メニューコマンド
を表しています
古いバージョンのCodeを編集する
-
Codeを開き(Editボタンを押す前に)、右サイドにあるVersion ○ of ○ をクリックしてバージョン選択画面に切り替えます。右サイドにある使いたいバージョンの三点リーダー ・・・ から、Pin as default versionを選びます。ブラウザをリロードして、目的のバージョンになっていることを確認します。ページ右上Editボタンの右にある三点リーダー ・・・ をクリックすると出てくるドロップダウンメニューからCopy & edit notebookを選ぶと、Fork(コピー)出来ます。(⇔単にEditボタンを押すと最新バージョンの編集になってしまう)
(アップデート 2021/12/16) -
他のユーザーが作ったCodeをForkする際にも、上記の方法が使えます。最初は普通にCopy and Editボタンを使えばいいですが、2回目以降はEdit My Copyに変わってしまいます。自分が行った変更を踏襲せずに オリジナルから編集したい場合は、Edit My Copyボタンの右にある三点リーダー ・・・ からCopy and Edit Codeを選びます。
(追記 2021/12/16)
検索・置換
- Code内の文字列の検索や置換をする場合は、Ctrlボタンを押しながらfを押すと、検索ボックスが出てきます。▷を押せば、置換のためのフィールドも出てきます。(なぜメニューに入っていないんだろう?)
(追記 2022/6/20)
間違って削除してしまったセルを復活させる
- Escキーを押してコマンドモードに入り、zを押すと復活できます。
-
その他のショートカットはこちら
(追記 2022/6/20)
データファイルのアップロード法
-
他ユーザーの公開CodeをCopy and Editして実行する際、ファイルが見当たらないというエラーが出ることがあります(単純なコピペSubmissionを防ぐため等の理由)。サイドバー一番上Data内の + Add Data で該当ファイルを検索&追加するか、自作してDatasetsにアップロードしなければいけません。
-
ローカルで自作したものや他サイトからダウンロードしたファイルはData右上の + New Datasets からアップロードできます。Codeのアウトプットデータを使う場合には、Save and Run(Commit) 済のCodeを開いて(Editボタンは押さずに)、右サイドにあるOutputをクリック。左下にある + New Datasets からアップロードできます。
-
Dataset名の単語区切りにアンダーバーが使えますが、Code内から呼び出すときにはハイフンに切り替わるので注意が必要です。アンダーバーでなく半角スペースでもハイフンになるので、そちらの方が簡便かと思います。(例:my_first_dataset → my-first-dataset)
(追記 2022/6/20) -
DatasetsのMetadataを見れば、どのCodeから出力したデータかは分かりますが、バージョンまでは分かりません。Dataset名にバージョン番号を入れておくと、後でActivityタブから確認することが出来ます。
提出方法の種類
-
コンペによってモデルの提出方法が異なります。コンペ Overviewの Code Requirementsに'This is a Code Competition'と記載があれば、testデータを読み込んで処理するコードを書き、そこからアウトプットされるsubmission.csv等を提出(Submit)する必要があります。(コード無しでsubmission.csvだけを提出した場合は、Submission Scoring Errorになります。)
このsubmission.csvは数個のみのデータであることが多く、残りは不可視になっていて 提出後にKaggle側でコードが自動処理されます。なので、Public Leaderboardにスコアが出るまで時間がかかります。この処理に9時間以上かかってしまうと、時間超過エラーになってしまうので、Codeの修正が必要です。 -
コンペの期限は上記の「Kaggle側でのコード自動処理の終了(=スコア表示)」を意味します。つまり期限前までにSubmitできたとしても、その後の自動処理中に期限を超えてしまうとエラーが出てしまい、無効になってしまいます。私は一度やらかしましたが、皆さんは計画的に提出して下さい。
(追記 2022/9/16) -
一方Code Competitionでない場合は、submission.csvさえ作れてしまえば、それをはじき出したコードの提出義務はありません。ですから(推奨できませんが)他の参加者が公開しているsubmission.csvをそのままコピペ提出することも可能です。またアンサンブルが比較的容易なので、他者制作のsubmission.csv同士や自作のものを組み合わせて提出するのは、多くの参加者がやっていると思われます。処理済みのsubmission.csvからスコアを計算するだけなので、Submit後かなり早くスコアが出ます。
-
どちらにしても、期限前までにPublic Leaderboardに載っている成績は Testデータの一部から計算された仮のもので、実際の成績はTestデータの残りから計算され、コンペ終了後Private Leaderboardとして発表されます。
-
他にも課題データを使って書いた図・グラフ・文章が主催者によって評価されるコンペなど色々な種類があるので、Overviewをよく読んで 何が求められているコンペなのかを知るのは基本ですが大事です。
(追記 2021/9/10)
優秀なモデルを見つける
-
Leaderboardで金メダル圏内のCodeはコンペ期間中に公開されることはまずありませんが、コンペ終了後、Discussionに1st place solutionなどとして公開されます。過去の優秀モデルをまとめたCodeは→ Winning solutions of kaggle competitions
-
paperswithcode というサイトには、課題データセットごとにSOTA(現時点での最良)モデルが記載されているので、コンペに合ったモデルを探すのに便利です。
Codeの初回保存
-
Codeの保存 Save Versionには、コードを全て実行したあとアウトプットも含めて保存するSave and Run(Commit)(デフォルト)と、コード内容だけ保存するQuick Saveがあります。Code作成直後の初回保存にはQuick Saveがオススメ。その理由は、初回の Save & Run All(Commit) で実行時にエラーが出ると、Codeが行方不明になることがあるから。(Code名検索しても、Code→Your Workの一覧にも出てこなくなります。そのくせ 同名で別Codeを保存しようとすると、「その名前は使われております」エラーが出るので、存在だけはしているようで 厄介。)
-
Codeを閉じる前であれば、Quick Saveし直せば、Codeを発見できます。ページを閉じてしまった場合は、ブラウザに履歴が残っていれば、そこから復帰できることもあります。
(追記 2021/2/22 & 3/9)
GPU/TPUを効率的に使う
-
GPU/TPUはそれぞれ週約30時間しか使えないので貴重。GPU/TPUを使わないコードの場合は、必ず使わない設定(右サイドバー内SettingsのAcceleratorをNone)にします。
-
GPU/TPUを使う設定にしている場合、実行(run)しなくても 開いてコードを書いているだけでGPU/TPU使用時間(Quota)は減ってしまいます。都度 実行確認せず 保存 Save & Run All(Commit) によって実行確認する場合は、編集開始時にページ左下のView Active Eventsで今開かれているCodeを確認し、Interactive Session(編集&実行確認セッション)をStop/Dismissして切ってしまえば、使用時間を減らすこと無く編集できます。(2021/5/11現在、Codeを実行、または設定をGPU/TPUに切り替えるまでは使用時間が減らないように改善されたようです)。 -
デバッグしながら編集する場合、編集時はGPU/TPUを使わない設定にして、実行時だけGPU/TPUを使う設定に切り替えます。編集が終わり Codeを**Save & Run All(Commit)**した後は、必ずInteractive SessionをStop/Dismissします。でないと、編集中のCode(Interactive Session with GPU/TPU)とCommit中のCode(Version XX with GPU/TPU)がダブルカウントされてQuotaが減っていくので、後で気づくと鬱になります。
-
万全を期すなら、ページ右上の自分アイコンからAccountへ行き、Quota欄のGPU/TPU使用時間が予想以上に減っていないかリロードして確認します。
(追記 2021/2/22 & 3/9 & 12/16)
セルの複数選択
Jupyter Codeと同様にセルは複数選択が可能。開始セルを選択した後、Shiftキーを押しながら 終了セルの番号部分(例 [10]:)をクリックすると複数選択できます(選択範囲を示す色がかなり薄いので注意)。Code内のある範囲のみを実行したい場合などに有効。Edit→Move Cell Up/Downと併用すると、セルをまとめて ずらすことが出来ます。
Codeのコピペ
普段Codeを書くときにはJupyter Notebookライクな'Notebook'を使っている人が多い気がしますが、Code全体など複数のセルにまたがるコピペには不向きです。その場合は、File→Editor TypeでScriptに切り替え、Shiftを押しながら画面を右クリックすると「すべて選択」ができるので、全体をコピペできます。
(追記 2021/9/10)
スペルチェックの方法
-
Code にはスペルチェックがない(ので公開Codeにもスペルミスが多いです1)。スペルチェックができるエディターに(上記のコピペ法を使って)内容を移し、スペルチェック後に戻します。
この後、File→Editor TypeでScriptからCodeへ戻すと、セル内が空欄で表示されてしまう。右上の>|Toggle Sidebar Visibilityでサイドバーを開いたり閉じたりすると、表示が回復します。←この不具合は修正されたようです。 -
Grammarlyをインストールすると、Discussionなどにコメントを書く際にもスペルチェックできるので便利。←Codeのコメント欄やDiscussionにはスペルチェック機能が搭載されました。これでスペルミスも減るはず。
(追記 2021/9/10)
公開Codeの 一部のセルを隠す
Code各セルをアクティブにすると、右上に5つの編集ボタンがポップアップする。このうち一番右にある**Show Menu(縦3点リーダー)**からHide Inputを選ぶと、(2021/5/11現在、セル内を右クリック→Hide Cell in Viewerというコマンドに変わったようです)Codeを公開した際に Codeというボタンのみを表示し 内容を隠すことができます。あまり重要でないセルを非表示にすることで、きちんと見せたいセルのみが表示された 冗長でないCodeに出来ます。Hide Output Cell in Viewerは出力を隠せます。
(Collapse Cellは、Private Codeでは非表示に出来るが、公開Code上は見えてしまうので、自分用と思われます。)
最後まで お読み頂きありがとうございました。コメント/LGTM等頂けると、更新意欲が増します。
-
公開Codeへのコメント等でスペルミスを指摘するものが マイナス評価を食らっているのを目にしているので、「Typoは指摘するな」という文化がある?) ↩