【初心者向け】基礎&実践プログラミング

初心者がつまづきやすいところ、最短で実力が身につく方法をお伝えします。

【Python】バイオリンプロット(Violin Plot)

目的

  • Pythonのseabornを使ってバイオリンプロットを作成

データ(例:AIの予測値と正解値)

ここで使うデータは、AIが判定した予測値と正解値(0~3)。

  • y_true: 正解ラベル
  • y_pred: 予測したラベル

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

コード

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()

実行結果

作成したヴァイオリンプロットは以下。

f:id:AIProgrammer:20200716183324p:plain

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

f:id:AIProgrammer:20200716183334p:plain



頑張れ!喝!!の代わりにB!ブックマークを押していただけるとただただうれしいです(^^)! ↓