html
मशीन लर्निंग में लेबल एनकोडिंग में महारत: एक व्यापक मार्गदर्शिका
सामग्री तालिका
- लेबल एनकोडिंग का परिचय
- डेटासेट को समझना
- गुम डेटा संभालना
- श्रेणीबद्ध वेरिएबल्स का एनकोडिंग
- फीचर चयन
- KNN मॉडल का निर्माण और मूल्यांकन
- निर्णय क्षेत्रों का दृश्यांकन
- निष्कर्ष
लेबल एनकोडिंग का परिचय
मशीन लर्निंग में, लेबल एनकोडिंग एक तकनीक है जिसका उपयोग श्रेणीबद्ध डेटा को संख्यात्मक प्रारूप में परिवर्तित करने के लिए किया जाता है। चूंकि कई एल्गोरिदम सीधे श्रेणीबद्ध डेटा के साथ काम नहीं कर सकते हैं, इन श्रेणियों को संख्याओं में एन्कोड करना आवश्यक हो जाता है। लेबल एनकोडिंग प्रत्येक श्रेणी को एक अद्वितीय पूर्णांक प्रदान करती है, जिससे मॉडल को डेटा की व्याख्या और प्रसंस्करण में आसानी होती है।
मुख्य अवधारणाएँ:
- श्रेणीबद्ध डेटा: ऐसे वेरिएबल जो श्रेणियों का प्रतिनिधित्व करते हैं, जैसे "हां/नहीं," "लाल/नीला/हरा," आदि।
- संख्यात्मक एनकोडिंग: श्रेणीबद्ध डेटा को संख्यात्मक मानों में परिवर्तित करने की प्रक्रिया।
डेटासेट को समझना
इस मार्गदर्शिका के लिए, हम Weather AUS डेटासेट का उपयोग करेंगे जो Kaggle से प्राप्त किया गया है। यह डेटासेट विभिन्न ऑस्ट्रेलियाई स्थानों और तिथियों में विविध मौसम-संबंधी गुणों को शामिल करता है।
डेटासेट अवलोकन:
- URL: Weather AUS Dataset
- फीचर्स: तिथि, स्थान, तापमान मीट्रिक, वर्षा, हवा के विवरण, आर्द्रता, दबाव, बादल का आवरण, और अधिक।
- टारगेट वेरिएबल:
RainTomorrow
जो यह संकेत करती है कि अगले दिन बारिश हुई थी या नहीं।
गुम डेटा संभालना
वास्तविक दुनिया के डेटासेट में अक्सर गुम मान होते हैं, जो मशीन लर्निंग मॉडलों के प्रदर्शन में बाधा उत्पन्न कर सकते हैं। इन गुम मानों को सही ढंग से संभालना मजबूत मॉडल बनाने के लिए महत्वपूर्ण है।
संख्यात्मक डेटा
रणनीति: कॉलम के माध्य का उपयोग करके गुम मानों को प्रतिस्थापित करें।
निष्पादन:
123456789101112
import numpy as npfrom sklearn.impute import SimpleImputer # Initialize the imputer with mean strategyimp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') # Identify numerical columnsnumerical_cols = list(np.where((X.dtypes == np.int64) | (X.dtypes == np.float64))[0]) # Fit and transform the dataimp_mean.fit(X.iloc[:, numerical_cols])X.iloc[:, numerical_cols] = imp_mean.transform(X.iloc[:, numerical_cols])
श्रेणीबद्ध डेटा
रणनीति: सबसे सामान्य श्रेणी का उपयोग करके गुम मानों को प्रतिस्थापित करें।
निष्पादन:
123456789
# Identify string columnsstring_cols = list(np.where((X.dtypes == object))[0]) # Initialize the imputer with the most frequent strategyimp_mean = SimpleImputer(missing_values=np.nan, strategy='most_frequent') # Fit and transform the dataimp_mean.fit(X.iloc[:, string_cols])X.iloc[:, string_cols] = imp_mean.transform(X.iloc[:, string_cols])
श्रेणीबद्ध वेरिएबल्स का एनकोडिंग
गुम डेटा को संभालने के बाद, अगला कदम श्रेणीबद्ध वेरिएबल्स को मशीन लर्निंग एल्गोरिदम के लिए तैयार करने के लिए एनकोड करना है।
वन-हॉट एनकोडिंग
वन-हॉट एनकोडिंग श्रेणीबद्ध वेरिएबल्स को उस प्रारूप में बदलता है जिसे एमएल एल्गोरिदम अधिक सटीक भविष्यवाणी करने के लिए उपयोग कर सकते हैं।
निष्पादन:
123456789
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)
लेबल एनकोडिंग
लेबल एनकोडिंग प्रत्येक श्रेणीबद्ध कॉलम के प्रत्येक मान को एक अद्वितीय पूर्णांक में परिवर्तित करता है। यह विशेष रूप से बाइनरी श्रेणीबद्ध वेरिएबल्स के लिए उपयोगी है।
निष्पादन:
123456
from sklearn import preprocessing def LabelEncoderMethod(series): le = preprocessing.LabelEncoder() le.fit(series) return le.transform(series)
सही एनकोडिंग तकनीक का चयन
वन-हॉट एनकोडिंग और लेबल एनकोडिंग के बीच चयन श्रेणीबद्ध डेटा की प्रकृति पर निर्भर करता है।
दिशानिर्देश:
- बाइनरी श्रेणियाँ: लेबल एनकोडिंग पर्याप्त है।
- अनेक श्रेणियाँ: आर्डिनल संबंधों को उत्पन्न करने से बचने के लिए वन-हॉट एनकोडिंग वांछनीय है।
निष्पादन:
123456789101112131415161718
def EncodingSelection(X, threshold=10): # Select string columns string_cols = list(np.where((X.dtypes == object))[0]) one_hot_encoding_indices = [] # Decide encoding method based on unique values for col in string_cols: unique_length = len(pd.unique(X[X.columns[col]])) if unique_length == 2 or unique_length > threshold: X[X.columns[col]] = LabelEncoderMethod(X[X.columns[col]]) else: one_hot_encoding_indices.append(col) # Apply One-Hot Encoding X = OneHotEncoderMethod(one_hot_encoding_indices, X) return X X = EncodingSelection(X)
फीचर चयन
सबसे प्रासंगिक फीचर्स का चयन मॉडल के प्रदर्शन को बेहतर बनाता है और गणनात्मक जटिलता को कम करता है।
तकनीक: Chi-Squared (chi2
) स्कोरिंग फ़ंक्शन के साथ SelectKBest।
निष्पादन:
123456789101112131415161718192021
from sklearn.feature_selection import SelectKBest, chi2from sklearn import preprocessing # Initialize SelectKBestkbest = SelectKBest(score_func=chi2, k=10) # Initialize Min-Max ScalerMMS = preprocessing.MinMaxScaler() # Scale featuresx_temp = MMS.fit_transform(X) # Fit SelectKBestx_temp = kbest.fit(x_temp, y) # Identify best featuresbest_features = np.argsort(x_temp.scores_)[-K_features:]features_to_delete = best_features = np.argsort(x_temp.scores_)[:-K_features] # Reduce datasetX = np.delete(X, features_to_delete, axis=1)
KNN मॉडल का निर्माण और मूल्यांकन
डेटासेट को पूर्व-संसाधित और फीचर्स का चयन करने के बाद, हम एक K-Nearest Neighbors (KNN) वर्गीकर्ता का निर्माण और मूल्यांकन करने के लिए आगे बढ़ते हैं।
ट्रेन-टेस्ट विभाजन
डेटासेट को विभाजित करने से यह सुनिश्चित होता है कि मॉडल को अनदेखे डेटा पर मूल्यांकन किया जाता है, जो इसके सामान्यीकरण क्षमता का एक माप प्रदान करता है।
निष्पादन:
12345678
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: (113754, 12)
फीचर स्केलिंग
फीचर स्केलिंग फीचर्स के दायरे को मानकीकृत करता है, जो KNN जैसे एल्गोरिदम के लिए आवश्यक है जो डेटा के पैमाने के प्रति संवेदनशील होते हैं।
निष्पादन:
1234567891011121314
from sklearn import preprocessing # Initialize StandardScalersc = preprocessing.StandardScaler(with_mean=False) # Fit and transform the training datasc.fit(X_train)X_train = sc.transform(X_train) # Transform the test dataX_test = sc.transform(X_test) print(X_train.shape) # Output: (113754, 12)print(X_test.shape) # Output: (28439, 12)
मॉडल प्रशिक्षण और मूल्यांकन
निष्पादन:
123456789101112131415
from sklearn.neighbors import KNeighborsClassifierfrom sklearn.metrics import accuracy_score # Initialize KNN classifierknnClassifier = KNeighborsClassifier(n_neighbors=3) # Train the modelknnClassifier.fit(X_train, y_train) # Predict on test datay_pred = knnClassifier.predict(X_test) # Evaluate accuracyaccuracy = accuracy_score(y_pred, y_test)print(f"Accuracy: {accuracy}")
आउटपुट:
1
Accuracy: 0.8258
लगभग 82.58% सटीकता यह दर्शाती है कि मॉडल दिए गए फीचर्स के आधार पर अगले दिन बारिश होने की भविष्यवाणी में उचित रूप से काम कर रहा है।
निर्णय क्षेत्रों का दृश्यांकन
निर्णय क्षेत्रों का दृश्यांकन यह समझने में मदद कर सकता है कि KNN मॉडल भविष्यवाणियाँ कैसे कर रहा है। यद्यपि यह कम फीचर्स के साथ अधिक चित्रात्मक होता है, यहाँ दृश्यांकन के लिए एक नमूना कोड स्निपेट है।
निष्पादन:
1234567891011121314
# Install mlxtend if not already installed# pip install mlxtend from mlxtend.plotting import plot_decision_regionsimport matplotlib.pyplot as plt # Plotting decision regions (Example with first two features)plot_decision_regions(X_train[:, :2], y_train, clf=knnClassifier, legend=2) # Adding axis labelsplt.xlabel('Feature 1')plt.ylabel('Feature 2')plt.title('KNN Decision Regions')plt.show()
नोट: दृश्यांकन दो फीचर्स के साथ सबसे अधिक प्रभावी होता है। अधिक फीचर्स वाले डेटासेट्स के लिए, दृश्यांकन से पहले PCA जैसे आयामीय कमी तकनीकों पर विचार करें।
निष्कर्ष
लेबल एनकोडिंग डेटा पूर्व-संसाधन उपकरणों में एक मौलिक तकनीक है, जो मशीन लर्निंग मॉडलों को श्रेणीबद्ध डेटा की प्रभावी व्याख्या करने में सक्षम बनाती है। गुम डेटा को व्यवस्थित रूप से संभालकर, प्रासंगिक फीचर्स का चयन करके, और श्रेणीबद्ध वेरिएबल्स को उपयुक्त रूप से एनकोड करके, आप मजबूत भविष्यवाणि मॉडल बनाने के लिए एक ठोस नींव तैयार करते हैं। इन प्रथाओं को अपने कार्यप्रवाह में शामिल करने से न केवल मॉडल का प्रदर्शन बेहतर होता है बल्कि आपके मशीन लर्निंग प्रोजेक्ट्स में पैमाने और दक्षता भी सुनिश्चित होती है।
मुख्य बिंदु:
- लेबल एनकोडिंग श्रेणीबद्ध डेटा को संख्यात्मक प्रारूप में परिवर्तित करती है, जो एमएल एल्गोरिदम के लिए आवश्यक है।
- गुम डेटा को उपयुक्त रूप से संभालना मॉडल के परिणामों को विकृत होने से रोक सकता है।
- एनकोडिंग तकनीकें श्रेणियों की प्रकृति और संख्या के आधार पर चुनी जानी चाहिए।
- फीचर चयन मॉडल के प्रदर्शन में सुधार करता है और अप्रासंगिक या अत्यधिक फीचर्स को हटाकर गणनात्मक जटिलता को कम करता है।
- KNN मॉडल की प्रभावशीलता उपयुक्त पूर्व-संसाधन और फीचर स्केलिंग से प्रभावित होती है।
इन पूर्व-संसाधन तकनीकों में महारत हासिल करके अपनी मशीन लर्निंग यात्रा शुरू करें, और सटीक तथा विश्वसनीय मॉडल बनाने की क्षमता को अनलॉक करें।
अपने सीखने को बढ़ावा दें:
- हमारे उन्नत डेटा पूर्व-संसाधन मार्गदर्शिका में और भी अधिक पूर्व-संसाधन तकनीकों का पता लगाएँ।
- हमारे व्यापक एमएल मॉडल ट्यूटोरियल के साथ मशीन लर्निंग एल्गोरिदम में गहराई से उतरें।
खुश कोडिंग!