scikit-learn について
scikit-learn は、Python ライブラリ scikit-learn による従来型機械学習を案内するスキルです。構造化データやテキストデータを対象に、教師あり・教師なし学習、前処理、評価、モデル選択、パイプライン構築を扱います。
主な機能
- 01分類と回帰
- 02クラスタリングと次元削減
- 03データ前処理と特徴選択
- 04交差検証とモデル評価
- 05パイプラインとハイパーパラメーター探索
活用シーン
- 01分類・回帰モデルの構築
- 02混合型データの学習前処理
- 03交差検証によるアルゴリズム比較
- 04エンドツーエンドの ML パイプライン作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill scikit-learnインストール後、Claude Code で/scikit-learnを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/common_workflows.mdcore_capabilities.mdsupervised_learning.mdpipelines_and_composition.mdquick_reference.mdmodel_evaluation.mdpreprocessing.mdunsupervised_learning.mdscripts/classification_pipeline.pyclustering_analysis.py詳細
Scikit-learn
概要
このスキルでは、古典的な機械学習の業界標準Pythonライブラリであるscikit-learnを使った機械学習タスクについて、包括的なガイダンスを提供します。分類、回帰、クラスタリング、次元削減、前処理、モデル評価、および本番環境に対応したMLパイプラインの構築に使用してください。
インストール
scikit-learn 1.8.0(安定版、2025年12月)でテスト済みです。Python 3.11~3.14が必要です(1.8以降では、フリースレッド版CPython 3.14用のwheelを利用できます)。
PyPIパッケージの**scikit-learn**をインストールしてください(非推奨のPyPIパッケージsklearnではありません)。コードではsklearnとしてインポートします。
# Install scikit-learn using uv
uv pip install "scikit-learn>=1.7"
# Optional: plotting utilities and bundled script dependencies
uv pip install "scikit-learn[plots]" matplotlib seaborn
# Commonly used with
uv pip install pandas numpy
バージョンを確認します。
import sklearn
print(sklearn.__version__)
このスキルを使用する場面
以下の場合にscikit-learnスキルを使用してください。
- 分類モデルまたは回帰モデルを構築する
- クラスタリングまたは次元削減を行う
- 機械学習用のデータを前処理・変換する
- 交差検証でモデルの性能を評価する
- グリッドサーチまたはランダムサーチでハイパーパラメーターを調整する
- 本番環境のワークフロー向けにMLパイプラインを作成する
- タスクに適したさまざまなアルゴリズムを比較する
- 構造化データ(表形式)とテキストデータの両方を扱う
- 解釈しやすい古典的な機械学習手法が必要である
クイックスタート
分類の例
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
# Split data
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=42
)
# Preprocess
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Train model
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train_scaled, y_train)
# Evaluate
y_pred = model.predict(X_test_scaled)
print(classification_report(y_test, y_pred))
混合データを扱う完全なパイプライン
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.impute import SimpleImputer
from sklearn.ensemble import GradientBoostingClassifier
# Define feature types
numeric_features = ['age', 'income']
categorical_features = ['gender', 'occupation']
# Create preprocessing pipelines
numeric_transformer = Pipeline([
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
])
categorical_transformer = Pipeline([
('imputer', SimpleImputer(strategy='most_frequent')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
])
# Combine transformers
preprocessor = ColumnTransformer([
('num', numeric_transformer, numeric_features),
('cat', categorical_transformer, categorical_features)
])
# Full pipeline
model = Pipeline([
('preprocessor', preprocessor),
('classifier', GradientBoostingClassifier(random_state=42))
])
# Fit and predict
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
主な機能
5つの機能領域については references/core_capabilities.mdに記載されています。トピックごとの詳細は、 references/supervised_learning.md、 references/unsupervised_learning.md、 references/model_evaluation.md、 references/preprocessing.md、および references/pipelines_and_composition.mdを参照してください。
- 教師あり学習 — 分類および回帰の推定器ファミリー。
- 教師なし学習 — クラスタリング、分解、マニフォールド学習。
- モデルの評価と選択 — 指標、交差検証、ハイパーパラメーター探索。
- データの前処理 — スケーリング、エンコーディング、欠損値補完、特徴量選択。
- パイプラインと合成 —
PipelineとColumnTransformer。
前処理は必ずPipeline内で適合させ、交差検証の各フォールドで再適合するようにしてください。データ分割の前にスケーリングや欠損値補完を行うと、テストデータの情報が学習に漏洩します。
2つの実践的なワークフローについては、 references/common_workflows.mdを参照してください。
サンプルスクリプト
分類パイプライン
前処理、モデル比較、ハイパーパラメーター調整、評価を含む完全な分類ワークフローを実行します。
uv run python scripts/classification_pipeline.py
このスクリプトでは、以下を紹介します。
- 混合データ型(数値データとカテゴリデータ)の処理
- 交差検証によるモデル比較
- GridSearchCVによるハイパーパラメーター調整
- 複数の指標を用いた包括的な評価
- 特徴量の重要度分析
クラスタリング分析
アルゴリズムの比較と可視化を用いて、クラスタリング分析を行います。
uv run python scripts/clustering_analysis.py
このスクリプトでは、以下を紹介します。
- 最適なクラスタ数の特定(エルボー法、シルエット分析)
- 複数のクラスタリングアルゴリズムの比較(K-Means、DBSCAN、Agglomerative、Gaussian Mixture)
- 正解ラベルなしでのクラスタリング品質の評価
- PCA射影による結果の可視化
リファレンスドキュメント
このスキルには、特定のトピックを詳しく調べるための包括的なリファレンスファイルが含まれています。
クイックリファレンス
ファイル: 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
- エンドツーエンドの完全な例
- ベストプラクティス
ベストプラクティス
常にパイプラインを使用する
パイプラインを使用すると、データリークを防ぎ、一貫性を確保できます。
# Good: Preprocessing in pipeline
pipeline = Pipeline([
('scaler', StandardScaler()),
('model', LogisticRegression())
])
# Bad: Preprocessing outside (can leak information)
X_scaled = StandardScaler().fit_transform(X)
学習データのみで適合させる
テストデータで適合させないでください。
# Good
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test) # Only transform
# Bad
scaler = StandardScaler()
X_all_scaled = scaler.fit_transform(np.vstack([X_train, X_test]))
分類には層化分割を使用する
クラスの分布を維持します。
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=42
)
再現性を確保するためにランダム状態を設定する
model = RandomForestClassifier(n_estimators=100, random_state=42)
適切な評価指標を選択する
- バランスの取れたデータ:正解率、F1 スコア
- 不均衡なデータ:適合率、再現率、ROC AUC、バランス正解率
- コスト重視の場合:カスタムスコアラーを定義する
必要に応じて特徴量をスケーリングする
特徴量のスケーリングが必要なアルゴリズム:
- SVM、KNN、ニューラルネットワーク
- PCA、正則化を伴う線形回帰/ロジスティック回帰
- K-Means クラスタリング
スケーリングが不要なアルゴリズム:
- 木ベースのモデル(決定木、ランダムフォレスト、勾配ブースティング)
- ナイーブベイズ
よくある問題のトラブルシューティング
ConvergenceWarning
問題: モデルが収束しませんでした
解決策: max_iter を増やすか、特徴量をスケーリングしてください
model = LogisticRegression(max_iter=1000)
テストセットでの性能が低い
問題: 過学習 解決策: 正則化、交差検証、またはより単純なモデルを使用してください
# Add regularization
model = Ridge(alpha=1.0)
# Use cross-validation
scores = cross_val_score(model, X, y, cv=5)
大規模なデータセットでのメモリエラー
解決策: 大規模データ向けに設計されたアルゴリズムを使用してください
# Use SGD for large datasets
from sklearn.linear_model import SGDClassifier
model = SGDClassifier()
# Or MiniBatchKMeans for clustering
from sklearn.cluster import MiniBatchKMeans
model = MiniBatchKMeans(n_clusters=8, batch_size=100)
追加リソース
- 公式ドキュメント:https://scikit-learn.org/stable/
- ユーザーガイド:https://scikit-learn.org/stable/user_guide.html
- API リファレンス:https://scikit-learn.org/stable/api/index.html
- サンプルギャラリー:https://scikit-learn.org/stable/auto_examples/index.html
エージェントの作業手順
- 環境を確認します。 Python 環境とライブラリのバージョン(
python -c "import pkg; print(pkg.__version__)")を確認し、データの形状、型、欠損値を調べます。 - 入力を特定します。 データまたはユーザーに確認して、形式、識別子、パラメーターを確定します。結果が変わる値については推測せず、質問してください。
- まず小規模で実行します。 サンプルまたは単一のフォールドで実行し、実行時間とメモリ使用量を確認します。
- 上記の手順と参考資料を使用して、タスク全体を実行します。
- 結果を検証します。 ホールドアウトデータ、固定した乱数シード、適切な指標を使用し、データリークがないか確認します。不確実性(信頼区間、シード間の標準偏差)を報告します。
- 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確定の点を明記します。
| 次のような場合 | 対応 |
|---|---|
| メモリ不足、または実行が非常に遅い | サブサンプリング、チャンク化または遅延計算を使用するか、モデルサイズを小さくし、変更内容をユーザーに伝えます。 |
| インストール済みバージョンに、この手順に記載された関数、フラグ、エンドポイントがない | インストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認して適応し、ユーザーに伝えます。API を決して作り上げないでください。 |
| 必須の入力、識別子、パラメーターが曖昧 | ユーザーに質問するか、実行前に仮定を明示します。 |
インテグリティに関するルール
- 結果、パラメーター、識別子、引用、統計情報を捏造しないでください。実行または検証できない場合は、その旨を明確に伝えます。
- このセッションで計算していない指標を報告しないでください。すべての数値について、その算出に使ったコードの流れを示します。
- ここに記載されたバージョン固有の情報は古くなっている可能性があるものとして扱い、インストール済みバージョンの公式ドキュメントで確認します。
- 金銭が発生する、共有 GPU やクラウドのクォータを消費する、個人データや患者データに触れる、または取り消せない操作を行う場合は、事前に確認してください。
関連スキル
scanpy:標準的な単一細胞 RNA-seq 解析パイプライン。aeon:分類、回帰、クラスタリング、予測、異常検知などの時系列機械学習タスクで使用するスキルです…weights-and-biases:Weights & Biases(W&B、wandb)を使用して、機械学習実験の指標、ハイパーパラメーター、チェックポイント、スイープ、アーティファクトなどを記録・追跡します…