2014-10-05 6 views
5

मैं एक 3k कक्षा डेटासेट पर एक विज्ञान-सीखने DecissionTreeClassifier का उपयोग कर रहा हूँ। क्लासिफायरफायर फिट करने के बाद मैं प्रत्येक वर्ग के लिए दिए गए नोड में होने वाले उदाहरणों की मात्रा प्राप्त करने के लिए वृक्ष_ विशेषता पर सभी पत्ते नोड्स तक पहुंचता हूं।मैपिंग scikit- सीखें अनुमान TreeClassifier.tree_.value अनुमानित वर्ग

clf = tree.DecisionTreeClassifier(max_depth=5) 
clf.fit(X, y) 
# lets assume there is a leaf node with id 5 
print clf.tree_.value[5] 

यह प्रिंट आउट देगा:

>>> array([[ 0., 1., 68.]]) 

लेकिन ... मैं कैसे पता है कि सरणी में जो स्थिति है जो वर्ग के अंतर्गत आता है करते हैं? वर्गीकारक एक classes_ विशेषता है जो भी एक सूची

>>> clf.classes_ 
array(['CLASS_1', 'CLASS_2', 'CLASS_3'], dtype=object) 

शायद मान सरणी पर सूचकांक 1 कक्षाओं सरणी के सूचकांक 1 और इतने पर पर वर्ग से मेल खाता है?

+0

कृपया प्रश्न में इसे संपादित करने के बजाय अलग से एक उत्तर पोस्ट करें। फिर आप प्रश्न को बंद करने के लिए अपना स्वयं का जवाब स्वीकार कर सकते हैं। –

+0

@ लार्समैन, क्या यह आम नियम है? मैंने एक बार एक पोस्ट पढ़ा जहां किसी ने ऐसा किया और एक टिप्पणी प्राप्त की कि उसे वह करना चाहिए जो मैंने किया था। आपकी प्रतिष्ठा काफी ज्यादा प्रतीत होती है। मैं ऐसा करूँगा और उम्मीद करता हूं कि कोई भी इसके विपरीत नहीं कहता है: एस – nemi

उत्तर

6

इस बारे में विज्ञान-लीमर मेलिंग सूची पर पूछे गए और मेरा अनुमान सही था। मान सरणी पर इंडेक्स 1 को क्लास सरणी के इंडेक्स 1 पर कक्षा से मेल खाता है और इसलिए

+0

धन्यवाद, और +1! –

0

नहीं, यह clf.classes_ नहीं है, लेकिन clf.tree_.feature जिसमें एक्स के कॉलम इंडेक्स होते हैं और यदि एक्स पांडस डेटाफ्रेम है, तो X.columns में नाम होता है। आप a similar question में अधिक विस्तृत जानकारी प्राप्त कर सकते हैं।

+0

हाय @ जिहुन, मुझे लगता है कि आप गलत समझते हैं, मान सरणी (clf.tree_.value [5]) में विशेषताएं नहीं हैं, इसमें काउंटर शामिल हैं उस नोड में किसी दिए गए वर्ग के लिए उदाहरणों की मात्रा (इस मामले में नोड 5), मुझे उन काउंटरों को इसी श्रेणी के नाम पर मैप करना है। – nemi

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