सभी चुनौतियाँ
आसान 0 हल किए गए 0% स्वीकृति

जिनी इम्प्योरिटी

मापें कि किसी समूह के लेबल कितने मिले-जुले हैं, यही स्कोर डिसीज़न ट्री बँटवारा चुनने में इस्तेमाल करते हैं।

आप क्या सीखेंगे

  • मापना कि लेबल का समूह कितना मिला-जुला है
  • हर क्लास का अनुपात गिनना
  • समझना कि ट्री विभाजन कैसे चुनते हैं

समस्या

डिसीज़न ट्री डेटा को जितना हो सके उतने शुद्ध समूहों में बाँटते हैं। जिनी इम्प्योरिटी मापती है कि किसी समूह के लेबल कितने मिले-जुले हैं:

Gini = 1 - Σ pₖ²

जहाँ pₖ क्लास k वाले लेबल का अनुपात है। एक ही क्लास वाले समूह की इम्प्योरिटी 0 होती है; दो क्लास के बराबर मिश्रण की इम्प्योरिटी 0.5 होती है।

gini_impurity(labels) लागू करें।

इनपुट

labels: समूह के क्लास लेबल।

आउटपुट

जिनी इम्प्योरिटी को दशमलव संख्या के रूप में लौटाएँ।

सीमाएँ

1 ≤ लंबाई ≤ 10,000

हर लेबल 1 से 20 अक्षर का है

उदाहरण

उदाहरण 1
इनपुट:
labels = ["yes", "yes", "no", "no"]

अपेक्षित आउटपुट:
expected = 0.5
इनपुट:
std::vector<std::string> labels = {"yes", "yes", "no", "no"};

अपेक्षित आउटपुट:
double expected = 0.5;
इनपुट:
string[] labels = new string[] {"yes", "yes", "no", "no"};

अपेक्षित आउटपुट:
double expected = 0.5;

व्याख्या

आधे yes हैं और आधे no: 1 - (0.5² + 0.5²) = 1 - 0.5 = 0.5, दो क्लास वाले समूह का सबसे ज़्यादा मिश्रण।

उदाहरण 2
इनपुट:
labels = ["cat", "cat", "cat"]

अपेक्षित आउटपुट:
expected = 0.0
इनपुट:
std::vector<std::string> labels = {"cat", "cat", "cat"};

अपेक्षित आउटपुट:
double expected = 0.0;
इनपुट:
string[] labels = new string[] {"cat", "cat", "cat"};

अपेक्षित आउटपुट:
double expected = 0.0;

व्याख्या

केवल एक क्लास: 1 - 1² = 0। समूह शुद्ध है।

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।