इस दूसरे वर्गीकरण पाठ में, आप संख्यात्मक डेटा को वर्गीकृत करने के और तरीकों का अन्वेषण करेंगे। आप यह भी जानेंगे कि एक क्लासिफायर चुनने के क्या परिणाम हो सकते हैं।
हम मानते हैं कि आपने पूर्व के पाठ पूरे कर लिए हैं और आपके data फ़ोल्डर में एक साफ़ किया गया डेटासेट है जिसका नाम cleaned_cuisines.csv है, जो इस 4-पाठ फ़ोल्डर के रूट में है।
हमने आपके notebook.ipynb फ़ाइल को साफ़ किए गए डेटासेट के साथ लोड कर लिया है और इसे X और y डेटा फ्रेम्स में विभाजित कर दिया है, ताकि मॉडल निर्माण प्रक्रिया के लिए तैयार हो।
पहले, आपने माइक्रोसॉफ्ट की चीट शीट का उपयोग करके डेटा वर्गीकृत करने के विभिन्न विकल्पों के बारे में सीखा। Scikit-learn एक समान, लेकिन अधिक सूक्ष्म चीट शीट प्रदान करता है जो आपके अनुमानों (क्लासिफायर्स के लिए एक और शब्द) को और सीमित करने में मदद कर सकता है:
टिप: इस मानचित्र को ऑनलाइन देखें और प्रलेखन पढ़ने के लिए रास्ते पर क्लिक करें।
यह मानचित्र तब बहुत सहायक होता है जब आपके डेटा की अच्छी समझ हो, क्योंकि आप इसके रास्तों पर 'चलकर' निर्णय तक पहुंच सकते हैं:
- हमारे पास >50 नमूने हैं
- हम एक श्रेणी की भविष्यवाणी करना चाहते हैं
- हमारे पास लेबल्ड डेटा है
- हमारे पास 100K से कम नमूने हैं
- ✨ हम Linear SVC चुन सकते हैं
- अगर वह काम नहीं करता, क्योंकि हमारे पास संख्यात्मक डेटा है
- हम ✨ KNeighbors Classifier आज़मा सकते हैं
- अगर वह काम नहीं करता, तो ✨ SVC और ✨ Ensemble Classifiers आज़माएं
- हम ✨ KNeighbors Classifier आज़मा सकते हैं
यह एक बहुत ही उपयोगी मार्ग है जिसे अनुसरण किया जा सकता है।
इस रास्ते का पालन करते हुए, हमें शुरू में उपयोग के लिए कुछ लाइब्रेरीज़ आयात करनी चाहिए।
-
आवश्यक लाइब्रेरीज़ आयात करें:
from sklearn.neighbors import KNeighborsClassifier from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier from sklearn.model_selection import train_test_split, cross_val_score from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve import numpy as np
-
अपने प्रशिक्षण और परीक्षण डेटा को विभाजित करें:
X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)
सपोर्ट-वेक्टर क्लस्टरिंग (SVC) ML तकनीकों के सपोर्ट-वेक्टर मशीन परिवार का एक हिस्सा है (नीचे इसके बारे में और जानें)। इस विधि में, आप लेबलों को क्लस्टर करने के लिए एक 'कर्नेल' चुन सकते हैं। 'C' पैरामीटर 'रेग्युलराइजेशन' को संदर्भित करता है जो पैरामीटरों के प्रभाव को नियंत्रित करता है। कर्नेल कई हो सकते हैं; यहाँ हमने इसे 'linear' पर सेट किया है ताकि हम linear SVC का लाभ उठा सकें। Probability डिफ़ॉल्ट रूप से 'false' होता है; यहाँ हमने इसे 'true' सेट किया है ताकि संभावना अनुमान एकत्रित किए जा सकें। हमने रैंडम स्टेट को '0' पर सेट किया है ताकि डेटा का शफल किया जा सके और संभावनाएँ प्राप्त की जा सकें।
शुरू करें क्लासिफायर की एक सूची बनाकर। हम परीक्षण करते समय इस सूची में धीरे-धीरे और जोड़ेंगे।
-
Linear SVC से शुरू करें:
C = 10 # विभिन्न वर्गीकरणकर्ता बनाएं। classifiers = { 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) }
-
Linear SVC का उपयोग करके मॉडल को प्रशिक्षित करें और एक रिपोर्ट प्रिंट करें:
n_classifiers = len(classifiers) for index, (name, classifier) in enumerate(classifiers.items()): classifier.fit(X_train, np.ravel(y_train)) y_pred = classifier.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print("Accuracy (train) for %s: %0.1f%% " % (name, accuracy * 100)) print(classification_report(y_test,y_pred))
परिणाम काफी अच्छा है:
Accuracy (train) for Linear SVC: 78.6% precision recall f1-score support chinese 0.71 0.67 0.69 242 indian 0.88 0.86 0.87 234 japanese 0.79 0.74 0.76 254 korean 0.85 0.81 0.83 242 thai 0.71 0.86 0.78 227 accuracy 0.79 1199 macro avg 0.79 0.79 0.79 1199 weighted avg 0.79 0.79 0.79 1199
K-Neighbors "नेबर" परिवार का हिस्सा है जो निगरानी वाले और बिना निगरानी वाले दोनों प्रकार के शिक्षण के लिए इस्तेमाल होता है। इस विधि में, पूर्वनिर्धारित संख्या में पॉइंट बनाए जाते हैं और डेटा इन पॉइंट्स के आसपास इकट्ठा किया जाता है ताकि सामान्यीकृत लेबल्स की भविष्यवाणी की जा सके।
पिछला क्लासिफायर अच्छा था, लेकिन शायद हम बेहतर सटीकता प्राप्त कर सकते हैं। K-Neighbors क्लासिफायर आज़माएँ।
-
अपनी क्लासिफायर सूची में एक पंक्ति जोड़ें (Linear SVC आइटम के बाद कॉमा जोड़ें):
'KNN classifier': KNeighborsClassifier(C),
परिणाम कुछ खराब है:
Accuracy (train) for KNN classifier: 73.8% precision recall f1-score support chinese 0.64 0.67 0.66 242 indian 0.86 0.78 0.82 234 japanese 0.66 0.83 0.74 254 korean 0.94 0.58 0.72 242 thai 0.71 0.82 0.76 227 accuracy 0.74 1199 macro avg 0.76 0.74 0.74 1199 weighted avg 0.76 0.74 0.74 1199✅ K-Neighbors के बारे में जानें
Support-Vector क्लासिफायर्स ML विधियों के Support-Vector Machine परिवार का हिस्सा हैं जो वर्गीकरण और प्रतिगमन कार्यों के लिए उपयोग होते हैं। SVMs "प्रशिक्षण उदाहरणों को स्थान में पॉइंट्स के रूप में मैप करते हैं" ताकि दो श्रेणियों के बीच की दूरी अधिकतम हो सके। बाद के डेटा को इस स्थान में मैप किया जाता है ताकि उनकी श्रेणी की भविष्यवाणी की जा सके।
थोड़ी बेहतर सटीकता के लिए Support Vector क्लासिफायर आज़माएँ।
-
K-Neighbors आइटम के बाद कॉमा जोड़ें, फिर यह लाइन जोड़ें:
'SVC': SVC(),
परिणाम काफी अच्छा है!
Accuracy (train) for SVC: 83.2% precision recall f1-score support chinese 0.79 0.74 0.76 242 indian 0.88 0.90 0.89 234 japanese 0.87 0.81 0.84 254 korean 0.91 0.82 0.86 242 thai 0.74 0.90 0.81 227 accuracy 0.83 1199 macro avg 0.84 0.83 0.83 1199 weighted avg 0.84 0.83 0.83 1199✅ Support-Vectors के बारे में जानें
चलो पिछले परीक्षण के बावजूद, हम रास्ते के अंत तक चलते हैं। कुछ 'Ensemble Classifiers', विशेष रूप से Random Forest और AdaBoost आज़माते हैं:
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)परिणाम बहुत अच्छा है, खासकर Random Forest के लिए:
Accuracy (train) for RFST: 84.5%
precision recall f1-score support
chinese 0.80 0.77 0.78 242
indian 0.89 0.92 0.90 234
japanese 0.86 0.84 0.85 254
korean 0.88 0.83 0.85 242
thai 0.80 0.87 0.83 227
accuracy 0.84 1199
macro avg 0.85 0.85 0.84 1199
weighted avg 0.85 0.84 0.84 1199
Accuracy (train) for ADA: 72.4%
precision recall f1-score support
chinese 0.64 0.49 0.56 242
indian 0.91 0.83 0.87 234
japanese 0.68 0.69 0.69 254
korean 0.73 0.79 0.76 242
thai 0.67 0.83 0.74 227
accuracy 0.72 1199
macro avg 0.73 0.73 0.72 1199
weighted avg 0.73 0.72 0.72 1199
✅ Ensemble Classifiers के बारे में जानें
यह मशीन लर्निंग विधि "कई बुनियादी अनुमानों (base estimators) की भविष्यवाणियों को संयोजित करती है" ताकि मॉडल की गुणवत्ता सुधारी जा सके। हमारे उदाहरण में, हमने Random Trees और AdaBoost का उपयोग किया।
-
Random Forest, एक औसत विधि, 'निर्णय वृक्षों' का 'वन' बनाता है जिसमें यादृच्छिकता होती है ताकि ओवरफिटिंग से बचा जा सके। n_estimators पैरामीटर पेड़ों की संख्या पर सेट होता है।
-
AdaBoost एक क्लासिफायर को डेटासेट पर फिट करता है और फिर उस क्लासिफायर की प्रतिलिपि उसी डेटासेट पर फिट करता है। यह गलत वर्गीकृत वस्तुओं के वजन पर ध्यान केंद्रित करता है और अगले क्लासिफायर के लिए फ़िट को समायोजित करता है।
इन सभी तकनीकों के बहुत सारे पैरामीटर होते हैं जिन्हें आप ट्वीक कर सकते हैं। प्रत्येक के डिफ़ॉल्ट पैरामीटर की जांच करें और सोचें कि इन पैरामीटरों को ट्वीक करने का मॉडल की गुणवत्ता पर क्या प्रभाव पड़ेगा।
इन पाठों में बहुत सारी तकनीकी शब्दावली है, इसलिए कुछ समय निकालकर इस सूची का अध्ययन करें जो उपयोगी शब्दावली प्रस्तुत करती है!
अस्वीकरण:
इस दस्तावेज़ का अनुवाद एआई अनुवाद सेवा Co-op Translator का उपयोग करके किया गया है। हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियां या अशुद्धियां हो सकती हैं। मूल दस्तावेज़ को इसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानवीय अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या व्याख्या के लिए हम जिम्मेदार नहीं हैं।
