alterlab-scikit-learn について
scikit-learnで古典的な機械学習に取り組む開発者向けのガイダンススキルです。教師あり・教師なし学習、前処理、評価を扱い、交差検証とデータリークの抑制に役立つPipeline中心の構成を説明します。
主な機能
- 01分類、回帰、クラスタリング、次元削減
- 02交差検証、評価指標、ハイパーパラメータ調整
- 03特徴量のスケーリング、エンコード、欠損値処理
- 04PipelineとColumnTransformerによる処理の構成
活用シーン
- 01分類モデルや回帰モデルの構築
- 02クラスタリング手法の比較とデータ探索
- 03混合データ型向け前処理ワークフローの作成
- 04交差検証によるモデルの調整と評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-scikit-learnインストール後、Claude Code で/alterlab-scikit-learnを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/best_practices_and_troubleshooting.mdmodel_evaluation.mdpipelines_and_composition.mdpreprocessing.mdquick_reference.mdsupervised_learning.mdunsupervised_learning.mdworked_examples.mdscripts/classification_pipeline.pyclustering_analysis.py詳細
Scikit-learn
概要
このスキルでは、古典的な機械学習の業界標準である Python ライブラリ scikit-learn を使用した、機械学習タスクに関する包括的なガイダンスを提供します。分類、回帰、クラスタリング、次元削減、前処理、モデル評価、本番環境に対応した ML パイプラインの構築にこのスキルを使用してください。
インストール
# Install scikit-learn using uv
uv pip install scikit-learn
# Optional: Install visualization dependencies
uv pip install matplotlib seaborn
# Commonly used with
uv pip install pandas numpy
このスキルを使用する場面
次のような場合に scikit-learn スキルを使用してください。
- 分類モデルまたは回帰モデルを構築する
- クラスタリングまたは次元削減を実行する
- 機械学習のためにデータを前処理および変換する
- 交差検証でモデルのパフォーマンスを評価する
- グリッドサーチまたはランダムサーチでハイパーパラメーターを調整する
- 本番環境のワークフロー向けに ML パイプラインを作成する
- タスクに応じて複数のアルゴリズムを比較する
- 構造化データ(表形式)とテキストデータの両方を扱う
- 解釈可能な古典的機械学習の手法が必要である
対象外
| シナリオ | 代わりに使用 |
|---|---|
| 事後分布、信用区間、または MCMC 診断を含むベイズモデル | alterlab-pymc |
| 打ち切りのある生存時間アウトカム(Cox モデル、生存フォレスト、C-index) | alterlab-scikit-survival |
n_neighbors / min_dist の調整を伴う UMAP 埋め込み | alterlab-umap |
| SHAP 値やプロットを使って、学習済みモデルの予測を説明する | alterlab-shap |
| 推論のための係数表、p 値、残差診断 | alterlab-statsmodels |
クイックスタート
最小限の分類フローは、層化 train_test_split → StandardScaler(学習データのみで fit)→ 推定器の fit → classification_report です。数値データとカテゴリデータが混在する場合は、前処理を Pipeline 内の ColumnTransformer でラップし、データリークなしで交差検証できるようにします。
完全なコピー&ペースト可能な分類および混合データのパイプライン例については、references/worked_examples.md を参照してください。
主な機能
1. 教師あり学習
分類および回帰タスクに対応する、包括的なアルゴリズムを利用できます。
主なアルゴリズム:
- 線形モデル:ロジスティック回帰、線形回帰、Ridge、Lasso、ElasticNet
- ツリーベース:決定木、ランダムフォレスト、勾配ブースティング
- サポートベクターマシン:さまざまなカーネルを使用する SVC、SVR
- アンサンブル手法:AdaBoost、Voting、Stacking
- ニューラルネットワーク:MLPClassifier、MLPRegressor
- その他:ナイーブベイズ、K 近傍法
使用場面:
- 分類:離散カテゴリを予測する(スパム検出、画像分類、不正検出)
- 回帰:連続値を予測する(価格予測、需要予測)
参照先: アルゴリズム、パラメーター、使用例の詳しい説明については、references/supervised_learning.md を参照してください。
2. 教師なし学習
クラスタリングと次元削減を通じて、ラベルのないデータからパターンを発見します。
クラスタリングアルゴリズム:
- 分割ベース:K-Means、MiniBatchKMeans
- 密度ベース:DBSCAN、HDBSCAN、OPTICS
- 階層型:AgglomerativeClustering
- 確率的:ガウス混合モデル
- その他:MeanShift、SpectralClustering、BIRCH
次元削減:
- 線形:PCA、TruncatedSVD、NMF
- 多様体学習:t-SNE、UMAP、Isomap、LLE
- 特徴量抽出:FastICA、LatentDirichletAllocation
使用場面:
- 顧客セグメンテーション、異常検出、データ可視化
- 特徴量の次元削減、探索的データ解析
- トピックモデリング、画像圧縮
参照先: 詳しい説明については、references/unsupervised_learning.md を参照してください。
3. モデルの評価と選択
堅牢なモデル評価、交差検証、ハイパーパラメータ調整のためのツールです。
交差検証の戦略:
- KFold、StratifiedKFold(分類)
- TimeSeriesSplit(時系列データ)
- GroupKFold(グループ化されたサンプル)
ハイパーパラメータの調整:
- GridSearchCV(網羅的な探索)
- RandomizedSearchCV(ランダムサンプリング)
- HalvingGridSearchCV(逐次半減法)
評価指標:
- 分類:正解率、適合率、再現率、F1 スコア、ROC AUC、混同行列
- 回帰:MSE、RMSE、MAE、R²、MAPE
- クラスタリング:シルエットスコア、Calinski-Harabasz、Davies-Bouldin
使用する場面:
- モデルの性能を客観的に比較する場合
- 最適なハイパーパラメータを見つける場合
- 交差検証によって過学習を防ぐ場合
- 学習曲線でモデルの挙動を理解する場合
参照: 指標と調整戦略の詳細については、references/model_evaluation.md を参照してください。
4. データの前処理
生データを機械学習に適した形式に変換します。
スケーリングと正規化:
- StandardScaler(平均 0、分散 1)
- MinMaxScaler(範囲を指定)
- RobustScaler(外れ値の影響を受けにくい)
- Normalizer(サンプルごとの正規化)
カテゴリ変数のエンコード:
- OneHotEncoder(名義カテゴリ)
- OrdinalEncoder(順序付きカテゴリ)
- LabelEncoder(特徴量ではなく、ターゲットラベル
yをエンコード) - TargetEncoder(交差フィットしたターゲット平均を使って、高カーディナリティのカテゴリ特徴量をエンコード)
欠損値の処理:
- SimpleImputer(平均値、中央値、最頻値)
- KNNImputer(k 近傍法)
- IterativeImputer(多変量代入)
特徴量エンジニアリング:
- PolynomialFeatures(交互作用項)
- KBinsDiscretizer(ビニング)
- 特徴量選択(RFE、SelectKBest、SelectFromModel)
使用する場面:
- スケーリング済みの特徴量が必要なアルゴリズム(SVM、KNN、ニューラルネットワーク)の学習前
- カテゴリ変数を数値形式に変換する場合
- 欠損データを体系的に処理する場合
- 線形モデル向けに非線形特徴量を作成する場合
参照: 前処理手法の詳細については、references/preprocessing.md を参照してください。
5. パイプラインと構成
再現可能で本番環境に対応した ML ワークフローを構築します。
主なコンポーネント:
- Pipeline:変換器と推定器を順に連結します
- ColumnTransformer:列ごとに異なる前処理を適用します
- FeatureUnion:複数の変換器を並列に結合します
- TransformedTargetRegressor:ターゲット変数を変換します
メリット:
- 交差検証でのデータ漏洩を防ぎます
- コードを簡潔にし、保守性を高めます
- ハイパーパラメータをまとめて調整できます
- 学習と予測の一貫性を確保します
使用する場面:
- 本番環境のワークフローでは、常に Pipeline を使用します
- 数値特徴量とカテゴリ特徴量を混在させる場合(ColumnTransformer を使用)
- 前処理ステップを含む交差検証を行う場合
- ハイパーパラメータ調整に前処理パラメータを含める場合
参照: パイプラインの包括的なパターンについては、references/pipelines_and_composition.md を参照してください。
サンプルスクリプト
このスキルには、実行可能なエンドツーエンドのスクリプトが 2 つ含まれています。
python scripts/classification_pipeline.py # mixed-data preprocessing, model comparison, GridSearchCV, evaluation, feature importance
python scripts/clustering_analysis.py # optimal-k search, K-Means/DBSCAN/Agglomerative/GMM comparison, PCA visualization
各スクリプトの内容と、単独でコピーして貼り付けて使えるバージョンについては、references/worked_examples.md を参照してください。
リファレンスドキュメント
このスキルには、特定のトピックを詳しく解説する包括的なリファレンスファイルが含まれています。
クイックリファレンス
ファイル: references/quick_reference.md
- よく使うインポートのパターンとインストール手順
- 一般的なタスク向けのクイックワークフローテンプレート
- アルゴリズム選択のチートシート
- よくあるパターンと注意点
- パフォーマンス最適化のヒント
教師あり学習
ファイル: references/supervised_learning.md
- 線形モデル(回帰と分類)
- サポートベクターマシン
- 決定木とアンサンブル手法
- k 近傍法、ナイーブベイズ、ニューラルネットワーク
- アルゴリズム選択ガイド
教師なし学習
ファイル: references/unsupervised_learning.md
- パラメーターと使用例を含むすべてのクラスタリングアルゴリズム
- 次元削減の手法
- 外れ値検出と新規性検出
- ガウス混合モデル
- 手法の選択ガイド
モデル評価
ファイル: references/model_evaluation.md
- 交差検証の戦略
- ハイパーパラメーター調整の手法
- 分類、回帰、クラスタリングの評価指標
- 学習曲線と検証曲線
- モデル選択のベストプラクティス
前処理
ファイル: references/preprocessing.md
- 特徴量のスケーリングと正規化
- カテゴリ変数のエンコーディング
- 欠損値の補完
- 特徴量エンジニアリングの手法
- カスタムトランスフォーマー
パイプラインと構成
ファイル: references/pipelines_and_composition.md
- パイプラインの構築と使用方法
- 混合データ型に対応する
ColumnTransformer - 並列変換のための
FeatureUnion - エンドツーエンドの完全な例
- ベストプラクティス
実践例
ファイル: references/worked_examples.md
- 分類と混合データのパイプラインのクイックスタート用スニペット
- 分類モデルのワークフローを段階的に解説
- クラスタリング分析のワークフローを段階的に解説
- 同梱されている各サンプルスクリプトの内容
ベストプラクティスとトラブルシューティング
ファイル: references/best_practices_and_troubleshooting.md
- パイプラインとデータリークの防止、訓練データだけを使った
fit、層化分割 random_stateによる再現性の確保、評価指標の選択、特徴量をスケーリングするタイミングConvergenceWarning、過学習、大規模データセットでのメモリエラーの解決策
一般的なワークフロー
- 分類モデル: データの読み込み → 層化
train_test_split→Pipeline内でのColumnTransformerによる前処理 →GridSearchCVによる調整 → 保留したテストセットでのclassification_report。 - クラスタリング分析:
StandardScaler→ シルエットスコアをkごとに確認してoptimal_kを選択 →KMeansを適合 → 可視化用にPCA(n_components=2)で射影。
各ワークフローの番号付きコピー&ペースト用バージョンについては、references/worked_examples.mdを参照してください。
バージョンに関する注意(scikit-learn 1.8–1.9)
LogisticRegression(penalty=...)は非推奨です(1.10で削除予定)。代わりにl1_ratio(0 = L2、1 = L1、中間値 = elastic net)と、ペナルティなしの場合はC=np.infを使用してください。SVC(probability=True)は非推奨です(1.11で削除予定)。確率が必要な場合は、モデルをCalibratedClassifierCV(SVC(), ensemble=False)でラップしてください。MDS(metric=True/False)はmetric_mds=に変更されました。HDBSCANは、copyを明示的に設定しないと警告を出します。mean_squared_error(..., squared=False)は削除されました。代わりにroot_mean_squared_errorを使用してください。
ベストプラクティス(要点)
- 常に
Pipeline内で前処理を行ってください(データリークを防止します)。訓練データだけでfitし、テストデータにはtransformを適用します。 - 分類の分割では
stratify=yを使用し、再現性を確保するためにすべての箇所でrandom_stateを設定してください。 - SVM/KNN/NN/PCA/正則化線形モデル/K-Meansでは特徴量をスケーリングしてください。ツリーモデルとナイーブベイズでは不要です。
- 問題に合った評価指標を選んでください。バランスの取れたデータではF1/正解率、不均衡なデータでは適合率/再現率/ROC AUC/バランス正解率を使用します。
ConvergenceWarning、過学習、大規模データセットでのメモリエラーのコード例と解決策については、references/best_practices_and_troubleshooting.mdを参照してください。