शुरू करेंमुफ़्त में शुरू करें

Precision-Recall ट्रेड-ऑफ

क्लासिफिकेशन टास्क पर काम करते समय, Precision-Recall ट्रेड-ऑफ शब्द अक्सर आता है. यह आता कहाँ से है?

आम तौर पर, जिस क्लास की प्रायिकता अधिक होती है, दस्तावेज़ उसी को असाइन किया जाता है. लेकिन यदि अधिकतम प्रायिकता सिर्फ 0.1 हो तो? क्या आप सिर्फ 10% प्रायिकता के आधार पर उस दस्तावेज़ को उसी क्लास का मानेंगे?

जवाब समस्या पर निर्भर करता है. आप क्लासिफिकेशन स्वीकार करने के लिए एक न्यूनतम थ्रेशहोल्ड जोड़ सकते हैं, और थ्रेशहोल्ड बदलने पर precision और recall के मान विपरीत दिशाओं में बदलते हैं.

वैरिएबल y_true और मॉडल model पहले से लोड हैं. साथ ही, अगर प्रायिकता थ्रेशहोल्ड से कम है, तो दस्तावेज़ को DEFAULT_CLASS (यहाँ क्लास 2) असाइन किया जाएगा.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Keras के साथ भाषा मॉडलिंग के लिए Recurrent Neural Networks (RNNs)

पाठ्यक्रम देखें

अभ्यास निर्देश

  • प्रत्येक क्लास के लिए प्रायिकताएँ पाने के लिए .predict() मेथड का उपयोग करें और उन्हें pred_probabilities वैरिएबल में स्टोर करें.
  • अधिकतम प्रायिकता को तभी स्वीकार करें जब वह 0.5 से अधिक या बराबर हो, और परिणाम y_pred_50 वैरिएबल में स्टोर करें.
  • थ्रेशहोल्ड 0.8 के लिए भी यही कार्य np.argmax() और np.max() फंक्शनों से करें.
  • सभी मेट्रिक्स के साथ trade_off वैरिएबल को प्रिंट करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# Get probabilities for each class
pred_probabilities = model.____(X_test)

# Thresholds at 0.5 and 0.8
y_pred_50 = [np.argmax(x) if np.max(x) >= ____ else DEFAULT_CLASS for x in pred_probabilities]
y_pred_80 = [np.____(x) if np.____(x) >= 0.8 else DEFAULT_CLASS for x in pred_probabilities]

trade_off = pd.DataFrame({
    'Precision_50': precision_score(y_true, y_pred_50, average=None), 
    'Precision_80': precision_score(y_true, y_pred_80, average=None), 
    'Recall_50': recall_score(y_true, y_pred_50, average=None), 
    'Recall_80': recall_score(y_true, y_pred_80, average=None)}, 
  index=['Class 1', 'Class 2', 'Class 3'])

____
कोड संपादित करें और चलाएँ