पायथन ट्यूटोरियल

अजगर घर पायथन परिचय पायथन आरंभ करें पायथन सिंटेक्स पायथन टिप्पणियाँ पायथन वेरिएबल्स पायथन डेटा प्रकार अजगर संख्या पायथन कास्टिंग पायथन स्ट्रिंग्स पायथन बूलियन्स पायथन ऑपरेटर्स पायथन सूचियाँ पायथन टुपल्स पायथन सेट पायथन डिक्शनरी अजगर अगर... और पाइथन जबकि लूप्स लूप्स के लिए पायथन पायथन कार्य अजगर लैम्ब्डा पायथन एरेज़ पायथन क्लासेस/ऑब्जेक्ट्स पायथन इनहेरिटेंस पायथन इटरेटर्स पायथन स्कोप पायथन मॉड्यूल अजगर तिथियाँ पायथन मठ पायथन JSON पायथन रेगेक्स पायथन पीआईपी अजगर का प्रयास करें... को छोड़कर पायथन उपयोगकर्ता इनपुट पायथन स्ट्रिंग स्वरूपण

फ़ाइल रखरखाव

पायथन फ़ाइल हैंडलिंग पायथन फ़ाइलें पढ़ें पायथन लिखें/फाइलें बनाएं पायथन फ़ाइलें हटाएं

पायथन मॉड्यूल

न्यूमपी ट्यूटोरियल पांडा वॉकथ्रू स्काइप ट्यूटोरियल

पायथन माटप्लोटलिब

माटप्लोटलिब परिचय माटप्लोटलिब आरंभ करें माटप्लोटलिब पाइप्लॉट माटप्लोटलिब प्लॉटिंग माटप्लोटलिब मार्कर माटप्लोटलिब लाइन माटप्लोटलिब लेबल माटप्लोटलिब ग्रिड माटप्लोटलिब सबप्लॉट्स माटप्लोटलिब स्कैटर माटप्लोटलिब बार्स माटप्लोटलिब हिस्टोग्राम Matplotlib पाई चार्ट

यंत्र अधिगम

शुरू करना मध्यमान मध्यम मोड मानक विचलन प्रतिशतता डेटा वितरण सामान्य डेटा वितरण स्कैटर प्लॉट रेखीय प्रतिगमन बहुपद प्रतिगमन बहु - प्रतिगमन स्केल ट्रेन / टेस्ट निर्णय वृक्ष

पायथन मायएसक्यूएल

MySQL प्रारंभ करें MySQL डेटाबेस बनाएँ MySQL तालिका बनाएँ MySQL सम्मिलित करें MySQL चुनें MySQL कहाँ MySQL ऑर्डर बाय MySQL हटाएं MySQL ड्रॉप टेबल MySQL अद्यतन MySQL सीमा मायएसक्यूएल जॉइन

पायथन मोंगोडीबी

मोंगोडीबी आरंभ करें MongoDB डेटाबेस बनाएँ MongoDB संग्रह बनाएँ मोंगोडीबी डालें मोंगोडीबी खोजें मोंगोडीबी क्वेरी मोंगोडीबी सॉर्ट मोंगोडीबी हटाएं MongoDB ड्रॉप संग्रह मोंगोडीबी अपडेट मोंगोडीबी सीमा

पायथन संदर्भ

पायथन अवलोकन पायथन बिल्ट-इन फंक्शन्स पायथन स्ट्रिंग तरीके पायथन सूची के तरीके पायथन डिक्शनरी के तरीके पायथन टुपल तरीके पायथन सेट मेथड्स पायथन फ़ाइल तरीके पायथन कीवर्ड पायथन अपवाद पायथन शब्दावली

मॉड्यूल संदर्भ

यादृच्छिक मॉड्यूल अनुरोध मॉड्यूल सांख्यिकी मॉड्यूल गणित मॉड्यूल सीमैथ मॉड्यूल

पायथन कैसे करें

सूची डुप्लिकेट निकालें एक स्ट्रिंग को उल्टा करें दो नंबर जोड़ें

पायथन उदाहरण

पायथन उदाहरण पायथन कंपाइलर अजगर व्यायाम अजगर प्रश्नोत्तरी पायथन प्रमाणपत्र

