pytorch 다 중 분류 문제,백분율 계산 작업

2 분류 또는 분류 문제,네트워크 출력 은 2 차원 매트릭스:일괄 x 몇 가지 분류,가장 큰 것 은 현재 분류,라벨 은 one-hot 형의 2 차원 매트릭스:일괄 x 몇 가지 분류
계산 백분율 은 numpy 와 pytorch 두 가지 실현 방안 이 있 는데 모두 색인 에 따라 백분율 을 계산 하고 다음은 구체 적 인 2 분류 실현 과정 이다.
pytorch

out = torch.Tensor([[0,3],
     [2,3],
     [1,0],
     [3,4]])
cond = torch.Tensor([[1,0],
      [0,1],
      [1,0],
      [1,0]])
 
persent = torch.mean(torch.eq(torch.argmax(out, dim=1), torch.argmax(cond, dim=1)).double())
print(persent)
numpy

out = [[0, 3],
  [2, 3],
  [1, 0],
  [3, 4]]
cond = [[1, 0],
  [0, 1],
  [1, 0],
  [1, 0]] 
a = np.argmax(out,axis=1)
b = np.argmax(cond, axis=1)
persent = np.mean(np.equal(a, b) + 0)
# persent = np.mean(a==b + 0)
print(persent)
python 다 분류 화 auc 곡선 과 macro-average ROC curve
최근 에 한 사람 을 도와 auc 곡선 을 여러 가지 분류 해서 그 리 는 것 을 만 들 었 습 니 다.그러나 마지막 에 그 사람 은 원 하지 않 았 습 니 다.그리고 한 차례 말 을 들 었 습 니 다.마음 이 매우 불쾌 합 니 다.anyway,제 가 코드 를 쓴 사람 은 코드 를 계속 써 야 하기 때문에 제 가 수정 한 코드 를 공유 하여 여러분 들 이 연구 하고 공부 할 수 있 도록 하 겠 습 니 다.처리 한 데 이 터 는 이러한 xlsx 파일 로 크게 바 뀌 었 습 니 다.

IMAGE y_real y_predict 0   1   2   3   4  
/mnt/AI/HM/izy20200531c5/299/train/0  /IM005111 (Copy).jpg 0 0 1 8.31E-19 7.59E-13 4.47E-15 2.46E-14
/mnt/AI/HM/izy20200531c5/299/train/0  /IM005201 (Copy).jpg 0 0 1 5.35E-17 4.38E-11 8.80E-13 3.85E-11
/mnt/AI/HM/izy20200531c5/299/train/0  /IM004938 (4) (Copy).jpg 0 0 1 1.20E-16 3.17E-11 6.26E-12 1.02E-11
/mnt/AI/HM/izy20200531c5/299/train/0  /IM004349 (3) (Copy).jpg 0 0 1 5.66E-14 1.87E-09 6.50E-09 3.29E-09
/mnt/AI/HM/izy20200531c5/299/train/0  /IM004673 (5) (Copy).jpg 0 0 1 5.51E-17 9.30E-12 1.33E-13 2.54E-12
/mnt/AI/HM/izy20200531c5/299/train/0  /IM004450 (5) (Copy).jpg 0 0 1 4.81E-17 3.75E-12 3.96E-13 6.17E-13
기본 pandas 와 keras 처리 함수 가 져 오기
import pandas as pd
from keras.utils import to_categorical
데이터 가 져 오기
data=pd.read_excel('5 분류 새.xlsx')
data.head()
기계 학습 라 이브 러 리 가 져 오기

from sklearn.metrics import precision_recall_curve
import numpy as np
from matplotlib import pyplot
from sklearn.metrics import f1_score
from sklearn.metrics import roc_curve, auc
지상 의 진 리 를 추출 하 다.
true_y=data[' y_real'].to_numpy()
true_y=to_categorical(true_y)
각 분류의 데 이 터 를 추출 하 다.
PM_y=data[['0 기타','1 표범 무늬','2 자욱','3 얼룩','4 황반'].tonumpy()
PM_y.shape
각 분류의 fpr 와 tpr 를 계산 합 니 다.

n_classes=PM_y.shape[1]
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
 fpr[i], tpr[i], _ = roc_curve(true_y[:, i], PM_y[:, i])
 roc_auc[i] = auc(fpr[i], tpr[i])
계산 매크로 auc

from scipy import interp
# First aggregate all false positive rates
all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))
 
# Then interpolate all ROC curves at this points
mean_tpr = np.zeros_like(all_fpr)
for i in range(n_classes):
 mean_tpr += interp(all_fpr, fpr[i], tpr[i])
 
# Finally average it and compute AUC
mean_tpr /= n_classes
 
fpr["macro"] = all_fpr
tpr["macro"] = mean_tpr
roc_auc["macro"] = auc(fpr["macro"], tpr["macro"])
그림 을 그리다

import matplotlib.pyplot as plt
from itertools import cycle
from matplotlib.ticker import FuncFormatter
lw = 2
# Plot all ROC curves
plt.figure()
labels=['Category 0','Category 1','Category 2','Category 3','Category 4']
plt.plot(fpr["macro"], tpr["macro"],
   label='macro-average ROC curve (area = {0:0.4f})'
    ''.format(roc_auc["macro"]),
   color='navy', linestyle=':', linewidth=4)
 
colors = cycle(['aqua', 'darkorange', 'cornflowerblue','blue','yellow'])
for i, color in zip(range(n_classes), colors):
 plt.plot(fpr[i], tpr[i], color=color, lw=lw,
    label=labels[i]+'(area = {0:0.4f})'.format(roc_auc[i]))
 
plt.plot([0, 1], [0, 1], 'k--', lw=lw)
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('1-Specificity (%)')
plt.ylabel('Sensitivity (%)')
plt.title('Some extension of Receiver operating characteristic to multi-class')
def to_percent(temp, position):
 return '%1.0f'%(100*temp)
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))
plt.gca().xaxis.set_major_formatter(FuncFormatter(to_percent))
plt.legend(loc="lower right")
plt.show()
전시 하 다.

상기 코드 는 Jupyter 에서 실행 되 기 때문에 분리 되 어 있 습 니 다.
이상 의 pytorch 다 분류 문제,백분율 계산 작업 은 바로 소 편 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기