Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Matplotlibで補間を使用して適合率・再現率曲線(PR曲線)を描画する方法

PythonのMatplotlibを使えば、補間処理を加えた適合率・再現率曲線(Precision-Recall Curve)を簡単に描画できます。PR曲線は機械学習モデルの評価に広く使われるグラフで、補間を行うことで適合率が単調に減少する滑らかな階段状の曲線として表現できます。以下に具体的な手順を紹介します。

手順

  • 図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。

  • NumPyを使って、再現率 r、適合率 p、および複製した適合率データ dup_p のデータ点を作成します。

  • whileループによる補間処理で、隣接する適合率の値を比較し、後続の値が大きい場合は前の値を置き換えることで、適合率を単調非増加にします。

  • 図とサブプロットのセットを作成します。

  • r.shape の範囲でループ処理を行い、各区間ごとに垂直方向と水平方向の線分を描画して階段状の補間曲線を作成します。

  • plot() メソッドを使って、元のデータ点 rdup_p を破線で重ねてプロットします。

  • show() メソッドで図を表示します。

コード例

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 再現率と適合率のデータ点を作成
r = np.linspace(0.0, 1.0, num=10)
p = np.random.rand(10) * (1. - r)
dup_p = p.copy()

# 補間処理:適合率を単調非増加にする
i = r.shape[0] - 2
while i >= 0:
    if p[i + 1] > p[i]:
        p[i] = p[i + 1]
    i = i - 1

fig, ax = plt.subplots()

# 階段状の補間曲線を描画
for i in range(r.shape[0] - 1):
    ax.plot((r[i], r[i]), (p[i], p[i + 1]), 'k-', label='', color='red')
    ax.plot((r[i], r[i + 1]), (p[i + 1], p[i + 1]), 'k-', label='', color='red')

# 元のデータ点を破線で表示
ax.plot(r, dup_p, 'k--', color='blue')
plt.show()

実行結果

上記のコードを実行すると、赤色の階段状の補間済みPR曲線と、青色の破線で示された元のデータ点が描画されたグラフが出力されます。

Python Matplotlibで補間を使用して適合率・再現率曲線(PR曲線)を描画する方法

ポイント解説

このコードの核心はwhileループによる補間処理です。再現率の大きい側から順に適合率を走査し、右隣の適合率が現在の値より大きければ現在の値を置き換えます。これにより、PR曲線の標準的な評価手法である「単調非増加な適合率への補間」が実現され、ノイズの影響を受けにくい見やすい曲線が得られます。

  1. Matplotlibを使ってPythonで3D密度マップを描画する方法を徹底解説

    MatplotlibとNumPyを組み合わせると、Pythonで簡単に3D密度マップ(濃度分布図)を作成できます。本記事では、pcolormesh()メソッドを使って擬似カラープロットとして密度マップを可視化する具体的な手順を、サンプルコード付きでわかりやすく解説します。 3D密度マップを描画する基本の手順 NumPyでデータを生成する:side、x、y、zの各データをNumPyで作成します。特にlinspace関数を使うと、指定した2点間の範囲を任意の分割数で等間隔にデータ生成できるため便利です。 座標行列を作成する:sideデータをもとにmeshgrid()を使い、座標ベクトルから2次元

  2. Python Matplotlibで円グラフの一部を強調表示して描画する方法

    はじめに あなたが最も好きなグラフの種類は何ですか?経営層やビジネスアナリストにこの質問をすると、即座に「円グラフ(パイチャート)!」と答えられるほど、円グラフは割合を視覚的に表現するための最も一般的な手法のひとつです。 この記事では、PythonのMatplotlibを使って基本的な円グラフを描く方法から、explodeパラメータで特定のセクターを強調表示するテクニック、さらにパーセンテージではなく実際の値をラベルとして表示するカスタム関数の実装まで、段階的に解説します。 基本的な円グラフの作成手順 ステップ1:Matplotlibのインストール まず、以下のコマンドでMatplotlibを