या दुसऱ्या वर्गीकरण धड्यांमध्ये, तुम्ही संख्यात्मक डेटाचे वर्गीकरण करण्याचे अधिक मार्ग शोधाल. तुम्हाला एक वर्गीकरण器 दुसऱ्या पेक्षा निवडण्याचे परिणाम देखील समजतील.
आपण गृहित धरतो की तुम्ही मागील धडे पूर्ण केले आहेत आणि तुमच्या data फोल्डरमध्ये cleaned_cuisines.csv नावाचा स्वच्छ डेटा संच आहे, जो या 4-धोड्यांच्या फोल्डरच्या मूळामध्ये आहे.
आम्ही तुमचा notebook.ipynb फाईल स्वच्छ डेटासेटसह लोड केला आहे आणि त्याला X आणि y डेटा फ्रेम्समध्ये विभाजित केले आहे, जे मॉडेल तयार करण्याच्या प्रक्रियेसाठी तयार आहेत.
पूर्वी तुम्ही Microsoft च्या चीट शीट वापरून डेटाचे वर्गीकरण करताना उपलब्ध पर्यायांविषयी शिकलात. Scikit-learn हा एक समान, पण अधिक सूक्ष्म चीट शीट देतो जो तुमच्या अंदाजकांवर (वर्गीकरण器चा दुसरा शब्द) अधिक सहकार्य करू शकतो:
सूचना: या नकाशाला ऑनलाइन भेट द्या आणि दस्तऐवज वाचण्यासाठी मार्गावर क्लिक करा.
हा नकाशा तुमच्या डेटाची स्पष्ट कल्पना असताना खूप उपयुक्त आहे, कारण तुम्ही निर्णयासाठी त्याच्यावर 'चालू' शकता:
- आपल्याकडे >50 नमुने आहेत
- आपल्याला एखाद्या वर्गाची भाकीत करायची आहे
- आपल्याकडे लेबलेड डेटा आहे
- आपल्याकडे 100K पेक्षा कमी नमुने आहेत
- ✨ आपण Linear SVC निवडू शकतो
- जर ते कार्य केले नाही, तर आपल्याकडे संख्यात्मक डेटा असल्याने
- आपण एक ✨ KNeighbors वर्गीकरण器 वापरू शकतो
- जर तेही कार्य केले नाही, तर ✨ SVC आणि ✨ Ensemble वर्गीकरण器 वापरून पहा
- आपण एक ✨ KNeighbors वर्गीकरण器 वापरू शकतो
ही एक खूप उपयुक्त मार्गदर्शिका आहे.
या मार्गाचा अनुसरण करताना, आपण वापरण्यास काही लायब्ररीज आयात करुया.
-
आवश्यक लायब्ररीज आयात करा:
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)
Support-Vector clustering (SVC) म्हणजे ML तंत्रज्ञानांच्या Support-Vector मशीन कुटुंबातील एक उपशाखा आहे (खाली याबद्दल अधिक वाचा). या पद्धतीत, तुम्ही लेबले कसे क्लस्टर करावेत हे ठरवण्यासाठी एक 'kernel' निवडू शकता. 'C' हा पॅरामीटर 'regularization' शी संबंधित आहे जो पॅरामीटरच्या प्रभावाला नियंत्रित करतो. kernel ही काही असू शकते; येथे आम्ही ते 'linear' सेट केले आहे जेणेकरून आपण linear SVC वापरू. Probability ची मूल्ये डीफॉल्ट म्हणजे 'false'; येथे आम्ही ते 'true' ठेवले आहे जेणेकरून प्रॉबॅबिलिटी अंदाज मिळतील. आम्ही random state ला '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 हा ML पद्धतीच्या "शेजार्यांचे" कुटुंबातील एक भाग आहे, जो सुपर्वाइझ्ड आणि अनसुपर्वाइझ्ड दोन्ही शिक्षणासाठी वापरला जातो. या पद्धतीत, पूर्वनिर्धारित संख्येने पॉइंट्स तयार केले जातात आणि डेटा ह्या पॉइंट्सच्या भोवती जमलेला असतो ज्यामुळे सामान्यीकृत लेबले भाकीत केली जाऊ शकतात.
मागील वर्गीकरण器 चांगला होता आणि डेटाशी चांगले दिसला, पण कदाचित आपण चांगला अचूकता मिळवू शकू. 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 मशीन कुटुंबाचा भाग आहेत जे वर्गीकरण आणि रिग्रेशन कार्यासाठी वापरले जातात. SVM "प्रशिक्षण उदाहरणांना स्पेसमधील बिंदूंवर नकाशित करतात" ज्यामुळे दोन वर्गांमधील अंतर जास्तीत जास्त होते. नंतरचा डेटा या स्पेसमध्ये नकाशित होतो आणि त्याच्या वर्गाची भाकीत केली जाते.
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 वर्गीकरण器 वापरून बघू, विशेषतः 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 वर्गीकरण器 बद्दल जाणून घ्या
या मशीन लर्निंग पद्धती "अनेक बेस अंदाजकांच्या भाकितांचे एकत्रीकरण" करतात ज्यामुळे मॉडेलची गुणवत्ता वाढते. आपल्या उदाहरणात, आपण Random Trees आणि AdaBoost वापरले.
-
Random Forest, एक सरासरीकरण पद्धत, ज्यात विविधता टाळण्यासाठी 'decision trees' चा जंगल तयार केला जातो. n_estimators हा पॅरामीटर वृक्षांची संख्या दर्शवितो.
-
AdaBoost एका वर्गीकरण器ला डेटासेटवर फिट करतो आणि नंतर त्याच वर्गीकरण器च्या प्रती त्या डेटासेटवर फिट करतो. त्याने चुकीने वर्गीकृत वस्तूंच्या वजनांवर लक्ष केंद्रित केले जाते आणि पुढील वर्गीकरणासाठी फिट समायोजित करतो.
या प्रत्येक तंत्रज्ञानात अनेक पॅरामीटर्स असतात ज्यांना तुम्ही बदलू शकता. प्रत्येकाच्या डीफॉल्ट पॅरामीटर्सचा शोध घ्या आणि विचार करा की त्या पॅरामीटर्समध्ये बदल केल्याने मॉडेलच्या गुणवत्तेवर काय परिणाम होईल.
या धड्यात खूप तांत्रिक शब्द आहेत, त्यामुळे ही यादी वेळ देऊन पाहा आणि उपयुक्त टर्मिनॉलॉजी समजून घ्या!
सूचना: हे दस्तऐवज AI भाषांतर सेवा Co-op Translator वापरून भाषांतरित केलेले आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरात चुका किंवा असत्यता असू शकतात. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्त्रोत मानला जावा. अत्यावश्यक माहितींसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे होणाऱ्या कोणत्याही गैरसमजुती किंवा चुकीच्या अर्थालाबद्दल आम्ही जबाबदार नाही.
