Skip to content

Latest commit

 

History

History
242 lines (163 loc) · 18 KB

File metadata and controls

242 lines (163 loc) · 18 KB

क्यूज़ीन क्लासिफायर्स 2

इस दूसरे वर्गीकरण पाठ में, आप संख्यात्मक डेटा को वर्गीकृत करने के और तरीकों का अन्वेषण करेंगे। आप यह भी जानेंगे कि एक क्लासिफायर चुनने के क्या परिणाम हो सकते हैं।

आवश्यक शर्त

हम मानते हैं कि आपने पूर्व के पाठ पूरे कर लिए हैं और आपके data फ़ोल्डर में एक साफ़ किया गया डेटासेट है जिसका नाम cleaned_cuisines.csv है, जो इस 4-पाठ फ़ोल्डर के रूट में है।

तैयारी

हमने आपके notebook.ipynb फ़ाइल को साफ़ किए गए डेटासेट के साथ लोड कर लिया है और इसे X और y डेटा फ्रेम्स में विभाजित कर दिया है, ताकि मॉडल निर्माण प्रक्रिया के लिए तैयार हो।

एक वर्गीकरण मानचित्र

पहले, आपने माइक्रोसॉफ्ट की चीट शीट का उपयोग करके डेटा वर्गीकृत करने के विभिन्न विकल्पों के बारे में सीखा। Scikit-learn एक समान, लेकिन अधिक सूक्ष्म चीट शीट प्रदान करता है जो आपके अनुमानों (क्लासिफायर्स के लिए एक और शब्द) को और सीमित करने में मदद कर सकता है:

ML Map from Scikit-learn

टिप: इस मानचित्र को ऑनलाइन देखें और प्रलेखन पढ़ने के लिए रास्ते पर क्लिक करें।

योजना

यह मानचित्र तब बहुत सहायक होता है जब आपके डेटा की अच्छी समझ हो, क्योंकि आप इसके रास्तों पर 'चलकर' निर्णय तक पहुंच सकते हैं:

  • हमारे पास >50 नमूने हैं
  • हम एक श्रेणी की भविष्यवाणी करना चाहते हैं
  • हमारे पास लेबल्ड डेटा है
  • हमारे पास 100K से कम नमूने हैं
  • ✨ हम Linear SVC चुन सकते हैं
  • अगर वह काम नहीं करता, क्योंकि हमारे पास संख्यात्मक डेटा है
    • हम ✨ KNeighbors Classifier आज़मा सकते हैं
      • अगर वह काम नहीं करता, तो ✨ SVC और ✨ Ensemble Classifiers आज़माएं

यह एक बहुत ही उपयोगी मार्ग है जिसे अनुसरण किया जा सकता है।

अभ्यास - डेटा विभाजित करें

इस रास्ते का पालन करते हुए, हमें शुरू में उपयोग के लिए कुछ लाइब्रेरीज़ आयात करनी चाहिए।

  1. आवश्यक लाइब्रेरीज़ आयात करें:

    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
  2. अपने प्रशिक्षण और परीक्षण डेटा को विभाजित करें:

    X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)

Linear SVC क्लासिफायर

सपोर्ट-वेक्टर क्लस्टरिंग (SVC) ML तकनीकों के सपोर्ट-वेक्टर मशीन परिवार का एक हिस्सा है (नीचे इसके बारे में और जानें)। इस विधि में, आप लेबलों को क्लस्टर करने के लिए एक 'कर्नेल' चुन सकते हैं। 'C' पैरामीटर 'रेग्युलराइजेशन' को संदर्भित करता है जो पैरामीटरों के प्रभाव को नियंत्रित करता है। कर्नेल कई हो सकते हैं; यहाँ हमने इसे 'linear' पर सेट किया है ताकि हम linear SVC का लाभ उठा सकें। Probability डिफ़ॉल्ट रूप से 'false' होता है; यहाँ हमने इसे 'true' सेट किया है ताकि संभावना अनुमान एकत्रित किए जा सकें। हमने रैंडम स्टेट को '0' पर सेट किया है ताकि डेटा का शफल किया जा सके और संभावनाएँ प्राप्त की जा सकें।

अभ्यास - linear SVC लागू करें

शुरू करें क्लासिफायर की एक सूची बनाकर। हम परीक्षण करते समय इस सूची में धीरे-धीरे और जोड़ेंगे।

  1. Linear SVC से शुरू करें:

    C = 10
    # विभिन्न वर्गीकरणकर्ता बनाएं।
    classifiers = {
        'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
    }
  2. 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 "नेबर" परिवार का हिस्सा है जो निगरानी वाले और बिना निगरानी वाले दोनों प्रकार के शिक्षण के लिए इस्तेमाल होता है। इस विधि में, पूर्वनिर्धारित संख्या में पॉइंट बनाए जाते हैं और डेटा इन पॉइंट्स के आसपास इकट्ठा किया जाता है ताकि सामान्यीकृत लेबल्स की भविष्यवाणी की जा सके।

अभ्यास - K-Neighbors क्लासिफायर लागू करें

पिछला क्लासिफायर अच्छा था, लेकिन शायद हम बेहतर सटीकता प्राप्त कर सकते हैं। K-Neighbors क्लासिफायर आज़माएँ।

  1. अपनी क्लासिफायर सूची में एक पंक्ति जोड़ें (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 क्लासिफायर

Support-Vector क्लासिफायर्स ML विधियों के Support-Vector Machine परिवार का हिस्सा हैं जो वर्गीकरण और प्रतिगमन कार्यों के लिए उपयोग होते हैं। SVMs "प्रशिक्षण उदाहरणों को स्थान में पॉइंट्स के रूप में मैप करते हैं" ताकि दो श्रेणियों के बीच की दूरी अधिकतम हो सके। बाद के डेटा को इस स्थान में मैप किया जाता है ताकि उनकी श्रेणी की भविष्यवाणी की जा सके।

अभ्यास - Support Vector क्लासिफायर लागू करें

थोड़ी बेहतर सटीकता के लिए Support Vector क्लासिफायर आज़माएँ।

  1. 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 क्लासिफायर्स

चलो पिछले परीक्षण के बावजूद, हम रास्ते के अंत तक चलते हैं। कुछ '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 का उपयोग करके किया गया है। हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियां या अशुद्धियां हो सकती हैं। मूल दस्तावेज़ को इसकी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानवीय अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या व्याख्या के लिए हम जिम्मेदार नहीं हैं।