1. 目的
2. データ(例:AIの予測値と正解値)
2.1. PVHs.csv
3. コード
4. 実行結果
1. 目的
- Pythonのseabornを使ってバイオリンプロットを作成
2. データ(例:AIの予測値と正解値)
ここで使うデータは、AIが判定した予測値と正解値(0~3)。
- y_true: 正解ラベル
- y_pred: 予測したラベル
2.1. PVHs.csv
| y_true | y_pred |
|---|---|
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 1 |
| 0 | 1 |
| 0 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 2 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 2 | 2 |
| 3 | 2 |
| 3 | 3 |
| 3 | 3 |
| 3 | 3 |
| 3 | 3 |
| 3 | 3 |
| 3 | 3 |
| 3 | 3 |
| 3 | 3 |
| 3 | 3 |
3. コード
import seaborn
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib.ticker as ticker
disease='PVHs'
df = pd.read_csv('{}.csv'.format(disease))
# print(df)
plt.gca().get_yaxis().set_major_locator(ticker.MaxNLocator(integer=True))
seaborn.violinplot(x=df['y_true'], y=df['y_pred'])
# seaborn.violinplot(x=df['y_true'], y=df['y_pred'],cut=0) # 確率密度分布を制限して表示する場合
plt.savefig('{}.png'.format(disease))
plt.show()
4. 実行結果
作成したヴァイオリンプロットは以下。

本来は、ラベルは0から3であるが、確率密度分布が-1や4にまで広がっている。
それが気持ち悪い場合は、seaborn.violinplotの引数にcut=0を渡してやる。

