html
Python में निर्णय वृक्ष प्रतिगमन का विज़ुअलाइज़ेशन: एक व्यापक मार्गदर्शिका
Python के साथ निर्णय वृक्ष प्रतिगमन की शक्ति को अनलॉक करें! इस व्यापक मार्गदर्शिका में, हम आपको Python की शक्तिशाली पुस्तकालयों का उपयोग करके निर्णय वृक्ष प्रतिगमन मॉडल को विज़ुअलाइज़ करने के माध्यम से ले चलेंगे। चाहे आप एक नवोदित डेटा वैज्ञानिक हों या एक अनुभवी पेशेवर, अपने मॉडलों को विज़ुअलाइज़ और व्याख्या करना सूचित निर्णय लेने के लिए महत्वपूर्ण है। हम अंडरफ़िटिंग और ओवरफ़िटिंग, मॉडल मूल्यांकन, और वास्तविक दुनिया के डेटासेट का उपयोग करके व्यावहारिक कार्यान्वयन जैसे अवधारणाओं में गहराई से उतरेंगे।
सामग्री तालिका
- निर्णय वृक्ष प्रतिगमन का परिचय
- डेटासेट को समझना
- अपने वातावरण की सेटिंग अप करना
- डेटा अन्वेषण और विज़ुअलाइज़ेशन
- डेटा तैयार करना
- निर्णय वृक्ष मॉडल बनाना
- भविष्यवाणियाँ करना
- वास्तविक बनाम भविष्यवाणी किए गए मानों की तुलना
- मॉडल मूल्यांकन
- मॉडल का विज़ुअलाइज़ेशन
- अंडरफ़िटिंग और ओवरफ़िटिंग को समझना
- निष्कर्ष
1. निर्णय वृक्ष प्रतिगमन का परिचय
निर्णय वृक्ष प्रतिगमन एक बहुमुखी और शक्तिशाली मशीन लर्निंग एल्गोरिदम है जिसका उपयोग निरंतर परिणामों की भविष्यवाणी के लिए किया जाता है। रेखीय प्रतिगमन मॉडलों के विपरीत, निर्णय वृक्ष फीचरों के बीच जटिल संबंधों और इंटरैक्शनों को पकड़ सकते हैं बिना व्यापक डेटा पूर्व-संसाधन की आवश्यकता के। इन वृक्षों को विज़ुअलाइज़ करने से मॉडल की निर्णय लेने की प्रक्रिया को समझने में मदद मिलती है, जिससे परिणामों की व्याख्या और संचार करना आसान हो जाता है।
विज़ुअलाइज़ेशन क्यों महत्वपूर्ण है:
- व्याख्यात्मकता: आसानी से समझें कि मॉडल कैसे भविष्यवाणियाँ करता है।
- डिबगिंग: ओवरफ़िटिंग या अंडरफ़िटिंग जैसे मॉडल दोषों की पहचान और सुधार करें।
- संचार: स्टेकहोल्डर्स को स्पष्ट अंतर्दृष्टि प्रस्तुत करें।
2. डेटासेट को समझना
हमारे प्रदर्शन के लिए, हम Kaggle से कैनेडा प्रति व्यक्ति आय डेटासेट का उपयोग करेंगे। इस डेटासेट में 1950 से 2030 तक संयुक्त राज्य अमेरिका में वार्षिक प्रति व्यक्ति आय की जानकारी शामिल है, जिसे अमेरिकी डॉलर में मापा गया है।
नमूना डेटा:
वर्ष
प्रति व्यक्ति आय (US$)
1970
3399.30
1971
3768.30
1972
4251.18
1973
4804.46
1974
5576.51
3. अपने वातावरण की सेटिंग अप करना
कार्यान्वयन में गोता लगाने से पहले, सुनिश्चित करें कि आपके पास आवश्यक पुस्तकालय स्थापित हैं। हम जैसे पुस्तकालयों का उपयोग करेंगे numpy
, pandas
, matplotlib
, seaborn
, और scikit-learn
।
12345678
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom sklearn.model_selection import train_test_splitfrom sklearn.tree import DecisionTreeRegressorfrom sklearn.metrics import r2_scorefrom sklearn import tree
ये पुस्तकालय क्यों?
- NumPy & Pandas: कुशल डेटा हेरफेर और विश्लेषण।
- Matplotlib & Seaborn: उच्च-गुणवत्ता डेटा विज़ुअलाइज़ेशन।
- Scikit-learn: मजबूत मशीन लर्निंग उपकरण और एल्गोरिदम।
4. डेटा अन्वेषण और विज़ुअलाइज़ेशन
अपने डेटा को समझना पहला महत्वपूर्ण कदम है। चलिए वर्षों में प्रति व्यक्ति आय को विज़ुअलाइज़ करके रुझानों की पहचान करें।
123456789101112
# डेटासेट लोड करेंdata = pd.read_csv('canada_per_capita_income.csv') # पहले कुछ पंक्तियाँ प्रदर्शित करेंprint(data.head()) # स्कैटर प्लॉटsns.scatterplot(data=data, x='per capita income (US$)', y='year')plt.title('Canada Per Capita Income Over Years')plt.xlabel('Per Capita Income (US$)')plt.ylabel('Year')plt.show()
आउटपुट:
अंतरदृष्टि:
- 1970 से प्रारंभिक 2000 के दशक तक प्रति व्यक्ति आय में स्पष्ट उर्ध्वगामी प्रवृत्ति है।
- कुछ उतार-चढ़ाव आर्थिक घटनाओं को दर्शाते हैं जो आय स्तरों को प्रभावित कर सकती हैं।
5. डेटा तैयार करना
मॉडलिंग से पहले, हमें डेटा को फीचर्स (X
) और लक्ष्य (Y
) में विभाजित करना होगा, उसके बाद मॉडल के प्रदर्शन का मूल्यांकन करने के लिए ट्रेन-टेस्ट स्प्लिट करना होगा।
12345678
# फीचर्स और लक्ष्यX = data[['year']] # भविष्यवेत्ताY = data['per capita income (US$)'] # लक्ष्य # ट्रेन-टेस्ट स्प्लिटX_train, X_test, y_train, y_test = train_test_split( X, Y, test_size=0.20, random_state=1)
ट्रेन-टेस्ट स्प्लिट क्यों?
- ट्रेनिंग सेट: मॉडल को प्रशिक्षण देने के लिए।
- टेस्टिंग सेट: अनदेखे डेटा पर मॉडल के प्रदर्शन का मूल्यांकन करने के लिए।
6. निर्णय वृक्ष मॉडल बनाना
डेटा तैयार हो जाने के बाद, चलिए एक Decision Tree Regressor बनाते और प्रशिक्षित करते हैं।
12345
# अधिकतम गहराई 10 के साथ मॉडल का प्रारंभmodel = DecisionTreeRegressor(max_depth=10) # मॉडल को प्रशिक्षित करेंmodel.fit(X_train, y_train)
परिमाणों की व्याख्या:
- max_depth: वृक्ष की अधिकतम गहराई को नियंत्रित करता है। गहरे वृक्ष अधिक जटिल पैटर्न पकड़ सकते हैं लेकिन ओवरफ़िट हो सकते हैं।
7. भविष्यवाणियाँ करना
प्रशिक्षण के बाद, मॉडल का उपयोग टेस्ट डेटासेट पर भविष्यवाणियाँ करने के लिए करें।
12345
# भविष्यवाणियाँ करेंy_pred = model.predict(X_test) # भविष्यवाणियों को प्रदर्शित करेंprint(y_pred)
नमूना आउटपुट:
12
[15875.58673 17266.09769 37446.48609 25719.14715 3768.297935 5576.514583 16622.67187 18601.39724 41039.8936 16369.31725]
8. वास्तविक बनाम भविष्यवाणी किए गए मानों की तुलना
प्रदर्शन का आकलन करने के लिए वास्तविक मानों की तुलना मॉडल की भविष्यवाणियों से करना आवश्यक है।
1234567
# एक तुलना डेटा फ़्रेम बनाएंcomparison = pd.DataFrame({ 'Actual': y_test, 'Predicted': y_pred}) print(comparison)
नमूना आउटपुट:
Actual
Predicted
24
15755.82
15875.59
22
16412.08
17266.10
39
32755.18
37446.49
35
29198.06
25719.15
2
4251.17
3768.30
3
4804.46
5576.51
29
17581.02
16622.67
32
19232.18
18601.40
45
35175.19
41039.89
26
16699.83
16369.32
विज़ुअलाइज़ेशन:
1234567
plt.scatter(X_test, y_test, color='blue', label='Actual')plt.scatter(X_test, y_pred, color='red', label='Predicted')plt.title('Actual vs Predicted Per Capita Income')plt.xlabel('Year')plt.ylabel('Per Capita Income (US$)')plt.legend()plt.show()
9. मॉडल मूल्यांकन
मॉडल के प्रदर्शन का मात्रात्मक रूप से आकलन करने के लिए, हम R² स्कोर का उपयोग करेंगे, जो इंगित करता है कि मॉडल लक्ष्य डेटा की विविधता को कितनी अच्छी तरह से समझाता है।
123
# R2 स्कोर की गणना करेंr2 = r2_score(y_test, y_pred)print(f"R² Score: {r2:.2f}")
आउटपुट:
1
R² Score: 0.93
व्याख्या:
- 0.93 का R² स्कोर यह दर्शाता है कि प्रति व्यक्ति आय में 93% की विविधता मॉडल द्वारा समझाई गई है।
- यह एक मजबूत भविष्यवाणीक प्रदर्शन को सूचित करता है।
10. मॉडल का विज़ुअलाइज़ेशन
विज़ुअलाइज़ेशन मॉडल की निर्णय लेने की प्रक्रिया को समझने में मदद करता है। हम प्रतिगमन वृक्ष और मॉडल की भविष्यवाणियों को प्लॉट करेंगे।
वर्षों की एक श्रृंखला पर भविष्यवाणियों को प्लॉट करना
1234567891011121314
# भविष्यवाणी के लिए वर्षों की एक श्रृंखला परिभाषित करेंvals = np.arange(1950, 2050, 2).reshape(-1, 1) # मॉडल का उपयोग करके भविष्यवाणी करेंpredictions = model.predict(vals) # प्लॉट करेंplt.scatter(X, Y, color='blue', label='Data')plt.plot(vals, predictions, color='red', label='Decision Tree Prediction')plt.title('Decision Tree Regression Model')plt.xlabel('Year')plt.ylabel('Per Capita Income (US$)')plt.legend()plt.show()
निर्णय वृक्ष संरचना का विज़ुअलाइज़ेशन
वृक्ष संरचना को समझना यह व्याख्या करने के लिए महत्वपूर्ण है कि निर्णय कैसे लिए जाते हैं।
12345
# निर्णय वृक्ष को प्लॉट करेंplt.figure(figsize=(25,15))tree.plot_tree(model, fontsize=10, feature_names=['Year'], filled=True)plt.title('Decision Tree Structure')plt.show()
11. अंडरफ़िटिंग और ओवरफ़िटिंग को समझना
मॉडल जटिलता को संतुलित करना महत्वपूर्ण है। चलिए देखते हैं कि max_depth
पैरामीटर में बदलाव मॉडल के प्रदर्शन को कैसे प्रभावित करता है।
अंडरफ़िटिंग:
- परिभाषा: मॉडल बहुत सरल है, न तो प्रवृत्ति को पकड़ता है न ही शोर को।
- संकेतक: कम R² स्कोर, प्रशिक्षण और परीक्षण डेटा दोनों पर खराब प्रदर्शन।
123456
# कम max_depth के साथ मॉडल प्रारंभ करेंunderfit_model = DecisionTreeRegressor(max_depth=2)underfit_model.fit(X_train, y_train)under_pred = underfit_model.predict(X_test)under_r2 = r2_score(y_test, under_pred)print(f"Underfitted Model R² Score: {under_r2:.2f}")
आउटपुट:
1
Underfitted Model R² Score: 0.65
विज़ुअलाइज़ेशन:
व्याख्या:
- मॉडल अंतर्निहित प्रवृत्ति को पकड़ने में असफल रहता है, जिससे भविष्यवाणियों में अशुद्धता आती है।
ओवरफ़िटिंग:
- परिभाषा: मॉडल बहुत जटिल है, प्रवृत्ति के साथ शोर को भी पकड़ रहा है।
- संकेतक: प्रशिक्षण डेटा पर उच्च R² लेकिन परीक्षण डेटा पर खराब सामान्यीकरण।
123456
# उच्च max_depth के साथ मॉडल प्रारंभ करेंoverfit_model = DecisionTreeRegressor(max_depth=10)overfit_model.fit(X_train, y_train)over_pred = overfit_model.predict(X_test)over_r2 = r2_score(y_test, over_pred)print(f"Overfitted Model R² Score: {over_r2:.2f}")
आउटपुट:
1
Overfitted Model R² Score: 0.92
विज़ुअलाइज़ेशन:
व्याख्या:
- मॉडल प्रशिक्षण डेटा को अत्यधिक अच्छी तरह से फिट करता है लेकिन इसकी जटिलता के कारण अनदेखे डेटा के साथ संघर्ष कर सकता है।
अनुकूल गहराई:
संतुलन खोजना यह सुनिश्चित करता है कि मॉडल न तो बहुत सरल हो और न ही अत्यधिक जटिल, जिससे बेहतर सामान्यीकरण सुनिश्चित होता है।
12. निष्कर्ष
निर्णय वृक्ष प्रतिगमन मॉडलों का विज़ुअलाइज़ेशन उनके निर्णय लेने की प्रक्रियाओं, प्रदर्शन, और अंडरफ़िटिंग और ओवरफ़िटिंग जैसे संभावित खामियों के बारे में अमूल्य अंतर्दृष्टि प्रदान करता है। max_depth
जैसे पैरामीटरों को समायोजित करके, आप मॉडल की जटिलता को अपने डेटा की सूक्ष्मताओं के अनुरूप अनुकूलित कर सकते हैं, जिससे मजबूत और विश्वसनीय भविष्यवाणियाँ सुनिश्चित होती हैं।
मुख्य निष्कर्ष:
- मॉडल विज़ुअलाइज़ेशन: व्याख्यात्मकता और डिबगिंग के लिए आवश्यक।
- अंडरफ़िटिंग बनाम ओवरफ़िटिंग: अनुकूल प्रदर्शन के लिए जटिलता का संतुलन आवश्यक है।
- मूल्यांकन मीट्रिक: मॉडल के प्रदर्शन को मात्रात्मक रूप से मापने के लिए R² स्कोर का उपयोग करें।
इन विज़ुअलाइज़ेशन तकनीकों को अपनाकर अपने डेटा साइंस प्रोजेक्ट्स को बेहतर बनाएं, जिससे आपके मॉडल न केवल सटीक बल्कि पारदर्शी और विश्वसनीय भी हों।
निर्णय वृक्ष प्रतिगमन और इसके विज़ुअलाइज़ेशन में महारत हासिल करके अपने डेटा साइंस यात्रा को उन्नत करें। अपने विश्लेषणात्मक कौशल को बढ़ाने के लिए अधिक ट्यूटोरियल और अंतर्दृष्टि के लिए जुड़े रहें!