html
मशीन लर्निंग में फीचर चयन में महारत हासिल करना: एक व्यापक मार्गदर्शिका
सामग्री
- फीचर चयन का परिचय
- फीचर चयन क्यों महत्वपूर्ण है
- SelectKBest और CHI2 को समझना
-
कदम-दर-कदम फीचर चयन प्रक्रिया
- व्यावहारिक उदाहरण: मौसम डेटासेट
- फीचर चयन में सर्वश्रेष्ठ प्रथाएँ
- निष्कर्ष
- अतिरिक्त संसाधन
फीचर चयन का परिचय
फीचर चयन में मॉडल निर्माण के लिए प्रासंगिक फीचर्स (चर, भविष्यवाणियों) के एक उपसमुच्चय का चयन शामिल है। अप्रासंगिक या अधीकृत डेटा को समाप्त करके, फीचर चयन मॉडल के प्रदर्शन में सुधार करता है, ओवरफिटिंग को कम करता है, और संगणनात्मक लागत को घटाता है।
फीचर चयन क्यों महत्वपूर्ण है
- बेहतर मॉडल प्रदर्शन: अप्रासंगिक फीचर्स की संख्या को कम करने से मॉडल की सटीकता में सुधार हो सकता है।
- ओवरफिटिंग में कमी: कम फीचर्स डेटा में शोर को कैप्चर करने की संभावना को कम करते हैं।
- तेजी से प्रशिक्षण: कम डेटा का अर्थ है घटित संगणनात्मक संसाधन और तेज मॉडल प्रशिक्षण समय।
- संवेदनशीलता में वृद्धि: सरल मॉडल को समझना और व्याख्या करना आसान होता है।
SelectKBest और CHI2 को समझना
SelectKBest स्किकिट-लर्न द्वारा प्रदान किया गया एक फीचर चयन विधि है, जो स्कोरिंग फ़ंक्शन के आधार पर शीर्ष 'k' फीचर्स का चयन करती है। जब इसे CHI2 (Chi-squared) के साथ जोड़ा जाता है, तो यह प्रत्येक फीचर की स्वतंत्रता को लक्ष्य चर के संदर्भ में आकलन करता है, जिससे यह विशेष रूप से श्रेणीबद्ध डेटा के लिए उपयोगी होता है।
CHI2 परीक्षण: यह आकलन करता है कि क्या दो चर के बीच उनकी आवृत्तियों को ध्यान में रखते हुए महत्वपूर्ण संघ है।
कदम-दर-कदम फीचर चयन प्रक्रिया
1. लाइब्रेरी और डेटा इम्पोर्ट करना
12345678
import pandas as pd import seaborn as snsimport numpy as npfrom sklearn.impute import SimpleImputerfrom sklearn.preprocessing import OneHotEncoder, LabelEncoder, StandardScaler, MinMaxScalerfrom sklearn.compose import ColumnTransformerfrom sklearn.feature_selection import SelectKBest, chi2from sklearn.model_selection import train_test_split
डेटासेट: इस मार्गदर्शिका के लिए, हम कग्गल से मौसम डेटासेट का उपयोग करेंगे।
12
data = pd.read_csv('weatherAUS.csv')data.head()
2. अन्वेषणात्मक डेटा विश्लेषण (EDA)
डेटा की संरचना और सहसंबंधों को समझना आवश्यक है।
123
# Correlation Matrixcorr_matrix = data.corr()sns.heatmap(corr_matrix, annot=True)
मुख्य अवलोकन:
- कुछ तापमान चर के बीच मजबूत सहसंबंध मौजूद हैं।
- आर्द्रता और दबाव गुणों का लक्ष्य चर के साथ महत्वपूर्ण संबंध दिखाता है।
3. लापता डेटा को संभालना
लापता डेटा परिणामों को विकृत कर सकता है। इन्हें उचित रूप से संभालना महत्वपूर्ण है।
संख्यात्मक डेटा
लापता संख्यात्मक मानों को भरने के लिए SimpleImputer का 'mean' रणनीति के साथ उपयोग करें।
12345
from sklearn.impute import SimpleImputer imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')numerical_cols = data.select_dtypes(include=['int64', 'float64']).columnsdata[numerical_cols] = imp_mean.fit_transform(data[numerical_cols])
श्रेणीबद्ध डेटा
श्रेणीबद्ध चर के लिए, सबसे अधिक सामान्य मान का उपयोग करके लापता प्रविष्टियों को भरें।
123
imp_mode = SimpleImputer(missing_values=np.nan, strategy='most_frequent')categorical_cols = data.select_dtypes(include=['object']).columnsdata[categorical_cols] = imp_mode.fit_transform(data[categorical_cols])
4. श्रेणीबद्ध चर को एन्कोड करना
मशीन लर्निंग मॉडल को संख्यात्मक इनपुट की आवश्यकता होती है, इसलिए श्रेणीबद्ध चर को एन्कोड करना आवश्यक है।
वन-हॉट एन्कोडिंग
दो से अधिक श्रेणियों वाले श्रेणीबद्ध चर के लिए आदर्श।
123456
def OneHotEncoderMethod(indices, data): columnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), indices)], remainder='passthrough') return columnTransformer.fit_transform(data) one_hot_indices = [data.columns.get_loc(col) for col in ['WindGustDir', 'WindDir9am', 'WindDir3pm', 'RainToday']]X = OneHotEncoderMethod(one_hot_indices, data)
लेबल एन्कोडिंग
द्विआधारी श्रेणियों वाले श्रेणीबद्ध चर के लिए उपयुक्त।
12345
def LabelEncoderMethod(series): le = LabelEncoder() return le.fit_transform(series) y = LabelEncoderMethod(data['RainTomorrow'])
एन्कोडिंग चयन
यूनिक श्रेणियों की संख्या के आधार पर एन्कोडिंग प्रक्रिया को स्वचालित करें।
123456789101112131415
def EncodingSelection(X, threshold=10): string_cols = list(np.where((X.dtypes == object))[0]) one_hot_encoding_indices = [] for col in string_cols: unique_values = len(pd.unique(X[X.columns[col]])) if unique_values == 2 or unique_values > threshold: X[X.columns[col]] = LabelEncoderMethod(X[X.columns[col]]) else: one_hot_encoding_indices.append(col) X = OneHotEncoderMethod(one_hot_encoding_indices, X) return X X = EncodingSelection(X)
5. फीचर स्केलिंग
फीचर्स को मानकीकृत करना सुनिश्चित करता है कि प्रत्येक फीचर परिणाम में समान रूप से योगदान देता है।
12
sc = StandardScaler(with_mean=False)X = sc.fit_transform(X)
6. CHI2 के साथ SelectKBest लागू करना
शीर्ष 'k' फीचर्स का चयन करें जिनका लक्ष्य चर के साथ सबसे मजबूत संबंध है।
123
kbest = SelectKBest(score_func=chi2, k=10)X_temp = MinMaxScaler().fit_transform(X)X_temp = kbest.fit_transform(X_temp, y)
7. फीचर्स का चयन और ड्रॉप करना
सबसे प्रासंगिक फीचर्स की पहचान करें और उन्हें बनाए रखें जबकि सबसे कम महत्वपूर्ण को हटा दें।
1234567891011
# Scores for feature selectionscores = kbest.scores_features = data.columns[:-1] # Exclude target variable # Selecting top 10 featuresbest_features_indices = np.argsort(scores)[-10:]best_features = [features[i] for i in best_features_indices] # Dropping the least important featuresfeatures_to_delete = np.argsort(scores)[:-10]X = np.delete(X, features_to_delete, axis=1)
8. डेटासेट को विभाजित करना
मॉडल के प्रदर्शन का मूल्यांकन करने के लिए डेटा को प्रशिक्षण और परीक्षण सेट में विभाजित करें।
1
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=1)
व्यावहारिक उदाहरण: मौसम डेटासेट
मौसम डेटासेट का उपयोग करते हुए, हमने पूरे फीचर चयन पाइपलाइन को प्रदर्शित किया:
- डेटा इम्पोर्टेशन: पांडा का उपयोग करके डेटासेट लोड किया।
- EDA: सेबोर्न के हीटमैप का उपयोग करके सहसंबंधों का दृश्यीकरण किया।
- लापता डेटा हैंडलिंग: लापता संख्यात्मक और श्रेणीबद्ध मानों को इम्प्यूट किया।
- एन्कोडिंग: श्रेणी कार्डिनैलिटी के आधार पर वन-हॉट और लेबल एन्कोडिंग लागू किया।
- स्केलिंग: डेटा को सामान्यीकृत करने के लिए फीचर्स को मानकीकृत किया।
- फीचर चयन: SelectKBest के साथ CHI2 का उपयोग करके शीर्ष प्रदर्शन करने वाले फीचर्स की पहचान की।
- डेटा स्प्लिटिंग: मॉडल प्रशिक्षण के लिए डेटा को प्रशिक्षण और परीक्षण उपसेट में विभाजित किया।
परिणाम: फीचर डाइमेंशन्स को 23 से 13 तक सफलतापूर्वक कम किया, जिससे मॉडल की दक्षता में सुधार हुआ बिना सटीकता में समझौता किए।
फीचर चयन में सर्वश्रेष्ठ प्रथाएँ
- अपने डेटा को समझें: फीचर संबंधों को समझने के लिए व्यापक EDA करें।
- लापता मानों को संभालें: डेटा की अखंडता बनाए रखने के लिए लापता डेटा को उचित रूप से इम्प्यूट करें।
- सही एन्कोडिंग तकनीक चुनें: श्रेणीबद्ध चर की प्रकृति के अनुसार एन्कोडिंग विधियों को मिलाएं।
- फीचर्स को स्केल करें: मानकीकरण या सामान्यीकरण सुनिश्चित करता है कि फीचर्स समान रूप से योगदान दें।
- आवृत्त फीचर चयन: मॉडल विकसित करते समय फीचर चयन का निरंतर मूल्यांकन और परिष्करण करें।
- डेटा लीक से बचें: विभाजित करने से पहले केवल प्रशिक्षण डेटा पर फीचर चयन किया जाए यह सुनिश्चित करें।
निष्कर्ष
फीचर चयन मशीन लर्निंग पाइपलाइन का एक अनिवार्य घटक है। प्रासंगिक फीचर्स का सावधानीपूर्वक चयन करके, आप न केवल अपने मॉडलों को बेहतर प्रदर्शन के लिए अनुकूलित करते हैं बल्कि संगणनात्मक संसाधनों को भी सुव्यवस्थित करते हैं। SelectKBest और CHI2 जैसे टूल्स सबसे प्रभावशाली फीचर्स का मूल्यांकन और चयन करने के लिए मजबूत विधियाँ प्रदान करते हैं, यह सुनिश्चित करते हुए कि आपके मॉडल कुशल और प्रभावी दोनों हैं।
अतिरिक्त संसाधन
- Scikit-learn फीचर चयन दस्तावेज़ीकरण
- कग्गल मौसम डेटासेट
- मशीन लर्निंग में फीचर चयन तकनीकें: एक पूर्ण ट्यूटोरियल
- CHI2 परीक्षण को समझना
इन अंतर्दृष्टियों के साथ अपने फीचर चयन यात्रा पर निकलें और अपने मशीन लर्निंग मॉडलों को नई ऊंचाइयों पर ले जाएं!