メインコンテンツへスキップ

関数 roc_curve

roc_curve(
    y_true: 'Sequence[numbers.Number]',
    y_probas: 'Sequence[Sequence[float]] | None' = None,
    labels: 'list[str] | None' = None,
    classes_to_plot: 'list[numbers.Number] | None' = None,
    title: 'str' = 'ROC Curve',
    split_table: 'bool' = False
) → CustomChart
Receiver Operating Characteristic (ROC) 曲線チャートを作成します。 引数:
  • y_true: 対象変数の正解クラスラベルです。形状は (num_samples,) である必要があります。
  • y_probas: 各クラスの予測確率、または判定スコアです。形状は (num_samples, num_classes) である必要があります。
  • labels: y_true のクラスインデックスに対応する、人間が読めるラベルです。たとえば、labels=['dog', 'cat'] の場合、プロットではクラス 0 は ‘dog’、クラス 1 は ‘cat’ と表示されます。None の場合は、y_true の生のクラスインデックスが使用されます。デフォルトは None です。
  • classes_to_plot: ROC 曲線に含める一意なクラスラベルのサブセットです。None の場合は、y_true 内のすべてのクラスがプロットされます。デフォルトは None です。
  • title: ROC 曲線プロットのタイトルです。デフォルトは “ROC Curve” です。
  • split_table: 表を W&B UI の別セクションに分けるかどうかを指定します。True の場合、表は “Custom Chart Tables” という名前のセクションに表示されます。デフォルトは False です。
戻り値:
  • CustomChart: W&B にログできるカスタムチャートオブジェクトです。チャートをログするには、これを wandb.log() に渡します。
例外:
  • wandb.Error: numpy、pandas、または scikit-learn が見つからない場合。
例:
import numpy as np
import wandb

# 3つの疾患を対象とした医療診断分類問題をシミュレートする
n_samples = 200
n_classes = 3

# 正解ラベル: 各サンプルに「Diabetes」「Hypertension」「Heart Disease」のいずれかを割り当てる
disease_labels = ["Diabetes", "Hypertension", "Heart Disease"]
# 0: Diabetes、1: Hypertension、2: Heart Disease
y_true = np.random.choice([0, 1, 2], size=n_samples)

# 予測確率: 各サンプルの合計が1になるよう予測をシミュレートする
y_probas = np.random.dirichlet(np.ones(n_classes), size=n_samples)

# プロットするクラスを指定する(3つの疾患すべてをプロット)
classes_to_plot = [0, 1, 2]

# W&B の run を初期化し、疾患分類の ROC 曲線プロットをログする
with wandb.init(project="medical_diagnosis") as run:
    roc_plot = wandb.plot.roc_curve(
         y_true=y_true,
         y_probas=y_probas,
         labels=disease_labels,
         classes_to_plot=classes_to_plot,
         title="ROC Curve for Disease Classification",
    )
    run.log({"roc-curve": roc_plot})