컴퓨전 매트릭스는 행 합계에 대한 각 요소의 비율도 필요하십니까?
소개
파이썬 데이터 과학 핸드북 공부중에 생각한 것.
seaborn에서 히트 맵 만들어 오분류를 가시화하고 있지만, 이것이 전체 안에서 숫자가 큰 값에 색이 붙는 것은?
(모든 분류에서 샘플 수가 같으면 좋지만 데이터 불균형은 종종 발생하기 때문에)
행의 합계(=각 분류)에 대한, 각 요소의 비율을 알 수 있는 히트 맵도 있는 것이 좋다.
라는 것으로 만들었다.
데이터 로드 및 분류 알고리즘 적용
load_and_modelfitting.pyimport numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
# サンプルとして今回は手書き文字の画像を分類タスクとしてロード
digits = load_digits()
X = digits.data
y = digits.target
# 訓練用と評価用に分割
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, random_state=0)
# 分類アルゴリズムも適当にガウシアンナイーブベイズを適用
model = GaussianNB()
model.fit(Xtrain, ytrain)
y_model = model.predict(Xtest)
accuracy_score(ytest, y_model)
여기에서 본제
평소 혼동 행렬과 행에 대한 비율의 배열을 히트 맵으로 만듭니다.
create_confmrx.py# 普通のコンフュージョンマトリックスの2次元配列
mat = confusion_matrix(ytest, y_model)
# 各行合計に対する割合を計算し、小数点第3位を四捨五入した2次元配列
mat_dec = np.round(mat / np.sum(mat, axis=1), decimals=2)
fig, axes = plt.subplots(1, 2, figsize=(10, 10))
kwargs = dict(square=True, annot=True, cbar=False, cmap='RdPu')
# 2つのヒートマップを描画
for i, dat in enumerate([mat, mat_dec]):
sns.heatmap(dat, **kwargs, ax=axes[i])
# グラフタイトル、x軸とy軸のラベルを設定
for ax, t in zip(axes, ['Real number', 'Percentage(per row)']):
plt.axes(ax)
plt.title(t)
plt.xlabel('predicted value')
plt.ylabel('true value')
그린 히트맵 정보 해석안
load_and_modelfitting.py
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
# サンプルとして今回は手書き文字の画像を分類タスクとしてロード
digits = load_digits()
X = digits.data
y = digits.target
# 訓練用と評価用に分割
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, random_state=0)
# 分類アルゴリズムも適当にガウシアンナイーブベイズを適用
model = GaussianNB()
model.fit(Xtrain, ytrain)
y_model = model.predict(Xtest)
accuracy_score(ytest, y_model)
여기에서 본제
평소 혼동 행렬과 행에 대한 비율의 배열을 히트 맵으로 만듭니다.
create_confmrx.py# 普通のコンフュージョンマトリックスの2次元配列
mat = confusion_matrix(ytest, y_model)
# 各行合計に対する割合を計算し、小数点第3位を四捨五入した2次元配列
mat_dec = np.round(mat / np.sum(mat, axis=1), decimals=2)
fig, axes = plt.subplots(1, 2, figsize=(10, 10))
kwargs = dict(square=True, annot=True, cbar=False, cmap='RdPu')
# 2つのヒートマップを描画
for i, dat in enumerate([mat, mat_dec]):
sns.heatmap(dat, **kwargs, ax=axes[i])
# グラフタイトル、x軸とy軸のラベルを設定
for ax, t in zip(axes, ['Real number', 'Percentage(per row)']):
plt.axes(ax)
plt.title(t)
plt.xlabel('predicted value')
plt.ylabel('true value')
그린 히트맵 정보 해석안
# 普通のコンフュージョンマトリックスの2次元配列
mat = confusion_matrix(ytest, y_model)
# 各行合計に対する割合を計算し、小数点第3位を四捨五入した2次元配列
mat_dec = np.round(mat / np.sum(mat, axis=1), decimals=2)
fig, axes = plt.subplots(1, 2, figsize=(10, 10))
kwargs = dict(square=True, annot=True, cbar=False, cmap='RdPu')
# 2つのヒートマップを描画
for i, dat in enumerate([mat, mat_dec]):
sns.heatmap(dat, **kwargs, ax=axes[i])
# グラフタイトル、x軸とy軸のラベルを設定
for ax, t in zip(axes, ['Real number', 'Percentage(per row)']):
plt.axes(ax)
plt.title(t)
plt.xlabel('predicted value')
plt.ylabel('true value')
결론
컴퓨전 매트릭스, 견해가 무즈하다…
Reference
이 문제에 관하여(컴퓨전 매트릭스는 행 합계에 대한 각 요소의 비율도 필요하십니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yoshi-heita/items/73f576e19928d1d95105
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(컴퓨전 매트릭스는 행 합계에 대한 각 요소의 비율도 필요하십니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshi-heita/items/73f576e19928d1d95105텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)