मशीन लर्निंग - डिसीजन ट्री



निर्णय वृक्ष

इस अध्याय में हम आपको दिखाएंगे कि "निर्णय वृक्ष" कैसे बनाया जाता है। डिसीजन ट्री एक फ्लो चार्ट है, और पिछले अनुभव के आधार पर निर्णय लेने में आपकी मदद कर सकता है।

उदाहरण में, एक व्यक्ति यह तय करने का प्रयास करेगा कि उसे कॉमेडी शो में जाना चाहिए या नहीं।

सौभाग्य से हमारे उदाहरण के व्यक्ति ने हर बार शहर में एक कॉमेडी शो के लिए पंजीकरण किया है, और कॉमेडियन के बारे में कुछ जानकारी दर्ज की है, और यह भी पंजीकृत किया है कि वह गया या नहीं।

उम्र अनुभव पद राष्ट्रीयता जाओ
36 10 9 यूके नहीं
42 12 4 अमेरीका नहीं
23 4 6 एन नहीं
52 4 4 अमेरीका नहीं
43 21 8 अमेरीका हां
44 14 5 यूके नहीं
66 3 7 एन हां
35 14 9 यूके हां
52 13 7 एन हां
35 5 9 एन हां
24 3 5 अमेरीका नहीं
18 3 7 यूके हां
45 9 9 यूके हां

अब, इस डेटा सेट के आधार पर, पायथन एक निर्णय वृक्ष बना सकता है जिसका उपयोग यह तय करने के लिए किया जा सकता है कि क्या कोई नया शो देखने लायक है।



यह कैसे काम करता है?

सबसे पहले, आपको आवश्यक मॉड्यूल आयात करें, और पंडों के साथ डेटासेट पढ़ें:

उदाहरण

डेटा सेट पढ़ें और प्रिंट करें:

import pandas
from sklearn import tree
import pydotplus
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
import matplotlib.image as pltimg

df = pandas.read_csv("shows.csv")

print(df)

निर्णय वृक्ष बनाने के लिए, सभी डेटा को संख्यात्मक होना चाहिए।

हमें गैर-संख्यात्मक कॉलम 'राष्ट्रीयता' और 'गो' को संख्यात्मक मानों में बदलना होगा।

पंडों के पास एक map()तरीका है जो मूल्यों को परिवर्तित करने के तरीके के बारे में जानकारी के साथ एक शब्दकोश लेता है।

{'UK': 0, 'USA': 1, 'N': 2}

मतलब 'यूके' को 0, 'यूएसए' को 1 और 'एन' को 2 में बदलें।

उदाहरण

स्ट्रिंग मानों को संख्यात्मक मानों में बदलें:

d = {'UK': 0, 'USA': 1, 'N': 2}
df['Nationality'] = df['Nationality'].map(d)
d = {'YES': 1, 'NO': 0}
df['Go'] = df['Go'].map(d)

print(df)

फिर हमें फीचर कॉलम को टारगेट कॉलम से अलग करना होगा।

फीचर कॉलम वे कॉलम हैं जिनसे हम भविष्यवाणी करने का प्रयास करते हैं , और लक्ष्य कॉलम उन मूल्यों के साथ कॉलम है जिन्हें हम भविष्यवाणी करने का प्रयास करते हैं।

उदाहरण

Xसुविधा स्तंभ yहै, लक्ष्य स्तंभ है:

features = ['Age', 'Experience', 'Rank', 'Nationality']

X = df[features]
y = df['Go']

print(X)
print(y)

अब हम वास्तविक निर्णय वृक्ष बना सकते हैं, इसे अपने विवरण के साथ फिट कर सकते हैं, और कंप्यूटर पर एक .png फ़ाइल सहेज सकते हैं:

उदाहरण

एक निर्णय वृक्ष बनाएं, इसे एक छवि के रूप में सहेजें, और छवि दिखाएं:

dtree = DecisionTreeClassifier()
dtree = dtree.fit(X, y)
data = tree.export_graphviz(dtree, out_file=None, feature_names=features)
graph = pydotplus.graph_from_dot_data(data)
graph.write_png('mydecisiontree.png')

