html
पायथन में रैखिक प्रतिगमन को लागू करना और मूल्यांकन करना: एक व्यापक मार्गदर्शिका

रैखिक प्रतिगमन का परिचय
रैखिक प्रतिगमन मशीन लर्निंग और डेटा विश्लेषण में सबसे मौलिक और व्यापक रूप से उपयोग किए जाने वाले एल्गोरिदम में से एक है। यह अवलोकित डेटा पर एक रैखिक समीकरण फिट करके एक आश्रित चर और एक या अधिक स्वतंत्र चरों के बीच संबंध को मॉडल करता है। इस मार्गदर्शिका में, हम आपको scikit-learn लाइब्रेरी का उपयोग करके पायथन में रैखिक प्रतिगमन लागू करने, वास्तविक बनाम पूर्वानुमानित परिणामों की तुलना करने, और R-स्क्वायर मीट्रिक का उपयोग करके मॉडल के प्रदर्शन का मूल्यांकन करने के बारे में बताएंगे।
चाहे आप डेटा साइंस के उत्साही हों या अनुभवी पेशेवर, यह व्यापक ट्यूटोरियल आपको एक रैखिक प्रतिगमन मॉडल को प्रभावी ढंग से बनाने और आंका करने के लिए ज्ञान और व्यावहारिक कौशल प्रदान करेगा।
विषय सूची
- डेटासेट अवलोकन
- अपने पर्यावरण की सेटअप
- आवश्यक लाइब्रेरियों को आयात करना
- डेटा लोड करना और उसकी खोज करना
- डेटा का दृश्यांकन
- प्रशिक्षण के लिए डेटा तैयार करना
- रैखिक प्रतिगमन मॉडल बनाना
- भविष्यवाणियाँ करना
- वास्तविक बनाम पूर्वानुमानित परिणामों की तुलना करना
- R-स्क्वायर के साथ मॉडल का मूल्यांकन करना
- निष्कर्ष
- अधिक पठन सामग्री
डेटासेट अवलोकन
इस ट्यूटोरियल के लिए, हम Kaggle से कनाडा प्रति व्यक्ति आय डेटासेट का उपयोग करेंगे। यह डेटासेट कनाडा में कई वर्षों में वार्षिक प्रति व्यक्ति आय की जानकारी प्रदान करता है, जिससे हमें आय के रुझानों का विश्लेषण करने और एक भविष्यवाणी मॉडल बनाने में मदद मिलती है।
अपने पर्यावरण की सेटअप
कोड में गोता लगाने से पहले, सुनिश्चित करें कि आपके सिस्टम पर पायथन स्थापित है। अपने प्रोजेक्ट की निर्भरताओं को प्रबंधित करने के लिए वर्चुअल वातावरण का उपयोग करना सलाह दी जाती है। आप venv
या conda
जैसे टूल का उपयोग करके वर्चुअल वातावरण सेटअप कर सकते हैं।
123456
# Using venvpython -m venv linear_regression_envsource linear_regression_env/bin/activate # On Windows: linear_regression_env\Scripts\activate # Install necessary packagespip install numpy pandas matplotlib seaborn scikit-learn
आवश्यक लाइब्रेरियों को आयात करना
हम डेटा हेरफेर, दृश्यांकन, और हमारे प्रतिगमन मॉडल के निर्माण के लिए आवश्यक मूल लाइब्रेरियों को आयात करके शुरू करेंगे।
12345678910
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_score # Set seaborn style for better aestheticssns.set()
डेटा लोड करना और उसकी खोज करना
अगला, हम डेटासेट को Pandas DataFrame में लोड करेंगे और उसकी संरचना पर प्रारंभिक नज़र डालेंगे।
12345
# Import Datadata = pd.read_csv('canada_per_capita_income.csv') # Preview the first few rows of the datasetprint(data.head())
आउटपुट:
123456
year per capita income (US$)0 1970 3399.2990371 1971 3768.2979352 1972 4251.1754843 1973 4804.4632484 1974 5576.514583
आउटपुट से, हम देख सकते हैं कि डेटासेट में दो कॉलम हैं: year
और per capita income (US$)
.
डेटा का दृश्यांकन
विज़ुअलाइज़ेशन डेटा के अंतर्निहित पैटर्न और संबंधों को समझने में मदद करता है। हम वर्ष और प्रति व्यक्ति आय के बीच संबंध को देखने के लिए एक स्कैटर प्लॉट बनाएंगे।
12345
sns.scatterplot(data=data, x='per capita income (US$)', y='year')plt.title('Per Capita Income Over Years in Canada')plt.xlabel('Per Capita Income (US$)')plt.ylabel('Year')plt.show()

