उन्नत प्रतिगमन मॉडलों के साथ कार मूल्य पूर्वानुमान में महारत: एक व्यापक मार्गदर्शिका
सामग्री सूचि
- परिचय
- डेटासेट अवलोकन
- डेटा आयात और प्रारंभिक अन्वेषण
- डेटा सफाई और पूर्वप्रसंस्करण
- विशेषता चयन और एन्कोडिंग
- प्रशिक्षण-परीक्षण विभाजन
- विशेषता स्केलिंग
- प्रतिगमन मॉडलों का निर्माण और मूल्यांकन
- मॉडल प्रदर्शन तुलना
- निष्कर्ष
परिचय
पूर्वानुमानात्मक विश्लेषिकी व्यवसायों को भविष्य के रुझानों की भविष्यवाणी करने, संचालन को अनुकूलित करने और निर्णय-निर्माण प्रक्रियाओं को बेहतर बनाने में सक्षम बनाती है। कार मूल्य पूर्वानुमान एक मौलिक उदाहरण है जहां मशीन लर्निंग मॉडल वाहन के ब्रांड, इंजन विनिर्देशों, ईंधन प्रकार और अन्य गुणों के आधार पर कार की कीमत का पूर्वानुमान लगा सकते हैं। यह मार्गदर्शिका डेटा पूर्वप्रसंस्करण से लेकर कई प्रतिगमन एल्गोरिदम के मूल्यांकन तक एक व्यापक प्रतिगमन मॉडल पाइपलाइन बनाने के चरणों के माध्यम से आपके मार्गदर्शन के लिए तैयार की गई है।
डेटासेट अवलोकन
Kaggle पर कार मूल्य पूर्वानुमान डेटासेट 205 प्रविष्टियों के साथ 26 विशेषताओं वाला एक समृद्ध संसाधन है। इन विशेषताओं में कारों के विभिन्न पहलू शामिल हैं, जैसे दरवाजों की संख्या, इंजन आकार, हॉर्सपावर, ईंधन प्रकार, और अन्य, जो सभी कार की बाजार कीमत को प्रभावित करते हैं।
मुख्य विशेषताएं:
CarName
: कार का नाम (ब्रांड और मॉडल)FuelType
: उपयोग किया गया ईंधन का प्रकार (जैसे, गैस, डीजल)Aspiration
: इंजन प्रेरणा प्रकारDoornumber
: दरवाजों की संख्या (दो या चार)Enginesize
: इंजन का आकारHorsepower
: इंजन की शक्तिPrice
: कार की बाजार कीमत (लक्ष्य चर)
डेटा आयात और प्रारंभिक अन्वेषण
सबसे पहले, हम pandas का उपयोग करके डेटासेट को आयात करते हैं और डेटा संरचना पर एक प्रारंभिक नजर डालते हैं।
1 2 3 4 5 6 7 |
import pandas as pd # Load the dataset data = pd.read_csv('CarPrice.csv') # Display the first five rows print(data.head()) |
नमूना आउटपुट:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
car_ID symboling CarName fueltype aspiration doornumber \ 0 1 3 alfa-romero giulia gas std two 1 2 3 alfa-romero stelvio gas std two 2 3 1 alfa-romero Quadrifoglio gas std two 3 4 2 audi 100 ls gas std four 4 5 2 audi 100ls gas std four carbody drivewheel enginelocation wheelbase ... horsepower peakrpm citympg \ 0 convertible rwd front 88.6 ... 111.0 5000 21 1 convertible rwd front 88.6 ... 111.0 5000 21 2 hatchback rwd front 94.5 ... 154.0 5000 19 3 sedan fwd front 99.8 ... 102.0 5500 24 4 sedan 4wd front 99.4 ... 115.0 5500 18 highwaympg price 0 27 13495.0 1 27 16500.0 2 26 16500.0 3 30 13950.0 4 22 17450.0 |
डेटा सफाई और पूर्वप्रसंस्करण
गुम संख्यात्मक डेटा को संभालना
गुम मान मशीन लर्निंग मॉडलों के प्रदर्शन को काफी हद तक प्रभावित कर सकते हैं। हम सबसे पहले गुम संख्यात्मक डेटा को माध्य मान के साथ प्रतिपूर्ति करके उसे संबोधित करते हैं।
1 2 3 4 5 6 7 8 9 10 11 12 |
import numpy as np from sklearn.impute import SimpleImputer # Identify numerical columns numerical_cols = list(np.where((X.dtypes == np.int64) | (X.dtypes == np.float64))[0]) # Initialize imputer imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') imp_mean.fit(X.iloc[:, numerical_cols]) # Impute missing numerical data X.iloc[:, numerical_cols] = imp_mean.transform(X.iloc[:, numerical_cols]) |
गुम श्रेणीबद्ध डेटा को संभालना
श्रेणीबद्ध परिवर्तनीयों के लिए, गुम मानों को सबसे सामान्य रणनीति का उपयोग करके प्रतिपूर्ति किया जाता है।
1 2 3 4 5 6 7 8 9 |
# Identify categorical columns string_cols = list(np.where((X.dtypes == np.object))[0]) # Initialize imputer for categorical data imp_freq = SimpleImputer(missing_values=np.nan, strategy='most_frequent') imp_freq.fit(X.iloc[:, string_cols]) # Impute missing categorical data X.iloc[:, string_cols] = imp_freq.transform(X.iloc[:, string_cols]) |
विशेषता चयन और एन्कोडिंग
अनुचित विशेषताओं को हटाना
car_ID
कॉलम एक अद्वितीय पहचानकर्ता है और मॉडल की भविष्यवाणी क्षमता में योगदान नहीं देता है। इसलिए, इसे हटा दिया जाता है।
1 2 |
# Drop 'car_ID' column X.drop('car_ID', axis=1, inplace=True) |
श्रृंगारी परिवर्तनीयों का वन-हॉट एन्कोडिंग
मशीन लर्निंग एल्गोरिदम को संख्यात्मक इनपुट की आवश्यकता होती है। इसलिए, श्रेणीबद्ध परिवर्तनीयों को वन-हॉट एन्कोडिंग का उपयोग करके परिवर्तित किया जाता है।
1 2 3 4 5 6 7 8 9 10 11 12 |
from sklearn.preprocessing import OneHotEncoder from sklearn.compose import ColumnTransformer # Re-identify categorical columns after dropping 'car_ID' string_cols = list(np.where((X.dtypes == np.object))[0]) # Apply One-Hot Encoding columnTransformer = ColumnTransformer( [('encoder', OneHotEncoder(), string_cols)], remainder='passthrough' ) X = columnTransformer.fit_transform(X) |
एन्कोडिंग से पहले:
- आकृति: (205, 24)
एन्कोडिंग के बाद:
- आकृति: (205, 199)
प्रशिक्षण-परीक्षण विभाजन
डेटासेट को प्रशिक्षण और परीक्षण सेटों में विभाजित करना मॉडल के प्रदर्शन के मूल्यांकन के लिए महत्वपूर्ण है।
1 2 3 4 5 6 7 8 9 |
from sklearn.model_selection import train_test_split # Perform train-test split X_train, X_test, y_train, y_test = train_test_split( X, Y, test_size=0.20, random_state=1 ) print(f"Training set shape: {X_train.shape}") print(f"Testing set shape: {X_test.shape}") |
आउटपुट:
1 2 |
Training set shape: (164, 199) Testing set shape: (41, 199) |
विशेषता स्केलिंग
विशेषता स्केलिंग यह सुनिश्चित करती है कि सभी विशेषताएं मॉडल के प्रदर्शन में समान रूप से योगदान दें। यहां, हम मानकीकरण का उपयोग करते हैं।
1 2 3 4 5 6 7 8 9 |
from sklearn import preprocessing # Initialize StandardScaler sc = preprocessing.StandardScaler(with_mean=False) sc.fit(X_train) # Transform the data X_train = sc.transform(X_train) X_test = sc.transform(X_test) |
प्रतिगमन मॉडलों का निर्माण और मूल्यांकन
हम कई प्रतिगमन मॉडलों का अन्वेषण करेंगे, प्रत्येक का मूल्यांकन R² स्कोर के आधार पर करेंगे।
1. रैखिक प्रतिगमन
रैखिक प्रतिगमन एक आधाररेखा मॉडल के रूप में कार्य करता है।
1 2 3 4 5 6 7 8 9 10 11 |
from sklearn.linear_model import LinearRegression from sklearn.metrics import r2_score # Initialize and train the model model = LinearRegression() model.fit(X_train, y_train) # Predict and evaluate y_pred = model.predict(X_test) r2 = r2_score(y_test, y_pred) print(f"Linear Regression R² Score: {r2:.2f}") |
R² स्कोर: 0.097
व्याख्या: यह मॉडल कार की कीमत के विचलन का लगभग 9.7% व्याख्या करता है।
2. बहुपद रैखिक प्रतिगमन
गैर-रेखीय संबंधों को पकड़ने के लिए, हम बहुपद विशेषताओं को पेश करते हैं।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from sklearn.preprocessing import PolynomialFeatures # Initialize PolynomialFeatures poly = PolynomialFeatures(degree=2) X_train_poly = poly.fit_transform(X_train) X_test_poly = poly.transform(X_test) # Train the model model = LinearRegression() model.fit(X_train_poly, y_train) # Predict and evaluate y_pred = model.predict(X_test_poly) r2 = r2_score(y_test, y_pred) print(f"Polynomial Linear Regression R² Score: {r2:.2f}") |
R² स्कोर: -0.45
व्याख्या: यह मॉडल आधाररेखा से भी खराब प्रदर्शन करता है, कार कीमत के विचलन का -45% व्याख्या करता है।
3. निर्णय वृक्ष प्रतिगमन
निर्णय वृक्ष डेटा को विभाजित करके जटिल संबंधों की मॉडलिंग कर सकता है।
1 2 3 4 5 6 7 8 9 10 |
from sklearn.tree import DecisionTreeRegressor # Initialize and train the model model = DecisionTreeRegressor(max_depth=4) model.fit(X_train, y_train) # Predict and evaluate y_pred = model.predict(X_test) r2 = r2_score(y_test, y_pred) print(f"Decision Tree Regression R² Score: {r2:.2f}") |
R² स्कोर: 0.88
व्याख्या: एक महत्वपूर्ण सुधार, विचलन का 88% व्याख्या करता है।
4. रैंडम फॉरेस्ट प्रतिगमन
रैंडम फॉरेस्ट कई निर्णय वृक्षों को समेकित करके प्रदर्शन को बढ़ाता है और ओवरफिटिंग को कम करता है।
1 2 3 4 5 6 7 8 9 10 |
from sklearn.ensemble import RandomForestRegressor # Initialize and train the model model = RandomForestRegressor(n_estimators=25, random_state=10) model.fit(X_train, y_train) # Predict and evaluate y_pred = model.predict(X_test) r2 = r2_score(y_test, y_pred) print(f"Random Forest Regression R² Score: {r2:.2f}") |
R² स्कोर: 0.91
व्याख्या: उत्कृष्ट प्रदर्शन, कार कीमत के विचलन का 91% व्याख्या करता है।
5. एडा बूस्ट प्रतिगमन
एडा बूस्ट कमजोर शिक्षार्थियों को एक साथ जोड़कर एक मजबूत भविष्यवक्ता बनाता है, गलतियों पर ध्यान केंद्रित करके।
1 2 3 4 5 6 7 8 9 10 |
from sklearn.ensemble import AdaBoostRegressor # Initialize and train the model model = AdaBoostRegressor(random_state=0, n_estimators=100) model.fit(X_train, y_train) # Predict and evaluate y_pred = model.predict(X_test) r2 = r2_score(y_test, y_pred) print(f"AdaBoost Regression R² Score: {r2:.2f}") |
R² स्कोर: 0.88
व्याख्या: निर्णय वृक्ष के समान, विचलन का 88% व्याख्या करता है।
6. एक्सजीबूस्ट प्रतिगमन
एक्सजीबूस्ट एक शक्तिशाली ग्रेडिएंट बूस्टिंग फ्रेमवर्क है, जो इसकी दक्षता और प्रदर्शन के लिए जाना जाता है।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import xgboost as xgb # Initialize and train the model model = xgb.XGBRegressor( n_estimators=100, reg_lambda=1, gamma=0, max_depth=3, learning_rate=0.05 ) model.fit(X_train, y_train) # Predict and evaluate y_pred = model.predict(X_test) r2 = r2_score(y_test, y_pred) print(f"XGBoost Regression R² Score: {r2:.2f}") |
R² स्कोर: 0.89
व्याख्या: मजबूत प्रदर्शन, विचलन का 89% व्याख्या करता है।
7. सपोर्ट वेक्टर प्रतिगमन (SVR)
SVR उच्च-आयामी स्थानों में प्रभावी है लेकिन बड़े डेटासेट के साथ अंडरपरफॉर्म कर सकता है।
1 2 3 4 5 6 7 8 9 10 |
from sklearn.svm import SVR # Initialize and train the model model = SVR() model.fit(X_train, y_train) # Predict and evaluate y_pred = model.predict(X_test) r2 = r2_score(y_test, y_pred) print(f"Support Vector Regression (SVR) R² Score: {r2:.2f}") |
R² स्कोर: -0.03
व्याख्या: खराब प्रदर्शन, विचलन का -3% व्याख्या करता है।
मॉडल प्रदर्शन तुलना
मॉडल | R² स्कोर |
---|---|
रैखिक प्रतिगमन | 0.10 |
बहुपद रैखिक प्रतिगमन | -0.45 |
निर्णय वृक्ष प्रतिगमन | 0.88 |
रैंडम फॉरेस्ट प्रतिगमन | 0.91 |
एडा बूस्ट प्रतिगमन | 0.88 |
एक्सजीबूस्ट प्रतिगमन | 0.89 |
सपोर्ट वेक्टर प्रतिगमन (SVR) | -0.03 |
जानकारी:
- रैंडम फॉरेस्ट प्रतिगमन ने सभी अन्य मॉडलों की तुलना में उत्कृष्ट प्रदर्शन किया है, R² स्कोर 0.91 के साथ, जो यह दर्शाता है कि यह कार कीमत के विचलन का 91% व्याख्या करता है।
- बहुपद रैखिक प्रतिगमन ने सबसे खराब प्रदर्शन किया, यहां तक कि आधाररेखा मॉडल से भी खराब, जो ओवरफिटिंग या अनुचित विशेषता रूपांतरण का सुझाव देता है।
- सपोर्ट वेक्टर प्रतिगमन (SVR) ने इस डेटासेट के साथ संघर्ष किया, संभवतः एन्कोडिंग के बाद उच्च आयामीता के कारण।
निष्कर्ष
कार मूल्य पूर्वानुमान के लिए पूर्वानुमानात्मक मॉडलिंग सही एल्गोरिदम चुनने और व्यापक डेटा पूर्वप्रसंस्करण के महत्व को रेखांकित करती है। हमारे अन्वेषण में:
- निर्णय वृक्ष और रैंडम फॉरेस्ट मॉडल ने उत्कृष्ट प्रदर्शन दिखाया, जिसमें रैंडम फॉरेस्ट थोड़ा आगे था।
- एन्सेम्बल विधियाँ जैसे एडा बूस्ट और एक्सजीबूस्ट ने भी मजबूत परिणाम दिखाए, जो जटिल डेटासेट को संभालने में उनकी क्षमता को दर्शाते हैं।
- रैखिक मॉडल, विशेष रूप से जब उन्हें बहुपद विशेषताओं में विस्तारित किया जाता है, हमेशा बेहतर प्रदर्शन नहीं दे सकते और कभी-कभी मॉडल की दक्षता को कम कर सकते हैं।
- सपोर्ट वेक्टर प्रतिगमन (SVR) उच्च आयामीता वाले डेटासेट या जहां गैर-रेखीय पैटर्न कम स्पष्ट हैं, उन डेटासेट के लिए सबसे अच्छा फिट नहीं हो सकता है।
मुख्य निष्कर्ष:
- डेटा पूर्वप्रसंस्करण: गुम मानों को संभालना और श्रेणीबद्ध परिवर्तनीयों को एन्कोड करना महत्वपूर्ण कदम हैं जो मॉडल के प्रदर्शन को काफी प्रभावित करते हैं।
- विशेषता स्केलिंग: यह सुनिश्चित करता है कि सभी विशेषताएं समान रूप से योगदान दें, जो ग्रेडिएंट-आधारित एल्गोरिदम की दक्षता में सुधार करता है।
- मॉडल चयन: एन्सेम्बल विधियाँ जैसे रैंडम फॉरेस्ट और एक्सजीबूस्ट अक्सर प्रतिगमन कार्यों में श्रेष्ठ प्रदर्शन प्रदान करती हैं।
- मॉडल मूल्यांकन: R² स्कोर एक मूल्यवान मीट्रिक है यह आंकलन करने के लिए कि भविष्यवाणियाँ वास्तविक परिणामों के कितनी करीब हैं।
उन्नत प्रतिगमन मॉडलों का उपयोग करके कार मूल्य पूर्वानुमान पर काम करना न केवल भविष्यवाणी की सटीकता को बढ़ाता है बल्कि स्टेकहोल्डर्स को बाजार की गतिशीलताओं में व्यावहारिक अंतर्दृष्टि भी प्रदान करता है। जैसे-जैसे मशीन लर्निंग का क्षेत्र विकसित होता रहता है, नवीनतम एल्गोरिदम और तकनीकों के साथ अपडेट रहना डेटा प्रेमियों और पेशेवरों दोनों के लिए आवश्यक है।