के शैनन एन्ट्रॉपी को समझना मैं Machine Learning In Action
पढ़ रहा हूं और निर्णय पेड़ अध्याय के माध्यम से जा रहा हूं। मैं समझता हूं कि निर्णय पेड़ इस प्रकार बनाए गए हैं कि डेटा सेट को विभाजित करने से आपको अपनी शाखाओं और पत्तियों को ढांचा बनाने का एक तरीका मिल जाता है। यह आपको पेड़ के शीर्ष पर अधिक संभावित जानकारी देता है और आपको कितने निर्णय लेने की आवश्यकता है, इस सीमा को सीमित करता है।डेटा सेट
पुस्तक एक समारोह किसी डेटा सेट की शैनन एन्ट्रापी का निर्धारण करने से पता चलता:
def calcShannonEnt(dataSet):
numEntries = len(dataSet)
labelCounts = {}
for featVec in dataSet: #the the number of unique elements and their occurance
currentLabel = featVec[-1]
if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
shannonEnt = 0.0
for key in labelCounts:
prob = float(labelCounts[key])/numEntries
shannonEnt -= prob * log(prob,2) #log base 2
return shannonEnt
कहाँ इनपुट डेटा सेट सरणियों की एक सरणी जहां प्रत्येक सरणी एक संभावित वर्गीकृत करने योग्य सुविधा का प्रतिनिधित्व करता है:
dataSet = [[1, 1, 'yes'],
[1, 1, 'yes'],
[1, 0, 'no'],
[0, 1, 'no'],
[0, 1, 'no']]
मुझे क्या नहीं मिलता है इस पुस्तक में शैनन एन्ट्रॉपी फ़ंक्शन केवल फीचर सरणी में अंतिम तत्व को देख रहा है? ऐसा लगता है कि यह केवल "हां" या "नहीं" वस्तुओं के लिए एन्ट्रॉपी की गणना करता है, न कि अन्य सुविधाओं की एंट्रॉपी?
यह क्योंकि इस डेटा के लिए एन्ट्रापी सेट
dataSet = [[1, 1, 'yes'],
[1, 'asdfasdf', 'yes'],
[1900, 0, 'no'],
[0, 1, 'no'],
['ddd', 1, 'no']]
ऊपर एन्ट्रापी के रूप में ही है मेरे लिए कोई मतलब नहीं है, भले ही यह एक बहुत अधिक विविध डेटा है।
डेटा सेट की कुल एन्ट्रॉपी देने के लिए अन्य फीचर तत्वों को भी गिना नहीं जाना चाहिए, या क्या मैं गलत समझ रहा हूं कि एन्ट्रॉपी गणना क्या करना चाहिए?
यदि कोई उत्सुक है, तो पुस्तक के लिए पूर्ण स्रोत (जहां यह कोड आया है) अध्याय 03 फ़ोल्डर के तहत here है।