html
डेटा प्रीप्रोसेसिंग के व्यापक मार्गदर्शिका: वन-हॉट एनकोडिंग और पाइथन के साथ मिसिंग डेटा को संभालना
डेटा साइंस और मशीन लर्निंग के क्षेत्र में, डेटा प्रीप्रोसेसिंग एक महत्वपूर्ण कदम के रूप में खड़ा होता है जो आपके मॉडलों के प्रदर्शन और सटीकता पर महत्वपूर्ण प्रभाव डाल सकता है। यह व्यापक मार्गदर्शिका आवश्यक प्रीप्रोसेसिंग तकनीकों जैसे वन-हॉट एनकोडिंग, मिसिंग डेटा को संभालना, फीचर चयन, और अधिक पर गहराई से अध्ययन करती है, जिसमें पाइथन की शक्तिशाली पुस्तकालयों जैसे पांडा और साइकीट-लर्न का उपयोग किया गया है। हम इन अवधारणाओं को वेदर ऑस्ट्रेलिया डेटासेट का उपयोग करके एक व्यावहारिक उदाहरण के साथ समझेंगे।
सूची
- परिचय
- डेटासेट को समझना
- मिसिंग डेटा को संभालना
- फीचर चयन
- लेबल एनकोडिंग
- वन-हॉट एनकोडिंग
- असंतुलित डेटा को संभालना
- ट्रेन-टेस्ट स्प्लिट
- फीचर स्केलिंग
- निष्कर्ष
परिचय
डेटा प्रीप्रोसेसिंग वह आधारशिला है जिस पर मजबूत मशीन लर्निंग मॉडल बनाए जाते हैं। इसमें कच्चे डेटा को साफ और संगठित प्रारूप में परिवर्तित करना शामिल है, जिससे यह विश्लेषण के लिए उपयुक्त हो सके। इस प्रक्रिया में शामिल हैं:
- मिसिंग डेटा को संभालना: डेटासेट में अंतराल को संबोधित करना।
- श्रेणीबद्ध वेरिएबल्स को एनकोड करना: गैर-संख्यात्मक डेटा को संख्यात्मक प्रारूप में बदलना।
- फीचर चयन: सबसे प्रासंगिक फीचर्स की पहचान करना और उन्हें बनाए रखना।
- डेटासेट का संतुलन: वर्गों का समान वितरण सुनिश्चित करना।
- फीचर्स को स्केल करना: मॉडल के प्रदर्शन को बढ़ाने के लिए डेटा को सामान्यीकृत करना।
आइए पाइथन का उपयोग करके इन अवधारणाओं को चरण-दर-चरण देखते हैं।
डेटासेट को समझना
प्रीप्रोसेसिंग में गोता लगाने से पहले, यह समझना महत्वपूर्ण है कि हम किस डेटासेट के साथ काम कर रहे हैं। हम वेदर ऑस्ट्रेलिया डेटासेट का उपयोग करेंगे, जिसमें 142,193 रिकॉर्ड और 24 कॉलम शामिल हैं। इस डेटासेट में तापमान, वर्षा, आर्द्रता जैसे विभिन्न मौसमीय गुण शामिल हैं, साथ ही एक लक्ष्य वेरिएबल भी है जो यह दर्शाता है कि अगले दिन बारिश होगी या नहीं।
डेटासेट का नमूना
123
Date,Location,MinTemp,MaxTemp,Rainfall,Evaporation,Sunshine,WindGustDir,WindGustSpeed,WindDir9am,WindDir3pm,WindSpeed9am,WindSpeed3pm,Humidity9am,Humidity3pm,Pressure9am,Pressure3pm,Cloud9am,Cloud3pm,Temp9am,Temp3pm,RainToday,RISK_MM,RainTomorrow2008-12-01,Albury,13.4,22.9,0.6,NA,NA,W,44,W,WNW,20,24,71,22,1007.7,1007.1,8,NA,16.9,21.8,No,0,No... (additional rows)
मिसिंग डेटा को संभालना
वास्तविक दुनिया के डेटासेट में अक्सर मिसिंग मान होते हैं। इन अंतरालों को सही ढंग से संभालना आवश्यक है ताकि परिणामों में गड़बड़ी न हो और मॉडल की सटीकता सुनिश्चित हो सके।
संख्यात्मक डेटा
हमारे डेटासेट में संख्यात्मक कॉलम में MinTemp
, MaxTemp
, Rainfall
, Evaporation
आदि शामिल हैं। इन कॉलमों में मिसिंग मानों को मीन, मीडियन, या मोड जैसी सांख्यिकीय मापों से पूर्ण किया जा सकता है।
1234567891011
import numpy as npfrom sklearn.impute import SimpleImputer # मीन रणनीति के साथ इम्प्युटर इनिशियलाइज़ करेंimp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') # संख्यात्मक कॉलम की सूचियाँnumerical_cols = [2,3,4,5,6,8,11,12,13,14,15,16,17,18,19,20] # डेटा को फिट और ट्रांसफॉर्म करेंX.iloc[:, numerical_cols] = imp_mean.fit_transform(X.iloc[:, numerical_cols])
श्रेणीबद्ध डेटा
जैसे Location
, WindGustDir
, WindDir9am
आदि श्रेणीबद्ध कॉलमों में मिसिंग मानों को मीन या मीडियन से पूर्ण नहीं किया जा सकता। इसके बजाय, हम इन अंतरालों को भरने के लिए सबसे बार-बार आने वाले मान (मोड) का उपयोग करते हैं।
12345678910
from sklearn.impute import SimpleImputer # श्रेणीबद्ध कॉलम की सूचियाँstring_cols = [1,7,9,10,21] # सबसे बार-बार आने वाली रणनीति के साथ इम्प्युटर इनिशियलाइज़ करेंimp_freq = SimpleImputer(missing_values=np.nan, strategy='most_frequent') # डेटा को फिट और ट्रांसफॉर्म करेंX.iloc[:, string_cols] = imp_freq.fit_transform(X.iloc[:, string_cols])
फीचर चयन
फीचर चयन में सबसे प्रासंगिक वेरिएबल्स की पहचान करना शामिल है जो भविष्यवाणी कार्य में योगदान देती हैं। हमारे मामले में, हम Date
और RISK_MM
जैसे अप्रासंगिक या अतिरिक्त कॉलमों को हटा देंगे।
12
# 'RISK_MM' और 'Date' कॉलमों को ड्रॉप करनाX.drop(['RISK_MM', 'Date'], axis=1, inplace=True)
लेबल एनकोडिंग
लेबल एनकोडिंग श्रेणीबद्ध लक्ष्य वेरिएबल्स को संख्यात्मक प्रारूप में बदलता है। बारिश कल (Yes
या No
) की भविष्यवाणी जैसे बाइनरी वर्गीकरण कार्यों के लिए यह विधि सरल है।
1234567
from sklearn import preprocessing # LabelEncoder इनिशियलाइज़ करेंle = preprocessing.LabelEncoder() # लक्ष्य वेरिएबल को फिट और ट्रांसफॉर्म करेंY = le.fit_transform(Y)
वन-हॉट एनकोडिंग
जबकि लेबल एनकोडिंग ऑर्डिनल डेटा के लिए उपयुक्त है, वन-हॉट एनकोडिंग नामिनल डेटा के लिए पसंदीदा है जहां श्रेणियों का कोई अंतर्निहित क्रम नहीं होता है। इस तकनीक से प्रत्येक श्रेणी के लिए बाइनरी कॉलम बनते हैं, जो मॉडल को श्रेणीबद्ध वेरिएबल्स को समझने में मदद करता है।
1234567891011
from sklearn.preprocessing import OneHotEncoderfrom sklearn.compose import ColumnTransformer # निर्दिष्ट कॉलमों के लिए OneHotEncoder के साथ ColumnTransformer इनिशियलाइज़ करेंcolumnTransformer = ColumnTransformer( [('encoder', OneHotEncoder(), [0,6,8,9,20])], remainder='passthrough') # फीचर मैट्रिक्स को फिट और ट्रांसफॉर्म करेंX = columnTransformer.fit_transform(X)
नोट: कॉलम [0,6,8,9,20] श्रेणीबद्ध फीचर्स जैसे Location
, WindGustDir
आदि के अनुरूप हैं।
असंतुलित डेटा को संभालना
असंतुलित डेटासेट्स, जहां एक क्लास अत्यधिक दूसरे की तुलना में होती है, मॉडल को बायस कर सकती हैं। ओवरसैंपलिंग और अंडरसैंपलिंग जैसी तकनीकें डेटासेट को संतुलित करने में मदद करती हैं।
ओवरसैंपलिंग
रैंडम ओवरसैंपलिंग अल्पसंख्यक क्लास से उदाहरणों को डुप्लिकेट करके क्लास वितरण को संतुलित करता है।
1234567891011
from imblearn.over_sampling import RandomOverSamplerfrom collections import Counter # RandomOverSampler इनिशियलाइज़ करेंros = RandomOverSampler(random_state=42) # डेटासेट को रिसैंपल करेंX, Y = ros.fit_resample(X, Y) # नए क्लास वितरण की पुष्टि करेंprint(Counter(Y))
आउटपुट:
1
Counter({0: 110316, 1: 110316})
अंडरसैंपलिंग
रैंडम अंडरसैंपलिंग बहुसंख्यक क्लास से उदाहरणों को कम करता है लेकिन इससे जानकारी खो सकती है। इस मार्गदर्शिका में, हमने सभी डेटा पॉइंट्स को बनाए रखने के लिए ओवरसैंपलिंग का उपयोग किया है।
ट्रेन-टेस्ट स्प्लिट
डेटासेट को प्रशिक्षण और परीक्षण सेट में विभाजित करना अज्ञात डेटा पर मॉडल के प्रदर्शन का मूल्यांकन करने के लिए महत्वपूर्ण है।
123456789
from sklearn.model_selection import train_test_split # डेटा को विभाजित करें: 80% प्रशिक्षण, 20% परीक्षणX_train, X_test, y_train, y_test = train_test_split( X, Y, test_size=0.20, random_state=1) print(X_train.shape) # आउटपुट: (176505, 115)print(X_test.shape) # आउटपुट: (44127, 115)
फीचर स्केलिंग
फीचर स्केलिंग सुनिश्चित करती है कि सभी संख्यात्मक फीचर्स समान रूप से मॉडल के प्रदर्शन में योगदान दें।
स्टैंडर्डाइजेशन
स्टैंडर्डाइजेशन डेटा को मीन 0 और स्टैंडर्ड डिविएशन 1 के साथ ट्रांसफॉर्म करता है।
1234567891011121314
from sklearn import preprocessing # StandardScaler इनिशियलाइज़ करेंsc = preprocessing.StandardScaler() # प्रशिक्षण डेटा पर फिट करेंsc.fit(X_train) # प्रशिक्षण और परीक्षण डेटा को ट्रांसफॉर्म करेंX_train = sc.transform(X_train)X_test = sc.transform(X_test) print(X_train.shape) # आउटपुट: (176505, 115)print(X_test.shape) # आउटपुट: (44127, 115)
नॉर्मलाइजेशन
नॉर्मलाइजेशन फीचर्स को 0 और 1 के बीच के रेंज में स्केल करती है। हालांकि इसे इस मार्गदर्शिका में शामिल नहीं किया गया है, यह डेटासेट और मॉडल आवश्यकताओं के आधार पर एक अन्य मूल्यवान स्केलिंग तकनीक है।
12345678
from sklearn.preprocessing import MinMaxScaler # MinMaxScaler इनिशियलाइज़ करेंmm_scaler = MinMaxScaler() # डेटा को फिट और ट्रांसफॉर्म करेंX_train_mm = mm_scaler.fit_transform(X_train)X_test_mm = mm_scaler.transform(X_test)
निष्कर्ष
प्रभावी डेटा प्रीप्रोसेसिंग उच्च-प्रदर्शन वाले मशीन लर्निंग मॉडल बनाने में सहायक होती है। मिसिंग डेटा को सावधानीपूर्वक संभालने, श्रेणीबद्ध वेरिएबल्स को एनकोड करने, डेटासेट को संतुलित करने, और फीचर्स को स्केल करने के द्वारा, आप अपने भविष्यवाणी कार्यों के लिए एक ठोस आधार स्थापित करते हैं। इस मार्गदर्शिका ने पाइथन की मजबूत पुस्तकालयों का उपयोग करके एक व्यावहारिक दृष्टिकोण प्रदान किया, यह दर्शाते हुए कि ये तकनीकें आपके डेटा साइंस वर्कफ़्लो में कैसे सहजता से शामिल की जा सकती हैं।
याद रखें, आपके डेटा की गुणवत्ता सीधे तौर पर आपके मॉडलों की सफलता को प्रभावित करती है। अपने डेटासेट्स की पूरी क्षमता को उजागर करने के लिए प्रीप्रोसेसिंग में समय निवेश करें।
कीवर्ड्स
- डेटा प्रीप्रोसेसिंग
- वन-हॉट एनकोडिंग
- मिसिंग डेटा को संभालना
- पाइथन पांडा
- साइकीट-लर्न
- मशीन लर्निंग
- फीचर स्केलिंग
- असंतुलित डेटा
- लेबल एनकोडिंग
- श्रेणीबद्ध वेरिएबल्स