img=pltimg.imread('mydecisiontree.png')
imgplot = plt.imshow(img)
plt.show()


परिणाम समझाया

डिसीजन ट्री आपके पहले के निर्णयों का उपयोग उन बाधाओं की गणना करने के लिए करता है जिनके लिए आप किसी कॉमेडियन को देखने जाना चाहते हैं या नहीं।

आइए हम निर्णय वृक्ष के विभिन्न पहलुओं को पढ़ें:

पद

Rank <= 6.5इसका मतलब है कि 6.5 या उससे कम रैंक वाला हर कॉमेडियन Trueतीर (बाईं ओर) का अनुसरण करेगा, और बाकी Falseतीर (दाईं ओर) का अनुसरण करेगा।

gini = 0.497 विभाजन की गुणवत्ता को संदर्भित करता है, और हमेशा 0.0 और 0.5 के बीच की एक संख्या होती है, जहां 0.0 का मतलब होगा कि सभी नमूनों का एक ही परिणाम है, और 0.5 का मतलब होगा कि विभाजन बिल्कुल बीच में किया गया है।

samples = 13 इसका मतलब है कि इस बिंदु पर निर्णय में 13 कॉमेडियन बचे हैं, जो उन सभी के लिए है क्योंकि यह पहला कदम है।

value = [6, 7] इसका मतलब है कि इन 13 कॉमेडियन में से 6 को "NO" मिलेगा और 7 को "GO" मिलेगा।

गिनी

नमूनों को विभाजित करने के कई तरीके हैं, हम इस ट्यूटोरियल में GINI पद्धति का उपयोग करते हैं।

गिनी विधि इस सूत्र का उपयोग करती है:

Gini = 1 - (x/n)2 - (y/n)2

xसकारात्मक उत्तरों की संख्या ("जाओ") कहां है n, नमूनों की संख्या है, और yनकारात्मक उत्तरों की संख्या ("नहीं") है, जो हमें यह गणना देता है:

1 - (7 / 13)2 - (6 / 13)2 = 0.497

अगले चरण में दो बॉक्स होते हैं, एक बॉक्स कॉमेडियन के लिए 6.5 या उससे कम के 'रैंक' के साथ, और एक बॉक्स बाकी के साथ।

सच - 5 हास्य कलाकार यहाँ समाप्त होते हैं:

gini = 0.0 इसका मतलब है कि सभी नमूनों का परिणाम एक जैसा है।

samples = 5इसका मतलब है कि इस शाखा में 5 कॉमेडियन बचे हैं (6.5 या उससे कम रैंक वाले 5 कॉमेडियन)।

value = [5, 0]इसका मतलब है कि 5 को "NO" मिलेगा और 0 को "GO" मिलेगा।

असत्य - 8 हास्य कलाकार जारी रखें:

राष्ट्रीयता

Nationality <= 0.5इसका मतलब है कि 0.5 से कम राष्ट्रीयता वाले कॉमेडियन बाईं ओर के तीर का अनुसरण करेंगे (जिसका अर्थ है यूके से सभी,), और बाकी लोग दाईं ओर वाले तीर का अनुसरण करेंगे।

gini = 0.219यानी करीब 22 फीसदी सैंपल एक ही दिशा में जाएंगे।

samples = 8इसका मतलब है कि इस शाखा में 8 कॉमेडियन बचे हैं (8 कॉमेडियन जिनकी रैंक 6.5 से अधिक है)।

value = [1, 7]इसका मतलब है कि इन 8 कॉमेडियन में से 1 को "NO" और 7 को "GO" मिलेगा।




सच - 4 कॉमेडियन जारी रखें:

उम्र

Age <= 35.5इसका मतलब है कि 35.5 या उससे कम उम्र के कॉमेडियन बाईं ओर तीर का अनुसरण करेंगे, और बाकी लोग दाईं ओर वाले तीर का अनुसरण करेंगे।

gini = 0.375इसका मतलब है कि लगभग 37,5% नमूने एक दिशा में जाएंगे।

samples = 4यानी इस ब्रांच में 4 कॉमेडियन बचे हैं (यूके से 4 कॉमेडियन)।

