html
मशीन लर्निंग में डेटा स्प्लिटिंग और फीचर स्केलिंग को समझना
विषय सूची
- डेटा स्प्लिटिंग: प्रशिक्षण और परीक्षण सेट्स
- परीक्षण सेट क्या है?
- प्रशिक्षण सेट क्या है?
- टिपिकल स्प्लिट अनुपात
- scikit-learn के साथ डेटा स्प्लिटिंग लागू करना
- फीचर स्केलिंग: मानकीकरण और सामान्यीकरण
- फीचर स्केलिंग क्यों?
- मानकीकरण बनाम सामान्यीकरण
- अनुशंसित दृष्टिकोण
- scikit-learn के साथ फीचर स्केलिंग लागू करना
- कदमों का सारांश
- निष्कर्ष
डेटा स्प्लिटिंग: प्रशिक्षण और परीक्षण सेट्स
परीक्षण सेट क्या है?
एक परीक्षण सेट आपके डेटासेट का एक उपसमुच्चय होता है जिसे आपके मशीन लर्निंग मॉडल के प्रदर्शन का मूल्यांकन करने के लिए आरक्षित किया जाता है। मॉडल को यह होल्डआउट डेटा प्रदान करके, आप यह आकलन कर सकते हैं कि यह नए, अनदेखे डेटा की भविष्यवाणी कितनी सटीकता से करता है, जिससे मॉडल के वास्तविक दुनिया के प्रदर्शन को समझा जा सकता है।
प्रशिक्षण सेट क्या है?
इसके विपरीत, एक प्रशिक्षण सेट आपके डेटा का वह हिस्सा है जिसका उपयोग मॉडल को प्रशिक्षित करने के लिए किया जाता है। मॉडल इस डेटा में पैटर्न, संबंध और संरचनाओं को सीखता है ताकि यह नए डेटा पर भविष्यवाणियाँ या वर्गीकरण कर सके।
टिपिकल स्प्लिट अनुपात
एक सामान्य अभ्यास यह है कि डेटा को 80% प्रशिक्षण और 20% परीक्षण में विभाजित किया जाए। यह अनुपात मॉडल को सीखने के लिए पर्याप्त डेटा प्रदान करने और इसके प्रदर्शन का मजबूती से मूल्यांकन करने के लिए पर्याप्त डेटा बनाए रखने के बीच संतुलन प्रदान करता है।
scikit-learn के साथ डेटा स्प्लिटिंग लागू करना
scikit-learn के train_test_split
फ़ंक्शन का उपयोग करके अपने डेटा को विभाजित करने के लिए यहाँ चरण-दर-चरण गाइड है:
- आवश्यक लाइब्रेरी इम्पोर्ट करें
1
from sklearn.model_selection import train_test_split
- अपना डेटा तैयार करें
मान लीजिए आपके पास फीचर्स X
में संग्रहीत हैं और आपका लक्ष्य चर Y
में है:
12
X = data.drop('target', axis=1) # FeaturesY = data['target'] # Target variable
- डेटा को विभाजित करें
123
X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size=0.2, random_state=42)
- test_size=0.2: परीक्षण के लिए डेटा का 20% आवंटित करता है।
- random_state=42: शफलिंग प्रक्रिया को नियंत्रित करके पुनरुत्पादन सुनिश्चित करता है। एक स्थिर
random_state
का उपयोग करने का मतलब है कि आप हर बार कोड चलाने पर वही विभाजन प्राप्त करेंगे, जो स्थिर मॉडल मूल्यांकन के लिए महत्वपूर्ण है।
- स्प्लिट की पुष्टि करें
आप प्रत्येक सेट में रिकॉर्डों की संख्या की जांच कर सकते हैं:
12
print(len(X_train)) # कुल डेटा का 80% होना चाहिएprint(len(X_test)) # कुल डेटा का 20% होना चाहिए
फीचर स्केलिंग: मानकीकरण और सामान्यीकरण
फीचर स्केलिंग क्यों?
मशीन लर्निंग एल्गोरिदम बेहतर प्रदर्शन करते हैं जब संख्यात्मक इनपुट फीचर्स तुलनीय स्केल पर होते हैं। बड़े दायरे वाले फीचर्स मॉडल पर अनुपातिक रूप से अधिक प्रभाव डाल सकते हैं, जिससे उपयुक्त प्रदर्शन नहीं होता है। फीचर स्केलिंग फीचर्स की श्रेणियों को मानकीकृत कर देता है, जिससे मॉडल की दक्षता और सटीकता बढ़ती है।
मानकीकरण बनाम सामान्यीकरण
- मानकीकरण:
- सूत्र: \( z = \frac{(X - \mu)}{\sigma} \)
- डेटा को 0 के माध्य और 1 के मानक विचलन के साथ रूपांतरित करता है।
- गॉसियन (नॉर्मल) वितरण वाले फीचर्स के लिए उपयुक्त।
- व्यापक रूप से प्रयुक्त और सामान्यतः प्रभावी, भले ही डेटा पूरी तरह से सामान्य न हो।
- सामान्यीकरण:
- सूत्र: \( X_{norm} = \frac{(X - X_{min})}{(X_{max} - X_{min})} \)
- डेटा को एक निश्चित सीमा पर स्केल करता है, आमतौर पर 0 से 1।
- जब डेटा ज्ञात वितरण का पालन करता है या जब सीमाएँ आवश्यक होती हैं, तो यह सबसे अच्छा है।
अनुशंसित दृष्टिकोण
आमतौर पर यह सलाह दी जाती है कि डेटा को फीचर स्केलिंग करने से पहले विभाजित करें। यह अभ्यास सुनिश्चित करता है कि स्केलिंग पैरामीटर्स (जैसे कि माध्य और मानक विचलन) केवल प्रशिक्षण डेटा से निकाले गए हैं, डेटा लीक होने से बचाते हैं और यह सुनिश्चित करते हैं कि परीक्षण डेटा वास्तविक होल्डआउट सेट बना रहे।
scikit-learn के साथ फीचर स्केलिंग लागू करना
- StandardScaler को इम्पोर्ट करें
1
from sklearn.preprocessing import StandardScaler
- Scaler को इनिशियलाइज़ करें
1
scaler = StandardScaler()
- प्रशिक्षण डेटा पर फिट करें और ट्रांसफॉर्म करें
1
X_train_scaled = scaler.fit_transform(X_train)
- परीक्षण डेटा को ट्रांसफॉर्म करें
1
X_test_scaled = scaler.transform(X_test)
- महत्वपूर्ण: स्केलर को केवल प्रशिक्षण डेटा पर फिट करें। उसी ट्रांसफॉर्मेशन को परीक्षण डेटा पर लागू किया जाता है। यह सुनिश्चित करता है कि परीक्षण डेटा को समान रूप से स्केल किया जाए बिना परीक्षण सेट से जानकारी प्रशिक्षण प्रक्रिया में शामिल किए।
- श्रेणीबद्ध चर को संभालना
यदि आपके डेटासेट में श्रेणीबद्ध चर संख्यात्मक मानों के रूप में एन्कोड किए गए हैं (जैसे, 0, 1, 2), तो इन स्तंभों पर स्केलिंग लागू करने से बचें, क्योंकि यह उनके अर्थ को विकृत कर सकता है। सुनिश्चित करें कि केवल निरंतर संख्यात्मक फीचर्स को स्केल किया जाए।
कदमों का सारांश
- डेटा इम्पोर्ट करें: अपने डेटासेट को एक उपयुक्त प्रारूप में लोड करें (जैसे, pandas DataFrame)।
- डेटा विभाजित करें: डेटासेट को फीचर्स (
X
) और लक्ष्य (Y
) में विभाजित करें, फिर 80/20 ट्रेन-टेस्ट स्प्लिट करें।
- मिसिंग डेटा को संभालें: किसी भी गैप्स को इम्प्युटेशन या रिमूवल के माध्यम से संबोधित करें।
- फीचर चयन: अप्रासंगिक या अतिरिक्त फीचर्स को हटा कर मॉडल के प्रदर्शन में सुधार करें।
- डेटा को एन्कोड करें: यदि आवश्यक हो तो श्रेणीबद्ध चर को संख्यात्मक प्रारूप में परिवर्तित करें।
- फीचर स्केलिंग: सुनिश्चित करें कि सभी फीचर्स मॉडल में समान रूप से योगदान दें इसके लिए मानकीकरण या सामान्यीकरण लागू करें।
निष्कर्ष
उचित डेटा तैयारी सफल मशीन लर्निंग परियोजनाओं की एक आधारशिला है। अपने डेटा को बारीकी से विभाजित करके और उपयुक्त फीचर स्केलिंग लागू करके, आप ऐसी मॉडल बनाने के लिए मंच तैयार करते हैं जो न केवल सटीक बल्कि विश्वसनीय भी हैं। जैसे-जैसे आप मशीन लर्निंग का और अध्ययन करेंगे, ये बुनियादी प्रथाएं आपको अधिक जटिल चुनौतियों से निपटने में अच्छी तरह से सेवा देंगी।
हमारा अगला लेख देखें, जिसमें हम पूर्व-संसाधन तकनीकों और मजबूत मशीन लर्निंग मॉडल बनाने के अन्य महत्वपूर्ण पक्षों में गहराई से जाएंगे।