コンテンツにスキップ

分類モデルの学習

このチュートリアルでは、Irisデータセットを使用して完全な分類パイプラインを構築します。

  • データの読み込みとプレビュー
  • 分類器の設定と学習
  • モデル性能の評価
  • 結果の解釈
  • MLOps Desktopがインストール済み
  • Pythonパッケージ:pip install scikit-learn pandas

サンプルデータセットを作成します。ターミナルで以下を実行してください。

from sklearn.datasets import load_iris
from pathlib import Path
import pandas as pd
iris = load_iris(as_frame=True)
df = iris.frame
df.to_csv(Path.home() / "Desktop" / "iris.csv", index=False)
print(f"iris.csv を保存しました({len(df)}行)")

これでデスクトップにiris.csvが作成されます。150サンプル、5カラムのデータです。

  • sepal length (cm)sepal width (cm)petal length (cm)petal width (cm) — 特徴量
  • target — クラスラベル(0=setosa、1=versicolor、2=virginica)
  1. 新しいパイプラインを作成

    MLOps Desktopを開きます。空のキャンバスが表示されます。

  2. DataLoaderノードを追加

    + Add NodeDataLoaderを選択します。

    ノードをクリックし、Browseiris.csvを選択します。プレビューにデータカラムが表示されます。

  3. DataSplitノードを追加

    + Add NodeData Splitを選択します。

    DataLoaderの右ハンドルからDataSplitの左ハンドルへ接続します。

    設定:

    • Test Split: 0.2(20%をテストに使用)
    • Random State: 42
    • Stratify: 有効、カラムをtargetに設定
  4. Trainerノードを追加

    + Add NodeTrainerを選択し、DataSplitから接続します。

    設定
    Model TypeRandom Forest Classifier
    Target Columntarget
  5. Evaluatorノードを追加

    + Add NodeEvaluatorを選択し、Trainerから接続します。

  6. パイプラインを実行

    ツールバーのRunをクリックします。

    出力パネルに進行状況が表示されます。

    [DataLoader] Loaded iris.csv: 150 rows, 5 columns
    [DataSplit] Split: 120 train, 30 test (stratified)
    [Trainer] Training Random Forest on 120 samples...
    [Trainer] Training complete
    [Evaluator] Accuracy: 0.967 (29/30 correct)

実行後、Evaluatorに複数のメトリクスが表示されます。

正解した予測の割合を示す最も基本的なメトリクスです。

Accuracy = 正解数 / 全予測数
= 29 / 30
= 0.967(96.7%)

各クラスについて算出されます。

メトリクス計算式解釈
PrecisionTP / (TP + FP)陽性と予測したうち、正解だった割合
RecallTP / (TP + FN)実際の陽性を、どれだけ検出できたか
F1 Score2 × (P × R) / (P + R)PrecisionとRecallの調和平均

予測と実際のラベルを比較する3×3の行列です。

予測
0 1 2
実際 0 [ 10 0 0 ] ← Setosa(全問正解)
1 [ 0 9 1 ] ← Versicolor(1つがVirginicaに誤分類)
2 [ 0 0 10 ] ← Virginica(全問正解)

対角線が正解、非対角線が誤分類です。

他の分類器でも実験できます。

モデル適した用途
Logistic Regression線形決定境界、解釈しやすい
Random Forest複雑な関係、外れ値に強い
Gradient Boosting高精度が必要な場合、学習は遅い
SVM高次元データ、二値分類

モデルを切り替えるには:

  1. Trainerノードをクリック
  2. Model Typeを変更
  3. Runを再実行

複数のモデルで精度を比較し、データに最適なものを選択してください。

Saveをクリックし、名前を入力します(例:「iris-classifier」)。

Loadドロップダウンからいつでも再読み込みできます。


トラブルシューティング:

  • 「target が見つかりません」 — CSVにtargetカラムがあるか確認、またはカラム名の大文字小文字を確認
  • 精度が低いn_estimatorsを増やすか、他のモデルを試す
  • 「サンプルが不足」 — test_sizeを小さくして訓練データを確保(50サンプル以上を推奨)