使う道具とライブラリ
このページの内容
- 1. 言語:Python(パイソン)
- Pythonの学習リソース(日本語)
- 2. pandas(パンダス)── 表データの操作
- 最頻出のチートシート
- pandasの日本語リソース
- 3. NumPy(ナムパイ)── 数値計算
- 4. matplotlib / seaborn ── 可視化
- 5. scikit-learn(サイキット・ラーン)── 機械学習の総合商社
- sklearnの統一作法(これが便利)
- 6. LightGBM ── 表データの主力兵器
- なぜLightGBMが強いのか
- 主なパラメータの意味
- 兄弟分
- 7. Optuna ── パラメータ自動調整
- 8. ディープラーニング系(画像・テキストをやる段階で)
- 9. 環境について
- まとめ
Kaggleで使う道具は、実はそれほど多くありません。8割はこのページのもので足ります。
1. 言語:Python(パイソン)
Kaggleは事実上 Python一択 です(Rも使えますが少数派)。
必要なPythonの知識は、意外と少なめです。
| 項目 | 必要度 | 例 |
|---|---|---|
| 変数・数値・文字列 | ★★★ | x = 10 |
| リスト・辞書 | ★★★ | [1,2,3] / {"a":1} |
| for文・if文 | ★★★ | for i in range(5): |
| 関数定義 | ★★☆ | def f(x): return x*2 |
| ライブラリの読み込み | ★★★ | import pandas as pd |
| クラス定義 | ★☆☆ | 最初は不要 |
| 例外処理・非同期処理 | ☆☆☆ | ほぼ不要 |
ポイント:Webアプリを作るようなPythonの知識は要りません。 データを読んで、加工して、関数に渡す、という使い方が中心です。
Pythonの学習リソース(日本語)
- Progate / PyQ:手を動かす入門(有料部分あり)
- 東京大学「Pythonプログラミング入門」(無料・日本語・質が高い)
https://utokyo-ipp.github.io/ - Kaggle Learn の Python コース(英語だが短い)
https://www.kaggle.com/learn/python
2. pandas(パンダス)── 表データの操作
最重要ライブラリ。 Kaggleの作業時間の半分はpandasです。Excelをプログラムで操作するイメージ。
import pandas as pd
最頻出のチートシート
# 読み込み・書き出し
df = pd.read_csv("train.csv")
df.to_csv("submission.csv", index=False)
# 全体を見る
df.shape # (行数, 列数)
df.head(10) # 先頭10行
df.info() # 型と欠損
df.describe() # 統計量
df.columns # 列名一覧
# 列・行を取り出す
df["Age"] # 1列
df[["Age", "Fare"]] # 複数列
df.loc[0:5, "Age"] # 名前で指定
df.iloc[0:5, 2] # 番号で指定
# 条件で絞る
df[df["Age"] > 30]
df[(df["Sex"] == "female") & (df["Pclass"] == 1)]
# 集計
df["Sex"].value_counts()
df.groupby("Sex")["Survived"].mean()
df.groupby(["Sex","Pclass"])["Survived"].agg(["mean","count"])
# 欠損
df.isnull().sum()
df["Age"].fillna(df["Age"].median())
df.dropna(subset=["Embarked"])
# 列を作る・変換する
df["FamilySize"] = df["SibSp"] + df["Parch"] + 1
df["Sex"] = df["Sex"].map({"male":0, "female":1})
df["AgeBand"] = pd.cut(df["Age"], bins=[0,12,20,40,60,100])
df["Title"] = df["Name"].str.extract(r" ([A-Za-z]+)\.")
# 結合
pd.concat([train, test], axis=0) # 縦に積む
pd.merge(df1, df2, on="id", how="left") # 横に結合
pandasの日本語リソース
- note.nkmk.me(pandasの逆引きとして非常に優秀)
https://note.nkmk.me/pandas/ - Kaggle Learn Pandas コース
https://www.kaggle.com/learn/pandas
3. NumPy(ナムパイ)── 数値計算
pandasの土台。配列の計算を高速に行います。直接書く量はpandasより少なめ。
import numpy as np
np.mean(x), np.std(x)
np.log1p(x) # log(1+x)。価格などの歪みをならす定番
np.where(cond, a, b) # 条件分岐(Excel の IF 関数)
np.sqrt(x)
4. matplotlib / seaborn ── 可視化
import matplotlib.pyplot as plt
import seaborn as sns
sns.histplot(data=train, x="Age", hue="Survived", bins=30)
sns.boxplot(data=train, x="Pclass", y="Fare")
sns.heatmap(train.corr(numeric_only=True), annot=True, cmap="coolwarm")
plt.show()
グラフは「他人に見せるため」ではなく 「自分が気づくため」 に描きます。きれいさは不要です。
5. scikit-learn(サイキット・ラーン)── 機械学習の総合商社
前処理・モデル・検証・評価がひと通り揃っています。読みは「サイキットラーン」、略して sklearn。
from sklearn.model_selection import train_test_split, StratifiedKFold, cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, roc_auc_score, mean_squared_error
from sklearn.preprocessing import StandardScaler, LabelEncoder
sklearnの統一作法(これが便利)
どのモデルでも 同じ書き方 で使えます。
model = なんらかのモデル(...)
model.fit(X_train, y_train) # 学習
pred = model.predict(X_valid) # 予測(ラベル)
prob = model.predict_proba(X_valid)[:, 1] # 予測(確率)
モデルを差し替えるときは1行変えるだけ、というのがsklearnの思想です。
6. LightGBM ── 表データの主力兵器
Microsoft製のGBDT実装。Kaggleの表形式コンペで最も使われているモデルです。
import lightgbm as lgb
model = lgb.LGBMClassifier(
n_estimators=1000,
learning_rate=0.05,
num_leaves=31,
colsample_bytree=0.8,
subsample=0.8,
random_state=0,
)
model.fit(
X_train, y_train,
eval_set=[(X_valid, y_valid)],
eval_metric="auc",
callbacks=[lgb.early_stopping(100), lgb.log_evaluation(100)],
)
なぜLightGBMが強いのか
- 精度が高い(GBDTの中でも特に)
- 速い
- 欠損値をそのまま扱える
- スケーリング(標準化)が不要
- カテゴリ変数も扱える
- 特徴量重要度が見られる
主なパラメータの意味
| パラメータ | 意味 | 効果 |
|---|---|---|
n_estimators | 木の本数 | 多いほど学習が進む(過学習注意) |
learning_rate | 学習率 | 小さいほど慎重・高精度だが遅い |
num_leaves | 葉の数=木の複雑さ | 大きいほど表現力↑・過学習↑ |
max_depth | 木の深さ上限 | 過学習のブレーキ |
subsample | 行のサンプリング率 | 過学習のブレーキ |
colsample_bytree | 列のサンプリング率 | 過学習のブレーキ |
min_child_samples | 葉の最小サンプル数 | 過学習のブレーキ |
兄弟分
- XGBoost:GBDTの元祖格。安定して強い。
- CatBoost:カテゴリ変数の扱いが非常に上手い。
- 3つを混ぜて平均するのが、上位陣の定番です。
7. Optuna ── パラメータ自動調整
日本のPreferred Networks製。Kaggleでの標準ツールです。
import optuna
def objective(trial):
params = {
"learning_rate": trial.suggest_float("learning_rate", 0.01, 0.3, log=True),
"num_leaves": trial.suggest_int("num_leaves", 16, 256),
}
model = lgb.LGBMClassifier(**params)
score = cross_val_score(model, X, y, cv=5, scoring="roc_auc").mean()
return score
study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=50)
print(study.best_params)
公式(日本語ドキュメントあり): https://www.preferred.jp/ja/projects/optuna/
8. ディープラーニング系(画像・テキストをやる段階で)
| ライブラリ | 用途 |
|---|---|
| PyTorch | Kaggleの画像・NLPコンペの標準。圧倒的シェア |
| TensorFlow / Keras | もう一方の選択肢 |
| timm | 画像分類の学習済みモデル集 |
| transformers (Hugging Face) | 自然言語処理・LLMの標準 |
| albumentations | 画像のデータ拡張 |
表データで慣れるまでは不要です。 半年後くらいに戻ってきてください。
9. 環境について
| 環境 | 特徴 | おすすめ度 |
|---|---|---|
| Kaggle Notebook | 設定不要・無料GPU・データが最初から置かれている | ★★★ 最初はこれ一択 |
| Google Colab | 同じく無料。Googleドライブと連携 | ★★☆ |
| ローカル(自分のPC) | 自由だが環境構築が必要 | ★☆☆ 慣れてから |
ローカルでやる場合は、uv や Anaconda でPython環境を作り、VS Codeで .ipynb を開くのが現代的な構成です。ただし 急ぐ必要はまったくありません。
まとめ
- 言語は Python。必要なのは基本文法だけ。
- pandas が作業の中心。チートシートを手元に置く。
- 表データなら scikit-learn + LightGBM でほぼ戦える。
- 可視化は matplotlib / seaborn、調整は Optuna。
- 画像・テキストに進むときに PyTorch を学べばよい。