html
मशीन लर्निंग के लिए डेटा प्रीप्रोसेसिंग और मॉडल निर्माण का व्यापक मार्गदर्शिका
सामग्री की सूची
- परिचय
- डेटा आयात करना और उसका अन्वेषण करना
- गायब डेटा को संभालना
- श्रेणीबद्ध वेरिएबल्स को एन्कोड करना
- फीचर चयन
- ट्रेन-टेस्ट विभाजन
- फीचर स्केलिंग
- रेग्रेशन मॉडल का निर्माण
- मॉडल मूल्यांकन
- निष्कर्ष
1. परिचय
डेटा प्रीप्रोसेसिंग मशीन लर्निंग पाइपलाइन का एक महत्वपूर्ण चरण है। इसमें कच्चे डेटा को मॉडलिंग के लिए उपयुक्त प्रारूप में परिवर्तित करना शामिल है, जिससे भविष्यवाणी मॉडल की प्रदर्शन और सटीकता में सुधार होता है। यह लेख एक चरण-दर-चरण प्रक्रिया को दर्शाता है जिसमें डेटा प्रीप्रोसेसिंग और मॉडल निर्माण शामिल है, जिसका उपयोग एक मौसम डेटा सेट से किया गया है जो कागल से प्राप्त किया गया है।
2. डेटा आयात करना और उसका अन्वेषण करना
प्रीप्रोसेसिंग में डुबकी लगाने से पहले, यह आवश्यक है कि डेटा सेट को लोड किया जाए और उसकी समझ हासिल की जाए।
12345678
import pandas as pdimport seaborn as sns # Load the datasetdata = pd.read_csv('weatherAUS.csv') # Display the last five rowsprint(data.tail())
नमूना आउटपुट:
12
Date Location MinTemp MaxTemp Rainfall Evaporation Sunshine WindGustDir WindGustSpeed WindDir9am ... Humidity3pm Pressure9am Pressure3pm Cloud9am Cloud3pm Temp9am Temp3pm RainToday RISK_MM RainTomorrow 142188 2017-06-20 Uluru 3.5 21.8 0.0 NaN NaN E 31.0 ESE ... 27.0 1024.7 1021.2 NaN NaN 9.4 20.9 No 0.0 No
डेटासेट की संरचना को समझना प्रभावी प्रीप्रोसेसिंग के लिए अत्यंत महत्वपूर्ण है। डेटा प्रकार और सांख्यिकीय सारांशों की जानकारी प्राप्त करने के लिए .info()
और .describe()
का उपयोग करें।
3. गायब डेटा को संभालना
गायब डेटा आपके विश्लेषण के परिणामों को विकृत कर सकता है। उन्हें उचित तरीके से संभालना अत्यंत आवश्यक है।
संख्यात्मक डेटा
संख्यात्मक स्तंभों के लिए, गायब मानों को मीन, मेडियन, या मोड जैसी रणनीतियों का उपयोग करके इम्युट किया जा सकता है।
1234567891011
import numpy as npfrom sklearn.impute import SimpleImputer # Identify numerical columnsnumerical_cols = list(np.where((X.dtypes == np.int64) | (X.dtypes == np.float64))[0]) # Initialize the imputer with a mean strategyimp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') # Fit and transform the dataX.iloc[:, numerical_cols] = imp_mean.fit_transform(X.iloc[:, numerical_cols])
श्रेणीबद्ध डेटा
श्रेणीबद्ध स्तंभों के लिए, गायब मानों को सबसे अधिक बार आने वाले मान का उपयोग करके इम्युट किया जा सकता है।
12345678
# Identify string columnsstring_cols = list(np.where((X.dtypes == object))[0]) # Initialize the imputer with the most frequent strategyimp_freq = SimpleImputer(missing_values=np.nan, strategy='most_frequent') # Fit and transform the dataX.iloc[:, string_cols] = imp_freq.fit_transform(X.iloc[:, string_cols])
4. श्रेणीबद्ध वेरिएबल्स को एन्कोड करना
मशीन लर्निंग मॉडल्स को संख्यात्मक इनपुट की आवश्यकता होती है। इसलिए, श्रेणीबद्ध वेरिएबल्स को उपयुक्त रूप से एन्कोड करना आवश्यक है।
लेबल एन्कोडिंग
लेबल एन्कोडिंग श्रेणीबद्ध लेबल्स को संख्यात्मक मानों में परिवर्तित करती है। यह द्विआधारी श्रेणियों या क्रमबद्ध डेटा के लिए उपयुक्त है।
12345
from sklearn import preprocessing def LabelEncoderMethod(series): le = preprocessing.LabelEncoder() return le.fit_transform(series)
वन-हॉट एन्कोडिंग
वन-हॉट एन्कोडिंग श्रेणीबद्ध वेरिएबल्स को बाइनरी मैट्रिक्स में परिवर्तित करती है। यह दो से अधिक श्रेणियों वाले नाममात्र डेटा के लिए आदर्श है।
123456
from sklearn.compose import ColumnTransformerfrom sklearn.preprocessing import OneHotEncoder def OneHotEncoderMethod(indices, data): columnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), indices)], remainder='passthrough') return columnTransformer.fit_transform(data)
थ्रेशोल्ड के आधार पर एन्कोडिंग चयन
एन्कोडिंग प्रक्रिया को सरल बनाने के लिए, आप एक ऐसी फंक्शन बना सकते हैं जो प्रत्येक स्तंभ में श्रेणियों की संख्या के आधार पर एन्कोडिंग विधि का चयन करे।
12345678910111213141516171819
def EncodingSelection(X, threshold=10): # Select string columns string_cols = list(np.where((X.dtypes == object))[0]) one_hot_encoding_indices = [] # Decide on encoding based on the number of unique categories for col in string_cols: length = len(pd.unique(X[X.columns[col]])) if length == 2 or length > threshold: X[X.columns[col]] = LabelEncoderMethod(X[X.columns[col]]) else: one_hot_encoding_indices.append(col) # Apply One-Hot Encoding to selected columns X = OneHotEncoderMethod(one_hot_encoding_indices, X) return X # Apply encoding selectionX = EncodingSelection(X)
5. फीचर चयन
फीचर चयन में मॉडल निर्माण के लिए सबसे प्रासंगिक फीचर्स का चयन शामिल है। सहसंबंध विश्लेषण, हीटमैप्स, और SelectKBest जैसी विधियों का उपयोग करके प्रभावी फीचर्स की पहचान की जा सकती है।
6. ट्रेन-टेस्ट विभाजन
डेटासेट को प्रशिक्षण और परीक्षण सेट में विभाजित करना यह सुनिश्चित करने के लिए अनिवार्य है कि मॉडल अप्रत्यक्ष डेटा पर प्रभावी ढंग से कार्य करे।
1234567
from sklearn.model_selection import train_test_split # Split the dataX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=1) print(X_train.shape)# Output: (164, 199)
7. फीचर स्केलिंग
फीचर स्केलिंग यह सुनिश्चित करती है कि सभी फीचर्स परिणाम में समान रूप से योगदान दें। यह ग्रेडियेंट डिसेंट के सममिलन को तेज करने में सहायक होती है।
मानकीकरण
मानकीकरण डेटा को शून्य के माध्य और एक के मानक विचलन के साथ परिवर्तित करती है।
12345678910
from sklearn import preprocessing sc = preprocessing.StandardScaler(with_mean=False)sc.fit(X_train) X_train = sc.transform(X_train)X_test = sc.transform(X_test) print(X_train.shape)# Output: (164, 199)
सामानिकीकरण
सामानिकीकरण डेटा को एक निश्चित सीमा, आमतौर पर 0 और 1 के बीच बढ़ाती है।
12345
from sklearn.preprocessing import MinMaxScaler min_max_scaler = MinMaxScaler()X_train = min_max_scaler.fit_transform(X_train)X_test = min_max_scaler.transform(X_test)
8. रेग्रेशन मॉडल का निर्माण
एक बार डेटा प्रीप्रोसेस हो जाने के बाद, विभिन्न रेग्रेशन मॉडल बनाए जा सकते हैं और उनका मूल्यांकन किया जा सकता है। नीचे कई लोकप्रिय रेग्रेशन एल्गोरिदम का कार्यान्वयन दिया गया है।
लीनियर रेग्रेशन
एक मौलिक एल्गोरिदम जो आश्रित वेरिएबल और एक या अधिक स्वतंत्र वेरिएबल्स के बीच संबंध को मॉडल करता है।
123456789101112
from sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_score # Initialize and train the modelmodel = LinearRegression()model.fit(X_train, y_train) # Predict and evaluatey_pred = model.predict(X_test)score = r2_score(y_test, y_pred)print(f"Linear Regression R2 Score: {score}")# Output: 0.09741670577134398
पॉलीनोमियल रेग्रेशन
लीनियर मॉडल को पॉलीनोमियल टर्म्स जोड़कर बढ़ाता है, जिससे गैर-रेखीय संबंधों को कैप्चर किया जा सके।
123456789101112131415
from sklearn.linear_model import LinearRegressionfrom sklearn.preprocessing import PolynomialFeatures # Initialize polynomial features and linear regressionpoly = PolynomialFeatures(degree=2)X_train_poly = poly.fit_transform(X_train)model = LinearRegression() # Train and predictmodel.fit(X_train_poly, y_train)X_test_poly = poly.transform(X_test)y_pred = model.predict(X_test_poly)score = r2_score(y_test, y_pred)print(f"Polynomial Regression R2 Score: {score}")# Output: -0.4531422286977287
नोट: नकारात्मक R² स्कोर खराब मॉडल प्रदर्शन को दर्शाता है।
डिसीजन ट्री रेग्रेशन
एक गैर-रेखीय मॉडल जो फीचर मानों के आधार पर डेटा को उपसमूहों में विभाजित करता है।
1234567891011
from sklearn.tree import DecisionTreeRegressor # Initialize and train the modelmodel = DecisionTreeRegressor(max_depth=4)model.fit(X_train, y_train) # Predict and evaluatey_pred = model.predict(X_test)score = r2_score(y_test, y_pred)print(f"Decision Tree Regressor R2 Score: {score}")# Output: 0.883961900453219
रैंडम फॉरेस्ट रेग्रेशन
एक एंसेंबल मेथड जो कई डिसीजन ट्रीज़ को मिलाकर प्रदर्शन में सुधार करता है और ओवरफिटिंग को कम करता है।
1234567891011
from sklearn.ensemble import RandomForestRegressor # Initialize and train the modelmodel = RandomForestRegressor(n_estimators=25, random_state=10)model.fit(X_train, y_train) # Predict and evaluatey_pred = model.predict(X_test)score = r2_score(y_test, y_pred)print(f"Random Forest Regressor R2 Score: {score}")# Output: 0.9107611439295349
एडा-बूस्ट रेग्रेशन
एक और एंसेंबल तकनीक जो कमजोर शिक्षकों को मिलाकर एक मजबूत भविष्यवक्ता बनाती है।
1234567891011
from sklearn.ensemble import AdaBoostRegressor # Initialize and train the modelmodel = AdaBoostRegressor(random_state=0, n_estimators=100)model.fit(X_train, y_train) # Predict and evaluatey_pred = model.predict(X_test)score = r2_score(y_test, y_pred)print(f"AdaBoost Regressor R2 Score: {score}")# Output: 0.8806696893560713
एक्सजीबूस्ट रेग्रेशन
एक शक्तिशाली ग्रेडियेंट बूस्टिंग फ्रेमवर्क जो गति और प्रदर्शन के लिए अनुकूलित है।
1234567891011121314151617
import xgboost as xgb # Initialize and train the modelmodel = 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 evaluatey_pred = model.predict(X_test)score = r2_score(y_test, y_pred)print(f"XGBoost Regressor R2 Score: {score}")# Output: 0.8947431439987505
सपोर्ट वैक्टर मशीन (SVM) रेग्रेशन
SVM को रेग्रेशन कार्यों के लिए अनुकूलित किया जा सकता है, जो जटिल संबंधों को कैप्चर करता है।
1234567891011
from sklearn.svm import SVR # Initialize and train the modelmodel = SVR()model.fit(X_train, y_train) # Predict and evaluatey_pred = model.predict(X_test)score = r2_score(y_test, y_pred)print(f"SVM Regressor R2 Score: {score}")# Output: -0.02713944090388254
नोट: नकारात्मक R² स्कोर यह दर्शाता है कि मॉडल क्षैतिज रेखा से भी खराब प्रदर्शन करता है।
9. मॉडल मूल्यांकन
R² स्कोर रेग्रेशन मॉडलों का मूल्यांकन करने के लिए एक सामान्य मीट्रिक है। यह बताता है कि स्वतंत्र वेरिएबल्स से dependent वेरिएबल में परिवर्तन का कितना हिस्सा भविष्यवाणी किया जा सकता है।
- सकारात्मक R²: मॉडल परिवर्तन के एक हिस्से को समझाता है।
- नकारात्मक R²: मॉडल परिवर्तन को समझाने में विफल रहता है, और मीन-आधारित मॉडल की तुलना में खराब प्रदर्शन करता है।
इस मार्गदर्शिका में, रैंडम फॉरेस्ट रेग्रेशन ने लगभग 0.91 के उच्चतम R² स्कोर को प्राप्त किया, जो परीक्षण डेटा पर मजबूत प्रदर्शन को दर्शाता है।
10. निष्कर्ष
प्रभावी डेटा प्रीप्रोसेसिंग मजबूत मशीन लर्निंग मॉडल बनाने की नींव रखती है। गायब डेटा को सावधानीपूर्वक संभालकर, उपयुक्त एन्कोडिंग तकनीकों का चयन करके, और फीचर्स को स्केल करके, आप अपने डेटा की गुणवत्ता में सुधार करते हैं, जिससे मॉडल प्रदर्शन में सुधार होता है। अन्वेषण किए गए रेग्रेशन मॉडलों में से, एंसेंबल मेथड्स जैसे रैंडम फॉरेस्ट और एडा-बूस्ट ने मौसम डेटा सेट पर श्रेष्ठ भविष्यवाणी क्षमताएँ प्रदर्शित कीं। हमेशा याद रखें कि अपने मॉडलों का पूरी तरह से मूल्यांकन करें और उस मॉडल को चुनें जो आपके प्रोजेक्ट उद्देश्यों के साथ सबसे उपयुक्त हो।
इन प्रीप्रोसेसिंग और मॉडलिंग रणनीतियों को अपनाकर अपने डेटा सेट्स की पूरी क्षमता को उजागर करें और प्रभावशाली मशीन लर्निंग समाधानों को संचालित करें।