scikit-learn-best-practices
Pythonにおけるscikit-learnを用いた機械学習のベストプラクティスを提供するスキルで、モデルの開発・評価・デプロイまでをカバーします。scikit-learnを使った実装品質の向上や、適切な手法の選択に役立てることができます。
description の原文を見る
Best practices for scikit-learn machine learning, model development, evaluation, and deployment in Python
SKILL.md 本文
Scikit-learn ベストプラクティス
scikit-learn 開発に関する専門的なガイドライン。機械学習ワークフロー、モデル開発、評価、ベストプラクティスに焦点を当てています。
コードスタイルと構造
- 正確な Python サンプルを含む簡潔で技術的な回答を作成する
- 機械学習ワークフローにおける再現性を優先する
- データパイプラインには関数型プログラミングを使用する
- カスタムエスティメータにはオブジェクト指向プログラミングを使用する
- 明示的なループより vectorized operations を優先する
- PEP 8 スタイルガイドラインに従う
機械学習ワークフロー
データ準備
- 前処理を行う前に必ずデータを分割する: train/validation/test
train_test_split()をrandom_state付きで使用して再現性を確保する- 不均衡分類ではデータを層化分割する:
stratify=y - テストセットは最終評価まで完全に分離したままにする
特徴エンジニアリング
- 距離ベースのアルゴリズムには適切に特徴をスケーリングする
- 正規分布する特徴には
StandardScalerを使用する - 有界な特徴には
MinMaxScalerを使用する - 外れ値を含むデータには
RobustScalerを使用する - カテゴリ変数をエンコードする:
OneHotEncoder、OrdinalEncoder、LabelEncoder - 欠損値を処理する:
SimpleImputer、KNNImputer
パイプライン
- 前処理とモデリングをチェーンするには常に
Pipelineを使用する - 変換器が訓練データにのみフィッティングされるため、データリークを防止する
- コードをよりクリーンで再現可能にする
- デプロイメントとシリアライゼーションを容易にする
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
pipeline = Pipeline([
('scaler', StandardScaler()),
('classifier', RandomForestClassifier(random_state=42))
])
Column Transformers
- 特徴タイプごとに異なる前処理を行うには
ColumnTransformerを使用する - 単一のパイプラインで数値とカテゴリ前処理を組み合わせる
モデル選択とチューニング
クロスバリデーション
- 信頼性の高いパフォーマンス推定のためにクロスバリデーションを使用する
- クイック評価には
cross_val_score()を使用する - 複数の指標には
cross_validate()を使用する - 適切な CV 戦略を使用する:
- 回帰には
KFold - 分類には
StratifiedKFold - 時系列データには
TimeSeriesSplit - グループ化されたデータには
GroupKFold
- 回帰には
ハイパーパラメータチューニング
- 徹底的な探索には
GridSearchCVを使用する - 大きなパラメータ空間には
RandomizedSearchCVを使用する - 訓練/バリデーションデータでチューニングし、テストデータでは決してしない
- 並列処理には
n_jobs=-1を設定する
モデル評価
分類メトリクス
- 問題に適したメトリクスを使用する:
- バランスの取れたクラスには
accuracy_score - 不均衡には
precision_score、recall_score、f1_score - ランキング能力には
roc_auc_score
- バランスの取れたクラスには
- 包括的な概要には
classification_report()を使用する - エラー分析には
confusion_matrix()を調査する
回帰メトリクス
- 一般的な用途には
mean_squared_error(MSE) - 解釈性には
mean_absolute_error(MAE) - 説明分散には
r2_score
評価のベストプラクティス
- ポイント推定値だけでなく信頼区間を報告する
- モデルの動作を理解するには複数のメトリクスを使用する
- 意味のあるベースラインと比較する
- 最後に一度だけ、保留されたテストセットで評価する
不均衡データの処理
- 層化分割とクロスバリデーションを使用する
- クラスの重みを検討する:
class_weight='balanced' - 適切なメトリクスを使用する (F1、AUC-PR、精度ではない)
- ビジネスニーズに基づいて決定閾値を調整する
特徴選択
- 統計テスト付きの
SelectKBestを使用する RFE(Recursive Feature Elimination) を使用する- モデルベースの選択を使用する:
SelectFromModel - ツリーベースのモデルから特徴の重要度を調査する
モデルの永続化
- モデルの保存と読み込みには
joblibを使用する - モデルだけでなくパイプライン全体を保存する
- モデルアーティファクトをバージョン管理する
- モデルメタデータを文書化する
パフォーマンス最適化
- 利用可能な場所では並列処理に
n_jobs=-1を使用する - 反復的な訓練には
warm_start=Trueを検討する - 高次元のスパースデータにはスパース行列を使用する
- 大規模データには
partial_fit()を使用した段階的学習を検討する
主要な規約
- サブモジュールからインポートする:
from sklearn.ensemble import RandomForestClassifier - 再現性のために
random_stateを設定する - データリークを防ぐためにパイプラインを使用する
- モデルの選択肢とハイパーパラメータを文書化する
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。