स्कैटर प्लॉट से वर्षों में प्रति व्यक्ति आय में वृद्धि के रुझान का पता चलता है। हालांकि, संबंध पूरी तरह से रैखिक नहीं हो सकता है, जो डेटा में संभावित परिवर्तनशीलता को दर्शाता है।
प्रशिक्षण के लिए डेटा तैयार करना
अपने मॉडल को प्रशिक्षण देने से पहले, हमें डेटा को तैयार करना होगा जिसमें विशेषताओं (स्वतंत्र चर) को लक्ष्य चर (आश्रित चर) से अलग किया जाता है।
123
# Define features and target variableX = data.iloc[:, :-1] # All columns except the last oneY = data.iloc[:, -1] # The last column
इस मामले में, X
में year
कॉलम शामिल है, और Y
में per capita income (US$)
शामिल है।
रैखिक प्रतिगमन मॉडल बनाना
हम अब डेटा को प्रशिक्षण और परीक्षण सेट में विभाजित करेंगे ताकि मॉडल के प्रदर्शन का अवलोकन न किए गए डेटा पर किया जा सके।
12
# Train-test splitX_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20, random_state=1)
व्याख्या:
- X_train & y_train: मॉडल को प्रशिक्षण देने के लिए उपयोग किया जाता है।
- X_test & y_test: मॉडल के प्रदर्शन का परीक्षण करने के लिए उपयोग किया जाता है।
- test_size=0.20: डेटा का 20% परीक्षण के लिए आरक्षित है।
- random_state=1: विभाजन की पुनरुत्पादन सुनिश्चित करता है।
अब, आइए रैखिक प्रतिगमन मॉडल को इन्स्टेंसिएट और प्रशिक्षित करें।
12345678
# Initialize the Linear Regression modelmodel = LinearRegression() # Fit the model to the training datamodel.fit(X_train, y_train) # Output the model detailsprint(model)
आउटपुट:
1
LinearRegression()
भविष्यवाणियाँ करना
प्रशिक्षित मॉडल के साथ, हम अब परीक्षण सेट पर भविष्यवाणियाँ कर सकते हैं।
12345
# Make predictions on the test datay_pred = model.predict(X_test) # Display the predicted valuesprint(y_pred)
आउटपुट:
123
[20349.94572643 18613.49135581 33373.35350612 29900.44476487 1248.94764955 2117.17483487 24691.081653 27295.76320894 38582.716618 22086.40009706]
ये मान परीक्षण सेट में श्रेणीबद्ध वर्षों के आधार पर प्रति व्यक्ति आय की मॉडल की भविष्यवाणियों का प्रतिनिधित्व करते हैं।
वास्तविक बनाम पूर्वानुमानित परिणामों की तुलना करना
यह आंकना करने के लिए कि हमारा मॉडल कितना अच्छा प्रदर्शन कर रहा है, हम वास्तविक मानों (y_test
) की तुलना पूर्वानुमानित मानों (y_pred
) से करेंगे।
1234567
# Create a DataFrame to compare actual and predicted valuescomparison = pd.DataFrame()comparison['Actual'] = y_testcomparison['Predicted'] = y_pred # Display the comparisonprint(comparison)
आउटपुट:
1234567891011
Actual Predicted24 15755.820270 20349.94572622 16412.083090 18613.49135639 32755.176820 33373.35350635 29198.055690 29900.4447652 4251.175484 1248.9476503 4804.463248 2117.17483529 17581.024140 24691.08165332 19232.175560 27295.76320945 35175.188980 38582.71661826 16699.826680 22086.400097
विश्लेषण:
- अच्छी भविष्यवाणियाँ: जहाँ
Actual
और Predicted
मान करीब हैं, यह दर्शाता है कि मॉडल अच्छा प्रदर्शन कर रहा है।
- अंतर: महत्वपूर्ण अंतर उन क्षेत्रों को उजागर करते हैं जहाँ मॉडल में सुधार की आवश्यकता हो सकती है या जहाँ संबंध पूरी तरह से रैखिक नहीं है।
उदाहरण के लिए, जबकि अधिकांश भविष्यवाणियाँ वास्तविक मानों के करीब हैं, कुछ अंतर, जैसे वास्तविक मान 4,251.18 बनाम पूर्वानुमानित मान 1,248.95, से पता चलता है कि डेटा में ऐसी परिवर्तनशीलता है जिसे मॉडल ने कैप्चर नहीं किया।
R-स्क्वायर के साथ मॉडल का मूल्यांकन करना
मॉडल के प्रदर्शन का मात्रात्मक मूल्यांकन करने के लिए, हम R-स्क्वायर (R²) मीट्रिक का उपयोग करेंगे। R-स्क्वायर उस प्रतिशत का प्रतिनिधित्व करता है जिसमें आश्रित चर के लिए विचलन का हिस्सा स्वतंत्र चर(ओं) द्वारा मॉडलित किया गया है।
1234
# Calculate R-squared scorer2 = r2_score(y_test, y_pred) print(f"R-squared Score: {r2:.2f}")
आउटपुट:
1
R-squared Score: 0.80
व्याख्या:
- एक R-squared मान 0.80 दर्शाता है कि प्रति व्यक्ति आय में 80% विचलन को वर्ष द्वारा समझाया गया है।
- 80% एक अच्छे फिट का मजबूत संकेत है, लेकिन इसका मतलब यह भी है कि 20% विचलन अस्पष्ट रहता है, जिसे मॉडल में विचार न किए गए अन्य कारकों या अंतर्निहित डेटा परिवर्तनशीलता के कारण हो सकता है।
R-squared मानों को समझना:
- 1: उत्कृष्ट फिट। मॉडल सभी परिवर्तनशीलता को समझाता है।
- 0: कोई व्याख्यात्मक शक्ति नहीं। मॉडल कोई भी परिवर्तनशीलता नहीं समझाता।
- नकारात्मक मान: यह दर्शाता है कि मॉडल क्षैतिज रेखा (लक्ष्य चर का माध्य) से भी बदतर प्रदर्शन कर रहा है।
निष्कर्ष
इस मार्गदर्शिका में, हमने सफलतापूर्वक पायथन में एक रैखिक प्रतिगमन मॉडल को लागू किया है ताकि कनाडा की वर्षों में प्रति व्यक्ति आय की भविष्यवाणी की जा सके। इन चरणों का पालन करके, आप:
- डेटा लोड और एक्सप्लोर करना: डेटासेट की संरचना और प्रारंभिक रुझानों को समझना।
- संबंधों का दृश्यांकन: संभावित रैखिक संबंधों की पहचान के लिए स्कैटर प्लॉट का उपयोग करना।
- डेटा तैयार करना: निष्पक्ष मूल्यांकन के लिए डेटा को प्रशिक्षण और परीक्षण सेट में विभाजित करना।
- मॉडल बनाना और प्रशिक्षण देना: scikit-learn के
LinearRegression
का उपयोग करके मॉडल को फिट करना।
- भविष्यवाणियाँ करना: प्रशिक्षित मॉडल का उपयोग करके भविष्यवाणियाँ उत्पन्न करना।
- परिणामों की तुलना करना: यह विश्लेषण करना कि पूर्वानुमानित मान वास्तविक डेटा के साथ कितने मेल खाते हैं।
- प्रदर्शन का मूल्यांकन करना: मॉडल की व्याख्यात्मक शक्ति को मात्रात्मक रूप से जानने के लिए R-squared का उपयोग करना।
हालांकि मॉडल ने सराहनीय R-squared मान दिखाया है, इसमें सुधार की गुंजाइश है। अतिरिक्त विशेषताओं की खोज, चर का परिवर्तन, या अधिक जटिल एल्गोरिदम का उपयोग करना भविष्यवाणी प्रदर्शन को बेहतर बना सकता है।
अधिक पठन सामग्री
- Scikit-learn दस्तावेज़ीकरण
- R-squared को समझना
- रैखिक प्रतिगमन के सिद्धांत
- मॉडल प्रदर्शन में सुधार करना
इस रैखिक प्रतिगमन यात्रा पर निकलना आपको विभिन्न डेटा-संचालित क्षेत्रों में लागू होने वाले बुनियादी कौशल से लैस करता है। अपने समझ और मशीन लर्निंग में दक्षता को गहराने के लिए विविध डेटासेट के साथ अभ्यास जारी रखें।
#LinearRegression #Python #MachineLearning #DataScience #ScikitLearn #R2Score #DataVisualization #PredictiveModeling #PythonTutorial