「ノートブックで動いてるけど本番に持ち上げられない」は前処理あるある。再現性のあるパイプラインとして整える方法を、ツール別に整理します。
ツール別の前処理パイプライン
| ツール | 向く場面 | 強み |
|---|---|---|
| dbt | 内で 前処理 | テスト・ドキュメント自動生成、依存解決 |
| sklearn Pipeline | 前処理のコード化 | Train / Predict で同じ処理を保証 |
| Polars LazyFrame | 大規模データのメモリ効率 | 10〜100 倍速、Rust ベース |
| / Dagster | オーケストレーション | スケジューリング・依存・監視 |
再現性の 3 要件
- 1コード化:ノートブックで完結させない、`.py` / `.sql` に
- 2バージョン管理: で履歴管理、データ契約(Data Contract)で上流変更を検知
- 3テスト:行数・スキーマ・分布の前後比較、 で自動化
sklearn Pipeline + ColumnTransformer
ML 前処理を 1 オブジェクトに
Python
from sklearn.pipeline import Pipelinefrom sklearn.compose import ColumnTransformerfrom sklearn.preprocessing import StandardScaler, OneHotEncoderfrom sklearn.impute import SimpleImputer
preprocessor = ColumnTransformer([ ("num", Pipeline([ ("impute", SimpleImputer(strategy="median")), ("scale", StandardScaler()) ]), ["age", "income"]), ("cat", Pipeline([ ("impute", SimpleImputer(strategy="most_frequent")), ("ohe", OneHotEncoder(handle_unknown="ignore")) ]), ["country", "category"]),])
pipeline = Pipeline([ ("preprocess", preprocessor), ("model", LogisticRegression())])
pipeline.fit(X_train, y_train)# Train で学習した補完値・スケーラーが Predict でも自動適用されるData Contract
上流データのスキーマ変更を検知する仕組み。dbt source freshness + 行数 / 型のテストで「気付かないうちに前処理が壊れた」を防ぐ。 EP.10 のログ設計とも繋がる。
ふくふくの進め方
「ノートブックを本番に乗せたい」のご相談には、再現性チェック → パイプライン化 → CI/CD 構築を 1 ヶ月で。シリーズ通読で身につく前処理スキルを、お客様のプロジェクトに移植します。
ここまでのまとめ
EP.01〜15 で前処理の主要工程を一巡しました。「分析の 8 割は前処理」のスキルセットが、皆さんの分析品質を底上げします。
次の話
EP.16 では『時系列の周期性を見つける』。経営層も気づいていない「うちの売上、実は波があるよね」をデータから炙り出し、仕入計画・人員配置・キャンペーン投入時期に直結させる手法を扱います。続編は読者リアクションに応じて随時追加していきます。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。