आर

2012-09-24 13 views
6

में परिशुद्धता, याद और एफ-माप मैंने कुछ समय में आर का उपयोग नहीं किया है, इसलिए शायद मैं अभी तक इसका उपयोग नहीं कर रहा हूं, लेकिन .. मेरे पास दो कॉलम के साथ आर में एक टेबल है, पहला मूल्यों की भविष्यवाणी की गई है (एक मान या तो 0 या 1 हो सकता है), दूसरे में वास्तविक मान (0 या 1) भी हैं। मुझे याद, सटीकता और एफ-उपायों को खोजने की ज़रूरत है, लेकिन आर में इसके लिए एक अच्छा काम नहीं मिल रहा है। (मैंने आरओसीआर के बारे में भी पढ़ा है, लेकिन मैं जो कुछ कर सकता था वह कुछ भूखंड बना रहा था, लेकिन मुझे वास्तव में भूखंडों की आवश्यकता नहीं है, मैं संख्याओं की आवश्यकता है)।आर

क्या आर में परिशुद्धता, याद और एफ-माप खोजने के लिए कोई अच्छा काम है? क्या ऐसा करने के कोई अलग तरीके हैं?

+0

इससे पहले कि मैं इस कार्य को शुरू किया था, मैं या तो नहीं किया। (http://en.wikipedia.org/wiki/Precision_and_recall#F-measure) – Fanny

+0

मैंने https://stackoverflow.com/a/36843900/6105797 –

उत्तर

18

सबसे पहले मैं एक डेटा सेट बनाने के रूप में

> predict <- sample(c(0, 1), 20, replace=T) 
> true <- sample(c(0, 1), 20, replace=T) 

मुझे लगता है उन 1 की भविष्यवाणी की मूल्यों में की पुनः प्राप्त कर रहे हैं। पुनः प्राप्त की कुल संख्या,

> retrieved <- sum(predict) 

प्रेसिजन जो पुनः प्राप्त उदाहरणों कि प्रासंगिक हैं के अंश है

> precision <- sum(predict & true)/retrieved 

याद जो प्रासंगिक उदाहरणों कि प्राप्त किए गए हैं के अंश है,

> recall <- sum(predict & true)/sum(true) 
है

एफ-माप 2 * सटीक * याद/(सटीक + याद)

> Fmeasure <- 2 * precision * recall/(precision + recall) 
+0

में एक समान प्रश्न का उत्तर दिया धन्यवाद, यह वास्तव में अच्छा काम करता है! (और मैंने सोचा था कि मैं जितना आसान था, मुझे लगता है कि मैं फिर से सोच रहा था) – Fanny

+2

भविष्यवाणी करते समय सभी 0 (क्लासिफायर ने कक्षा 0 से संबंधित सभी नमूने की भविष्यवाणी की), फिर पुनर्प्राप्त = 0 और आप 0 से विभाजित – Omri374

8

बस एक समारोह में बड़े करीने से पैट्रिक महान जवाब पैकेजिंग ...

measurePrecisionRecall <- function(predict, actual_labels){ 
    precision <- sum(predict & actual_labels)/sum(predict) 
    recall <- sum(predict & actual_labels)/sum(actual_labels) 
    fmeasure <- 2 * precision * recall/(precision + recall) 

    cat('precision: ') 
    cat(precision * 100) 
    cat('%') 
    cat('\n') 

    cat('recall:  ') 
    cat(recall * 100) 
    cat('%') 
    cat('\n') 

    cat('f-measure: ') 
    cat(fmeasure * 100) 
    cat('%') 
    cat('\n') 
}