value = [1, 3]यानी इन 4 कॉमेडियन में से 1 को "NO" और 3 को "GO" मिलेगा।

असत्य - 4 हास्य कलाकार यहाँ समाप्त होते हैं:

gini = 0.0 इसका मतलब है कि सभी नमूनों का परिणाम एक जैसा है।

samples = 4इसका मतलब है कि इस ब्रांच में 4 कॉमेडियन बचे हैं (यूके से नहीं 4 कॉमेडियन)।

value = [0, 4]इसका मतलब है कि इन 4 कॉमेडियन में से 0 को "NO" और 4 को "GO" मिलेगा।




सच - 2 हास्य कलाकार यहाँ समाप्त होते हैं:

gini = 0.0 इसका मतलब है कि सभी नमूनों का परिणाम एक जैसा है।

samples = 2इसका मतलब है कि इस ब्रांच में 2 कॉमेडियन बचे हैं (2 कॉमेडियन जिनकी उम्र 35.5 या उससे कम है)।

value = [0, 2] इसका मतलब है कि इन 2 कॉमेडियन में से 0 को "NO" और 2 को "GO" मिलेगा।

असत्य - 2 हास्य कलाकार जारी रखें:

अनुभव

Experience <= 9.5 इसका मतलब है कि 9.5 साल या उससे कम के अनुभव वाले कॉमेडियन बाईं ओर वाले तीर का अनुसरण करेंगे, और बाकी लोग दाईं ओर वाले तीर का अनुसरण करेंगे।

gini = 0.5 इसका मतलब है कि 50% नमूने एक दिशा में जाएंगे।

samples = 2 इसका मतलब है कि इस ब्रांच में 2 कॉमेडियन बचे हैं (2 कॉमेडियन 35.5 से पुराने)।

value = [1, 1] इसका मतलब है कि इन 2 कॉमेडियन में से 1 को "NO" और 1 को "GO" मिलेगा।




सच - 1 कॉमेडियन यहाँ समाप्त होता है:

gini = 0.0 इसका मतलब है कि सभी नमूनों का परिणाम एक जैसा है।

samples = 1 यानी इस ब्रांच में 1 कॉमेडियन बचा है (9.5 साल या उससे कम के अनुभव वाले 1 कॉमेडियन)।

value = [0, 1] इसका मतलब है कि 0 को "NO" मिलेगा और 1 को "GO" मिलेगा।

असत्य - 1 हास्य कलाकार यहाँ समाप्त होता है:

gini = 0.0 इसका मतलब है कि सभी नमूनों का परिणाम एक जैसा है।

samples = 1इसका मतलब है कि इस ब्रांच में 1 कॉमेडियन बचे हैं (9.5 साल से अधिक के अनुभव वाले 1 कॉमेडियन)।

value = [1, 0]इसका मतलब है कि 1 को "NO" मिलेगा और 0 को "GO" मिलेगा।


मूल्यों की भविष्यवाणी करें

हम नए मूल्यों की भविष्यवाणी करने के लिए निर्णय वृक्ष का उपयोग कर सकते हैं।

उदाहरण: क्या मुझे एक 40 वर्षीय अमेरिकी कॉमेडियन अभिनीत शो देखने जाना चाहिए, जिसके पास 10 साल का अनुभव है, और एक कॉमेडी रैंकिंग 7 की है?

उदाहरण

नए मूल्यों की भविष्यवाणी करने के लिए भविष्यवाणी () विधि का उपयोग करें:

print(dtree.predict([[40, 10, 7, 1]]))

उदाहरण

अगर कॉमेडी रैंक 6 होती तो क्या जवाब होता?

print(dtree.predict([[40, 10, 6, 1]]))


अलग परिणाम

यदि आप इसे पर्याप्त समय तक चलाते हैं, तो भी आप देखेंगे कि निर्णय ट्री आपको अलग-अलग परिणाम देता है, भले ही आप इसे समान डेटा से भर दें।

ऐसा इसलिए है क्योंकि डिसीजन ट्री हमें 100% निश्चित उत्तर नहीं देता है। यह एक परिणाम की संभावना पर आधारित है, और उत्तर अलग-अलग होंगे।