ステップ12:つまずき辞典
- まず試す3つ(これで半分は直ります)
- エラーメッセージ別の対処
- NameError: name 'xxx' is not defined
- FileNotFoundError: /kaggle/input/...
- ValueError: could not convert string to float: 'male'
- ValueError: Input contains NaN
- KeyError: 'xxx'
- SyntaxError: invalid syntax
- IndentationError
- MemoryError / セッションが落ちる
- 提出まわりのトラブル
- Submission Scoring Error
- Output に submission.csv が出てこない
- Submit ボタンが押せない / 見つからない
- 提出したのにスコアが出ない
- 動くけれど結果がおかしいとき
- CVスコアが 1.0(満点)になる
- 毎回スコアが変わる
- CVは高いのに提出スコアが低い
- 予測が全部0(または全部1)になる
- 画面・操作のトラブル
- それでも解決しないとき
困ったときだけ開いてください。 上から読む必要はありません。エラーメッセージの一部を、ブラウザの検索(Command + F)でこのページから探すのが早いです。
まず試す3つ(これで半分は直ります)
- 上から順に全部実行し直す … 上部メニューの Run All
- セッションを再起動する … 画面右下の電源マーク → Restart Session → その後 Run All
- ステップ13の完成コードを貼る … 完成コード全文 を新しいセルに貼って実行
💡 Notebookは「上のセルの結果を、下のセルが引き継ぐ」仕組みです。セルを飛ばしたり、順番を入れ替えて実行すると、人間には見えない形で状態がズレます。困ったら Run All。これが鉄則です。
エラーメッセージ別の対処
NameError: name 'xxx' is not defined
意味:xxx という名前のものが、まだ作られていない。
| xxx | 対処 |
|---|---|
pd | import pandas as pd を実行していない |
train / test | ステップ2のセルを実行していない |
X / y | ステップ7のセルを実行していない |
model | ステップ8のセルを実行していない |
→ Run All で上から通せば直ります。
FileNotFoundError: /kaggle/input/...
意味:そのファイルが見つからない。
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
これを実行して、実際のパスを確認してください。何も出ない場合は、Notebookにデータが紐づいていません。右側パネルの Input → + Add Input から titanic を追加するか、コンペページの Code → New Notebook から作り直してください。
ValueError: could not convert string to float: 'male'
意味:文字のまま機械学習に渡している。
→ ステップ7の prepare() を実行し、X = prepare(...) で作り直してください。確認コード:
X.dtypes # object という型が残っていたら、その列が文字のまま
ValueError: Input contains NaN
意味:空欄が残っている。
→ どこが空欄か確認:
print(X.isnull().sum())
print(X_test.isnull().sum())
test の Fare に空欄が1つあるのを忘れがちです。fillna() の行を確認してください。
KeyError: 'xxx'
意味:その名前の列が存在しない。
→ 列名のスペルを確認してください。大文字・小文字も区別されます。
print(train.columns.tolist())
よくある間違い:Survive(正しくは Survived)、Pclass を PClass、Embarked を Embark。
SyntaxError: invalid syntax
意味:コードの書き方が壊れている。
→ コピペのときに行が欠けた可能性が高いです。該当セルを全部消して、貼り直してください。日本語の全角スペースが混ざっていても起きます。
IndentationError
意味:行頭の字下げがおかしい。
→ def prepare(df): の中身は、すべて半角スペース4つ分の字下げが必要です。貼り直すのが早いです。
MemoryError / セッションが落ちる
→ 右下の電源マーク → Restart Session。Titanicのデータは小さいので、通常は起きません。
提出まわりのトラブル
Submission Scoring Error
提出ファイルの形が違います。この5つを順番に確認してください。
sub = pd.read_csv("submission.csv")
print("行数 :", len(sub)) # → 418 であること
print("列名 :", sub.columns.tolist()) # → ['PassengerId', 'Survived'] であること
print("空欄 :", sub.isnull().sum().sum()) # → 0 であること
print("Survivedの値:", sub["Survived"].unique()) # → 0 と 1 だけであること
print(sub.head())
| 症状 | 原因 |
|---|---|
| 行数が418でない | test ではなく train に対して予測している |
列が3つある(Unnamed: 0 がある) | index=False を付け忘れた |
| 列名が違う | PassengerId Survived の綴り・大文字小文字を確認 |
| Survivedが小数になっている | predict_proba を使っている。predict を使うか .round().astype(int) する |
Output に submission.csv が出てこない
→ Save Version → Save & Run All (Commit) で保存していますか?Quick Save ではファイルが作られないことがあります。
Submit ボタンが押せない / 見つからない
→ Notebookの実行(Save & Run All)が完了していない可能性があります。緑のチェックが付くまで待ってください。→ コンペに Join していない可能性もあります。コンペページを確認してください。
提出したのにスコアが出ない
→ 採点に数十秒かかることがあります。ページを再読み込みしてください。
動くけれど結果がおかしいとき
CVスコアが 1.0(満点)になる
正解が材料に混ざっています(リーク)。 features の中に Survived が入っていないか確認してください。
毎回スコアが変わる
random_state=0 を書き忘れています。モデルを作るときに必ず指定してください。
CVは高いのに提出スコアが低い
これは 正常 です。CV 0.82 → 提出 0.77 くらいの差は普通に出ます。ただし差が0.1以上ある場合は、リークか、trainとtestの処理が食い違っている可能性があります。prepare() を train と test の両方に、まったく同じように適用しているか確認してください。
予測が全部0(または全部1)になる
print(pd.Series(pred).value_counts())
極端に偏っている場合、特徴量が壊れている可能性があります。X_test.head() を見て、値がおかしくないか確認してください。
画面・操作のトラブル
| 症状 | 対処 |
|---|---|
セルが [*] のまま進まない | 実行中です。初回は30秒ほどかかります |
| ずっと止まっている | 右下の電源マーク → Restart Session |
| GPUが選べない | 電話番号認証(Settings → Phone Verification)が必要。この章では不要です |
| コードが消えた | 右上の Save Version の履歴から、過去バージョンを復元できます |
| 日本語が文字化けする | グラフの日本語は化けます。ラベルは英語にすると回避できます |
それでも解決しないとき
- エラーメッセージの最後の1行をコピーして検索する。 日本語の解説記事が高確率で出ます。
- AIに貼り付けて聞く。 「このエラーの意味と直し方を日本語で教えて」と添えるだけで十分です。
- ステップ13の完成コードを丸ごと貼って、動く状態に戻す。 一度リセットするのが最速のこともあります。
エラーは失敗ではありません。Kagglerは1日に何十回もエラーを出します。エラーが出る=手が動いている証拠です。