7

की गणना कैसे करें मैं विज्ञान-शिक्षा का उपयोग कर रहा हूं और मुझे सही सकारात्मक (टीपी), गलत सकारात्मक (एफपी), सही नकारात्मक (टीएन) और झूठी नकारात्मक (एफएन) की गणना करने की आवश्यकता है) इस तरह एक भ्रम मैट्रिक्स से:विज्ञान-सीखें: सही नकारात्मक

[[2 0 3 4] 
[0 4 5 1] 
[1 0 3 2] 
[5 0 0 4]] 

मुझे पता है कि टी.पी., एफपी और एफ एन गणना करने के लिए, लेकिन मैं कैसे तमिलनाडु प्राप्त करने के लिए पता नहीं है। क्या कोई मुझे बता सकता है?

उत्तर

8

मुझे लगता है कि आपको इस बहु-वर्ग वर्गीकरण को एक-बनाम-बाकी तरीके से इलाज करना चाहिए (इसलिए प्रत्येक 2x2 तालिका i बाइनरी वर्गीकरण समस्या के प्रदर्शन को मापती है कि प्रत्येक ऑब्जेक्ट i लेबल से संबंधित है या नहीं)। नतीजतन, आप प्रत्येक व्यक्तिगत लेबल के लिए टीपी, एफपी, एफएन, टीएन की गणना कर सकते हैं।

import numpy as np 

confusion_matrix = np.array([[2,0,3,4], 
          [0,4,5,1], 
          [1,0,3,2], 
          [5,0,0,4]]) 

def process_cm(confusion_mat, i=0, to_print=True): 
    # i means which class to choose to do one-vs-the-rest calculation 
    # rows are actual obs whereas columns are predictions 
    TP = confusion_mat[i,i] # correctly labeled as i 
    FP = confusion_mat[:,i].sum() - TP # incorrectly labeled as i 
    FN = confusion_mat[i,:].sum() - TP # incorrectly labeled as non-i 
    TN = confusion_mat.sum().sum() - TP - FP - FN 
    if to_print: 
     print('TP: {}'.format(TP)) 
     print('FP: {}'.format(FP)) 
     print('FN: {}'.format(FN)) 
     print('TN: {}'.format(TN)) 
    return TP, FP, FN, TN 

for i in range(4): 
    print('Calculating 2x2 contigency table for label{}'.format(i)) 
    process_cm(confusion_matrix, i, to_print=True) 

Calculating 2x2 contigency table for label0 
TP: 2 
FP: 6 
FN: 7 
TN: 19 
Calculating 2x2 contigency table for label1 
TP: 4 
FP: 0 
FN: 6 
TN: 24 
Calculating 2x2 contigency table for label2 
TP: 3 
FP: 8 
FN: 3 
TN: 20 
Calculating 2x2 contigency table for label3 
TP: 4 
FP: 7 
FN: 5 
TN: 18 
+0

ग्रेट उत्तर! चर्चा में थोड़ा जोड़ने के लिए, मैं बताउंगा कि 'scikit-learn' में मल्टी-क्लास स्कोरिंग मीट्रिक के लिए कार्यक्षमता भी है। यदि आप आरओसी में टीपी, एफपी, एफएन और टीएन को एकत्रित करने की योजना बना रहे थे, तो मैं स्कोरिंग मीट्रिक विधियों का उपयोग करने का सुझाव दूंगा जो [यहां दस्तावेज हैं] (http://scikit-learn.org/stable/modules/classes.html # sklearn-metrics-metrics) और [यहां उपयोगकर्ता मार्गदर्शिका] में संबोधित किया गया है (http://scikit-learn.org/stable/modules/model_evaluation.html#classification-metrics)। एफ 1-स्कोर जैसे मीट्रिक बहुत भ्रमित हो जाते हैं जब कई कक्षाएं पेश की जाती हैं, इसलिए ये मेट्रिक्स बहुत उपयोगी हैं। – AN6U5

-2

मुझे लगता है कि इस तरह की मल्टीक्लास समस्या के लिए आपको यह तय करना होगा कि इनमें से कौन से 4 वर्गों को सकारात्मक माना जा सकता है और आपको वास्तविक नकारात्मक गणना करने के लिए शेष 3 को नकारात्मक के रूप में जोड़ना होगा। विस्तृत चर्चा here पर की गई थी।

संबंधित मुद्दे