html
वर्गीकरण मॉडलों में महारत: डेटा विज्ञान के लिए एक व्यापक पाइथन टेम्पलेट
सामग्री तालिका
- वर्गीकरण मॉडलों का परिचय
- अपने परिवेश की स्थापना
- डेटा आयात और खोज
- मिसिंग डेटा को संभालना
- श्रेणीबद्ध परिवर्तनीयों का एनकोडिंग
- फीचर चयन
- ट्रेन-टेस्ट विभाजन
- फीचर स्केलिंग
- मॉडल निर्माण और मूल्यांकन
- निष्कर्ष
1. वर्गीकरण मॉडलों का परिचय
वर्गीकरण मॉडल्स पर्यवेक्षित मशीन लर्निंग के मूलाधार हैं, जो इनपुट विशेषताओं के आधार पर विविक्त लेबल की भविष्यवाणी करने में सक्षम बनाते हैं। ये मॉडल्स विभिन्न अनुप्रयोगों में महत्वपूर्ण भूमिका निभाते हैं, जैसे ईमेल स्पैम डिटेक्शन से लेकर चिकित्सा निदान तक। इन मॉडलों में महारत हासिल करने के लिए डेटा प्रीप्रोसेसिंग, फीचर इंजीनियरिंग, मॉडल चयन और मूल्यांकन मेट्रिक्स की समझ आवश्यक है।
2. अपने परिवेश की स्थापना
मॉडल निर्माण में गहराई से उतरने से पहले, सुनिश्चित करें कि आपका पाइथन परिवेश आवश्यक पुस्तकालयों से सुसज्जित है। यहाँ बताया गया है कि आप अपने परिवेश को कैसे सेट अप कर सकते हैं:
|
# Install necessary libraries !pip install pandas seaborn scikit-learn xgboost |
आवश्यक पुस्तकालयों को आयात करें:
|
import pandas as pd import seaborn as sns import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler, LabelEncoder, OneHotEncoder from sklearn.impute import SimpleImputer from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, chi2 from sklearn.metrics import accuracy_score from sklearn.neighbors import KNeighborsClassifier from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier import xgboost as xgb |
3. डेटा आयात और खोज
इस ट्यूटोरियल के लिए, हम कग्गल से Weather Australia Dataset का उपयोग करेंगे। यह व्यापक डेटासेट विविध मौसम-संबंधी विशेषताएं प्रदान करता है जो वर्गीकरण मॉडलों के निर्माण के लिए आदर्श हैं।
|
# Import data data = pd.read_csv('weatherAUS.csv') # Ensure the CSV file is in your working directory print(data.tail()) |
उदाहरण आउटपुट:
|
Date Location MinTemp MaxTemp Rainfall Evaporation Sunshine WindGustDir WindGustSpeed WindDir9am ... Humidity3pm Pressure9am Pressure3pm Cloud9am Cloud3pm Temp9am Temp3pm RainToday RISK_MM RainTomorrow 142188 2017-06-20 Uluru 3.5 21.8 0.0 NaN E 31.0 ESE ... 27.0 1024.7 1021.2 NaN NaN 9.4 20.9 No 0.0 No 142189 2017-06-21 Uluru 2.8 23.4 0.0 NaN E 31.0 SE ... 24.0 1024.6 1020.3 NaN NaN 10.1 22.4 No 0.0 No 142190 2017-06-22 Uluru 3.6 25.3 0.0 NaN NNW 22.0 SE ... 21.0 1023.5 1019.1 NaN NaN 10.9 24.5 No 0.0 No 142191 2017-06-23 Uluru 5.4 26.9 0.0 NaN N 37.0 SE ... 24.0 1021.0 1016.8 NaN NaN 12.5 26.1 No 0.0 No 142192 2017-06-24 Uluru 7.8 27.0 0.0 NaN SE 28.0 SSE ... 24.0 1019.4 1016.5 3.0 2.0 15.1 26.0 No 0.0 No |
4. मिसिंग डेटा को संभालना
डेटा की अखंडता विश्वसनीय मॉडल निर्माण के लिए महत्वपूर्ण है। आइए हम संख्यात्मक और श्रेणीबद्ध विशेषताओं दोनों में मिसिंग मानों को संबोधित करें।
संख्यात्मक मिसिंग डेटा को संभालना
Scikit-learn से SimpleImputer का उपयोग करके प्रत्येक कॉलम के औसत से मिसिंग संख्यात्मक मानों को भरें।
|
from sklearn.impute import SimpleImputer # Separate features and target X = data.iloc[:, :-1] # All columns except the last one y = data.iloc[:, -1] # Target column # Identify numeric columns numerical_cols = X.select_dtypes(include=['int64', 'float64']).columns # Impute missing numeric values with mean imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean') X[numerical_cols] = imp_mean.fit_transform(X[numerical_cols]) |
श्रेणीबद्ध मिसिंग डेटा को संभालना
श्रेणीबद्ध परिवर्तनीयों के लिए, मिसिंग मानों को सबसे अधिक सामान्य (मोड) मान से भरें।
|
# Identify categorical columns categorical_cols = X.select_dtypes(include=['object']).columns # Impute missing categorical values with the most frequent value imp_freq = SimpleImputer(missing_values=np.nan, strategy='most_frequent') X[categorical_cols] = imp_freq.fit_transform(X[categorical_cols]) |
5. श्रेणीबद्ध परिवर्तनीयों का एनकोडिंग
मशीन लर्निंग मॉडल्स को संख्यात्मक इनपुट की आवश्यकता होती है। इसलिए, श्रेणीबद्ध परिवर्तनीयों को एनकोड करना आवश्यक है। हम बाइनरी श्रेणियों के लिए लेबल एनकोडिंग और बहु-श्रेणीबद्ध श्रेणियों के लिए वन-हॉट एनकोडिंग का उपयोग करेंगे।
लेबल एनकोडिंग
|
from sklearn.preprocessing import LabelEncoder le = LabelEncoder() y = le.fit_transform(y) # Encoding the target variable |
वन-हॉट एनकोडिंग
विभिन्न श्रेणियों की संख्या के आधार पर एनकोडिंग को संभालने के लिए एक विधि लागू करें।
|
from sklearn.compose import ColumnTransformer from sklearn.preprocessing import OneHotEncoder def one_hot_encode(columns, data): ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), columns)], remainder='passthrough') return ct.fit_transform(data) # Example usage: # X = one_hot_encode(['WindGustDir', 'WindDir9am'], X) |
वैकल्पिक रूप से, अद्वितीय श्रेणी सीमा के आधार पर एनकोडिंग प्रक्रिया को स्वचालित करें।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
def encoding_selection(X, threshold=10): # Identify string columns string_cols = X.select_dtypes(include=['object']).columns one_hot_encoding_cols = [] for col in string_cols: unique_count = X[col].nunique() if unique_count == 2 or unique_count > threshold: X[col] = le.fit_transform(X[col]) else: one_hot_encoding_cols.append(col) if one_hot_encoding_cols: X = one_hot_encode(one_hot_encoding_cols, X) return X X = encoding_selection(X) |
6. फीचर चयन
फीचर्स की संख्या कम करने से मॉडल प्रदर्शन में सुधार हो सकता है और कम्प्यूटेशनल लागत घट सकती है। हम SelectKBest का उपयोग करेंगे जो Chi-Squared परीक्षण के साथ शीर्ष फीचर्स का चयन करता है।
|
from sklearn.feature_selection import SelectKBest, chi2 from sklearn.preprocessing import MinMaxScaler # Scale features scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X) # Select top K features k = 10 # You can adjust this based on your requirement selector = SelectKBest(score_func=chi2, k=k) X_selected = selector.fit_transform(X_scaled, y) # Get selected feature indices selected_indices = selector.get_support(indices=True) selected_features = X.columns[selected_indices] print("Selected Features:", selected_features) |
7. ट्रेन-टेस्ट विभाजन
डेटासेट को ट्रेनिंग और परीक्षण सेट में विभाजित करना आवश्यक है ताकि मॉडल के प्रदर्शन का मूल्यांकन अनदेखे डेटा पर किया जा सके।
|
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_selected, y, test_size=0.20, random_state=1) print("Training set shape:", X_train.shape) print("Test set shape:", X_test.shape) |
आउटपुट:
|
Training set shape: (113754, 10) Test set shape: (28439, 10) |
8. फीचर स्केलिंग
फीचर्स का मानकीकरण यह सुनिश्चित करता है कि प्रत्येक फीचर अल्गोरिदम जैसे KNN और SVM में दूरी गणनाओं में समान रूप से योगदान दे।
|
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) print("Scaled Training set shape:", X_train.shape) print("Scaled Test set shape:", X_test.shape) |
आउटपुट:
|
Scaled Training set shape: (113754, 10) Scaled Test set shape: (28439, 10) |
9. मॉडल निर्माण और मूल्यांकन
डेटा को प्रीप्रोसेस करने के बाद, हम विभिन्न वर्गीकरण मॉडलों का निर्माण और मूल्यांकन कर सकते हैं। हम मॉडलों का आकलन उनके एक्युरेसी स्कोर्स के आधार पर करेंगे।
K-Nearest Neighbors (KNN)
|
from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) print("KNN Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
लॉजिस्टिक रिग्रेशन
|
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(random_state=0, max_iter=200) log_reg.fit(X_train, y_train) y_pred = log_reg.predict(X_test) print("Logistic Regression Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
|
Logistic Regression Accuracy: 0.99996 |
गौसियन नाइव बेयस
|
from sklearn.naive_bayes import GaussianNB gnb = GaussianNB() gnb.fit(X_train, y_train) y_pred = gnb.predict(X_test) print("GaussianNB Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
|
GaussianNB Accuracy: 0.97437 |
सपोर्ट वेक्टर मशीन (SVM)
|
from sklearn.svm import SVC svm = SVC() svm.fit(X_train, y_train) y_pred = svm.predict(X_test) print("SVM Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
डिसीजन ट्री क्लासिफायर
|
from sklearn.tree import DecisionTreeClassifier dtc = DecisionTreeClassifier() dtc.fit(X_train, y_train) y_pred = dtc.predict(X_test) print("Decision Tree Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
|
Decision Tree Accuracy: 1.0 |
रैंडम फॉरेस्ट क्लासिफायर
|
from sklearn.ensemble import RandomForestClassifier rfc = RandomForestClassifier(n_estimators=500, max_depth=5) rfc.fit(X_train, y_train) y_pred = rfc.predict(X_test) print("Random Forest Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
|
Random Forest Accuracy: 1.0 |
AdaBoost क्लासिफायर
|
from sklearn.ensemble import AdaBoostClassifier abc = AdaBoostClassifier() abc.fit(X_train, y_train) y_pred = abc.predict(X_test) print("AdaBoost Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
XGBoost क्लासिफायर
|
import xgboost as xgb xgb_model = xgb.XGBClassifier(use_label_encoder=False, eval_metric='logloss') xgb_model.fit(X_train, y_train) y_pred = xgb_model.predict(X_test) print("XGBoost Accuracy:", accuracy_score(y_test, y_pred)) |
आउटपुट:
नोट: XGBoost में इवाल्यूशन मेट्रिक के संबंध में चेतावनी को स्पष्ट रूप से eval_metric
पैरामीटर सेट करके दबाया जा सकता है, जैसा ऊपर दिखाया गया है।
10. निष्कर्ष
वर्गीकरण मॉडल्स का निर्माण डरावना नहीं होना चाहिए। डेटा प्रीप्रोसेसिंग, एनकोडिंग, फीचर चयन और मॉडल मूल्यांकन के लिए एक संरचित दृष्टिकोण के साथ, आप अपनी विशेष आवश्यकताओं के अनुसार मजबूत मॉडल्स का कुशलतापूर्वक विकास कर सकते हैं। इस लेख में चित्रित मास्टर टेम्पलेट एक व्यापक गाइड के रूप में कार्य करता है, जो डेटा अंतरण से लेकर मॉडल मूल्यांकन तक के वर्कफ्लो को सरल बनाता है। चाहे आप एक शुरुआती हों या एक अनुभवी डेटा वैज्ञानिक, ऐसे टेम्पलेट्स का उपयोग करने से उत्पादकता और मॉडल प्रदर्शन में वृद्धि हो सकती है।
मुख्य बिंदु:
- डेटा प्रीप्रोसेसिंग: मॉडल की सटीकता सुनिश्चित करने के लिए अपने डेटा को सावधानीपूर्वक साफ और तैयार करें।
- एनकोडिंग तकनीक: विभिन्न एल्गोरिदम के अनुरूप श्रेणीबद्ध परिवर्तनीयों को उचित रूप से एनकोड करें।
- फीचर चयन: मॉडल की दक्षता और प्रदर्शन बढ़ाने के लिए फीचर चयन विधियों का उपयोग करें।
- मॉडल विविधता: अपने डेटासेट के लिए सबसे अच्छा प्रदर्शन करने वाले मॉडल की पहचान करने के लिए विभिन्न मॉडलों के साथ प्रयोग करें।
- मूल्यांकन मेट्रिक्स: सटीकता से परे जाएं; समग्र मूल्यांकन के लिए प्रिसिजन, रीकॉल और F1-स्कोर जैसी अन्य मेट्रिक्स पर विचार करें।
इन प्रथाओं को अपनाएं, और अपने डेटा विज्ञान परियोजनाओं को स्पष्टता और सटीकता के साथ सशक्त बनाएं!