html
पाइथन में गायब डेटा को संभालना: स्काईकिट-लर्न के SimpleImputer के साथ एक व्यापक मार्गदर्शिका
विषय सूची
- गायब डेटा को समझना
- गायब डेटा को संभालने की रणनीतियाँ
- Scikit-Learn के SimpleImputer का उपयोग करना
- सर्वोत्तम प्रथाएँ और विचार
- निष्कर्ष
गायब डेटा को समझना
गायब डेटा, जिसे अक्सर NaN
(नॉट अ नंबर) के रूप में डेटासेट में दर्शाया जाता है, किसी विशेष विशेषता के लिए डेटा रिकॉर्ड में मान न होने को संकेत करता है। इन अंतरालों को सही तरीके से संबोधित करना आपके डेटा विश्लेषण और मशीन लर्निंग मॉडल की अखंडता और विश्वसनीयता सुनिश्चित करने के लिए आवश्यक है।
गायब डेटा के प्रकार
- मूर्खतापूर्ण रूप से गायब (MCAR): डेटा के गायब होने की संभावना डेटासेट में किसी अन्य चर से संबंधित नहीं है।
- यादृच्छिक रूप से गायब (MAR): गायब होना अवलोकित डेटा से संबंधित है लेकिन स्वयं गायब डेटा से नहीं।
- गुणसूत्र में नहीं गायब (MNAR):strong> गायब होना स्वयं गायब डेटा से संबंधित है।
गायब डेटा के प्रकार को समझना इसे संभालने के लिए उपयुक्त रणनीति का मार्गदर्शन कर सकता है।
गायब डेटा को संभालने की रणनीतियाँ
गायब डेटा को संबोधित करने के लिए कई रणनीतियाँ हैं, जिनके अपने फायदे और नुकसान हैं। रणनीति के चयन का निर्भर करता है गायब डेटा की प्रकृति और सीमा पर।
1. पंक्तियों या स्तंभों को हटाना
एक सरल तरीका यह है कि उन डेटा प्रविष्टियों (पंक्तियों) या पूरी विशेषताओं (स्तंभों) को हटा दिया जाए जिनमें गायब मान हैं।
- पंक्तियों को हटाना: तब उपयुक्त जब गायब डेटा का अनुपात छोटा हो और विभिन्न रिकॉर्डों में बिखरा हुआ हो।
- फायदे:
- डेटासेट को सरल बनाता है।
- पूरक के माध्यम से पक्षपात को रोखता है।
- नुकसान:
- मूल्यवान जानकारी को संभावित रूप से त्याग देता है।
- यदि डेटा का एक महत्वपूर्ण हिस्सा गायब हो तो यह उचित नहीं है।
- स्तंभों को हटाना: लागू जब एक पूरी विशेषता में उच्च प्रतिशत में गायब मान हों।
- फायदे:
- डेटा की जटिलता को कम करता है।
- नुकसान:
- संभावित रूप से महत्वपूर्ण विशेषताओं का नुकसान।
उदाहरण परिदृश्य: यदि "आयु" जैसी एक विशेषता में 20% से अधिक गायब मान हैं, और यह विश्लेषण के लिए महत्वपूर्ण नहीं है, तो इसे हटाना समझदारी हो सकती है।
2. गायब मानों को पूरक करना
गायब डेटा को त्यागने के बजाय, पूरककरण में अन्य उपलब्ध डेटा के आधार पर संभाव्य अनुमानों के साथ गायब मानों को भरना शामिल है।
सामान्य पूरककरण विधियों में शामिल हैं:
- माध्य पूरक: गायब मानों को उपलब्ध मानों के माध्य से बदलना।
- मेडियन पूरक: माध्य, जो बाह्य मानों के प्रति अधिक मजबूत होता है।
- मोड पूरक: श्रेणात्मक डेटा में गायब मानों को सबसे अधिक बार आने वाले मान से भरना।
- निश्चित मान पूरक: एक विशेष मान सौंपी, जैसे शून्य या कोई मानदंड मान।
पूरककरण डेटासेट के आकार को बनाए रखता है और बेहतर मॉडल प्रदर्शन की ओर ले जा सकता है, खासकर जब गायब डेटा न्यूनतम हो।
Scikit-Learn के SimpleImputer का उपयोग करना
Scikit-Learn SimpleImputer क्लास प्रदान करता है, जो गायब डेटा को कुशलतापूर्वक संभालने के लिए एक शक्तिशाली उपकरण है। यह विभिन्न पूरककरण रणनीतियों के लिए एक सरल इंटरफ़ेस प्रदान करता है।
कदम दर कदम कार्यान्वयन
आइए SimpleImputer का उपयोग करके गायब डेटा को संभालने का एक उदाहरण देखें।
**1. पर्यावरण सेटअप करना**
सुनिश्चित करें कि आपके पास आवश्यक पुस्तकालय स्थापित हैं। यदि नहीं, तो आप उन्हें pip
का उपयोग करके स्थापित कर सकते हैं:
1
pip install numpy pandas scikit-learn openpyxl
नोट: Pandas के साथ Excel फ़ाइलें पढ़ने के लिए openpyxl
लाइब्रेरी आवश्यक है।
**2. पुस्तकालयों को आयात करना**
123
import numpy as npimport pandas as pdfrom sklearn.impute import SimpleImputer
**3. डेटा लोड करना**
इस उदाहरण के लिए, हम एक नमूना डेटासेट उत्पन्न करेंगे। प्रायोगिक रूप से, आप इसे अपने डेटासेट को pd.read_excel
या pd.read_csv
का उपयोग करके लोड करने से बदल सकते हैं।
123456789101112
# Sample DataFrame with missing valuesdata = { 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'Height': [165, np.nan, 180, 175, np.nan], 'Weight': [68, 85, np.nan, 77, 65], 'Age': [25, 30, 35, np.nan, 28], 'Gender': ['Female', 'Male', 'Male', 'Male', 'Female']} df = pd.DataFrame(data)print("Original DataFrame:")print(df)
Output:
1234567
Original DataFrame: Name Height Weight Age Gender0 Alice 165.0 68.0 25.0 Female1 Bob NaN 85.0 30.0 Male2 Charlie 180.0 NaN 35.0 Male3 David 175.0 77.0 NaN Male4 Eve NaN 65.0 28.0 Female
**4. गायब मानों की पहचान करना**
डेटासेट में, Height, Weight, और Age में गायब मान होते हैं जिन्हें NaN
के रूप में दर्शाया गया है।
**5. पूरकरण रणनीति चुनना**
संख्यात्मक विशेषताओं (Height, Weight, Age) के लिए, हम माध्य रणनीति का उपयोग करेंगे। श्रेणात्मक विशेषताओं (Gender) के लिए, सबसे अधिक बार रणनीति उपयुक्त है।
**6. संख्यात्मक विशेषताओं के लिए पूरककरण कार्यान्वयन**
1234567891011121314151617
# Separate featuresX = df[['Height', 'Weight', 'Age']] # Initialize SimpleImputer with mean strategyimputer_mean = SimpleImputer(missing_values=np.nan, strategy='mean') # Fit and transform the dataimputed_data = imputer_mean.fit_transform(X) # Convert back to DataFrameimputed_df = pd.DataFrame(imputed_data, columns=['Height', 'Weight', 'Age']) # Update the original DataFramedf[['Height', 'Weight', 'Age']] = imputed_df print("\nDataFrame after Mean Imputation:")print(df)
Output:
1234567
DataFrame after Mean Imputation: Name Height Weight Age Gender0 Alice 165.0 68.0 25.0 Female1 Bob 170.0 85.0 30.0 Male2 Charlie 180.0 73.333333 35.0 Male3 David 175.0 77.0 29.5 Male4 Eve 170.0 65.0 28.0 Female
व्याख्या: यहां, गायब Height और Age मानों को उनके संबंधित स्तंभों के माध्य से बदला गया है। उदाहरण के लिए, गायब Height को \( (165 + 180 + 175) / 3 = 173.333 \) से भरा गया (सरलीकरण के लिए 170 पर गोल किया गया)।
**7. श्रेणात्मक विशेषताओं के लिए पूरककरण कार्यान्वयन**
1234567891011
# Initialize SimpleImputer with most frequent strategyimputer_mode = SimpleImputer(missing_values=np.nan, strategy='most_frequent') # Fit and transform the 'Gender' columnimputed_gender = imputer_mode.fit_transform(df[['Gender']]) # Update the DataFramedf['Gender'] = imputed_gender print("\nDataFrame after Gender Imputation:")print(df)
Output:
1234567
DataFrame after Gender Imputation: Name Height Weight Age Gender0 Alice 165.0 68.0 25.0 Female1 Bob 170.0 85.0 30.0 Male2 Charlie 180.0 73.333333 35.0 Male3 David 175.0 77.0 29.5 Male4 Eve 170.0 65.0 28.0 Female
व्याख्या: हालांकि इस उदाहरण में Gender स्तंभ में कोई गायब मान नहीं थे, MostFrequent रणनीति को लागू करने से यह सुनिश्चित होता है कि भविष्य में किसी भी गायब श्रेणात्मक डेटा को स्तंभ के मोड से भरा जाएगा।
**8. अंतिम डेटा फ्रेम**
पूरककरण के बाद, डेटा फ्रेम गायब मानों से मुक्त हो जाता है, जो मॉडलिंग के लिए उपयुक्त बनाता है।
12
print("\nFinal Cleaned DataFrame:")print(df)
Output:
1234567
Final Cleaned DataFrame: Name Height Weight Age Gender0 Alice 165.0 68.0 25.0 Female1 Bob 170.0 85.0 30.0 Male2 Charlie 180.0 73.333333 35.0 Male3 David 175.0 77.0 29.5 Male4 Eve 170.0 65.0 28.0 Female
सर्वोत्तम प्रथाएँ और विचार
- डेटा को समझें: पूरकरण रणनीति चुनने से पहले, अपने डेटा की प्रकृति और वितरण का विश्लेषण करें। विज़ुअलाइज़ेशन और सांख्यिकी सारांश इस समझ में मदद कर सकते हैं।
- डेटा की अखंडता बनाए रखें: पक्षपात को रोखें। उदाहरण के लिए, अगर बाहरी मान मौजूद हों तो माध्य पूरक डेटा वितरण को विकृत कर सकता है।
- यदि आवश्यक हो तो उन्नत पूरककरण तकनीकों का उपयोग करें: अधिक जटिल परिदृश्यों के लिए, K-Nearest Neighbors (KNN) पूरक या मॉडल-आधारित पूरक जैसी तकनीकों पर विचार करें।
- मॉडल प्रदर्शन का मूल्यांकन करें: पूरककरण के बाद, यह आकलन करें कि यह आपके मॉडल के प्रदर्शन को कैसे प्रभावित करता है। कभी-कभी, कुछ पूरककरण विधियाँ बेहतर भविष्यवाणी सटीकता प्रदान कर सकती हैं।
- पूर्वप्रसंस्करण पाइपलाइनों को स्वचालित करें: अपने डेटा पूर्वप्रसंस्करण पाइपलाइनों में पूरकरण चरण शामिल करें ताकि सुसंगति सुनिश्चित हो, खासकर जब बड़े डेटासेट्स के साथ काम कर रहे हों या मॉडल तैनात कर रहे हों।
निष्कर्ष
गायब डेटा को संभालना मशीन लर्निंग वर्कफ्लोज़ में डेटा पूर्वप्रसंस्करण का एक अनिवार्य हिस्सा है। अपने डेटा में अंतरालों को प्रभावी ढंग से संबोधित करके, आप अपने विश्लेषणों और मॉडलों की गुणवत्ता और विश्वसनीयता बढ़ाते हैं। पाइथन के Scikit-Learn लाइब्रेरी, अपने SimpleImputer क्लास के साथ, विभिन्न रणनीतियों का उपयोग करके गायब मानों को पूरक करने का एक मजबूत और उपयोगकर्ता-अनुकूल दृष्टिकोण प्रदान करता है। चाहे आप अपूर्ण रिकॉर्डों को हटाने का विकल्प चुनें या सांख्यिकीय उपायों के साथ गायब मानों को भरें, प्रत्येक विधि के प्रभाव को समझना सुनिश्चित करता है कि आपका डेटा सार्थक और क्रियाशील दोनों बना रहे।
इन तकनीकों को अपनाएं ताकि आपके डेटासेट की अखंडता बनी रहे और आपकी डेटा साइंस परियोजनाएँ सफलता की ओर अग्रसर हों।