Skip to content

Latest commit

 

History

History
242 lines (163 loc) · 17.5 KB

File metadata and controls

242 lines (163 loc) · 17.5 KB

स्वयंपाक वर्गीकरण器 2

या दुसऱ्या वर्गीकरण धड्यांमध्ये, तुम्ही संख्यात्मक डेटाचे वर्गीकरण करण्याचे अधिक मार्ग शोधाल. तुम्हाला एक वर्गीकरण器 दुसऱ्या पेक्षा निवडण्याचे परिणाम देखील समजतील.

पूर्वअट

आपण गृहित धरतो की तुम्ही मागील धडे पूर्ण केले आहेत आणि तुमच्या data फोल्डरमध्ये cleaned_cuisines.csv नावाचा स्वच्छ डेटा संच आहे, जो या 4-धोड्यांच्या फोल्डरच्या मूळामध्ये आहे.

तयारी

आम्ही तुमचा notebook.ipynb फाईल स्वच्छ डेटासेटसह लोड केला आहे आणि त्याला X आणि y डेटा फ्रेम्समध्ये विभाजित केले आहे, जे मॉडेल तयार करण्याच्या प्रक्रियेसाठी तयार आहेत.

वर्गीकरण नकाशा

पूर्वी तुम्ही Microsoft च्या चीट शीट वापरून डेटाचे वर्गीकरण करताना उपलब्ध पर्यायांविषयी शिकलात. Scikit-learn हा एक समान, पण अधिक सूक्ष्म चीट शीट देतो जो तुमच्या अंदाजकांवर (वर्गीकरण器चा दुसरा शब्द) अधिक सहकार्य करू शकतो:

Scikit-learn कडून ML नकाशा

सूचना: या नकाशाला ऑनलाइन भेट द्या आणि दस्तऐवज वाचण्यासाठी मार्गावर क्लिक करा.

योजना

हा नकाशा तुमच्या डेटाची स्पष्ट कल्पना असताना खूप उपयुक्त आहे, कारण तुम्ही निर्णयासाठी त्याच्यावर 'चालू' शकता:

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

ही एक खूप उपयुक्त मार्गदर्शिका आहे.

सराव - डेटाचे विभाजन करा

या मार्गाचा अनुसरण करताना, आपण वापरण्यास काही लायब्ररीज आयात करुया.

  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 वर्गीकरण器

Support-Vector clustering (SVC) म्हणजे ML तंत्रज्ञानांच्या Support-Vector मशीन कुटुंबातील एक उपशाखा आहे (खाली याबद्दल अधिक वाचा). या पद्धतीत, तुम्ही लेबले कसे क्लस्टर करावेत हे ठरवण्यासाठी एक 'kernel' निवडू शकता. 'C' हा पॅरामीटर 'regularization' शी संबंधित आहे जो पॅरामीटरच्या प्रभावाला नियंत्रित करतो. kernel ही काही असू शकते; येथे आम्ही ते 'linear' सेट केले आहे जेणेकरून आपण linear SVC वापरू. Probability ची मूल्ये डीफॉल्ट म्हणजे 'false'; येथे आम्ही ते 'true' ठेवले आहे जेणेकरून प्रॉबॅबिलिटी अंदाज मिळतील. आम्ही random state ला '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 हा ML पद्धतीच्या "शेजार्‍यांचे" कुटुंबातील एक भाग आहे, जो सुपर्वाइझ्ड आणि अनसुपर्वाइझ्ड दोन्ही शिक्षणासाठी वापरला जातो. या पद्धतीत, पूर्वनिर्धारित संख्येने पॉइंट्स तयार केले जातात आणि डेटा ह्या पॉइंट्सच्या भोवती जमलेला असतो ज्यामुळे सामान्यीकृत लेबले भाकीत केली जाऊ शकतात.

सराव - 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 मशीन कुटुंबाचा भाग आहेत जे वर्गीकरण आणि रिग्रेशन कार्यासाठी वापरले जातात. SVM "प्रशिक्षण उदाहरणांना स्पेसमधील बिंदूंवर नकाशित करतात" ज्यामुळे दोन वर्गांमधील अंतर जास्तीत जास्त होते. नंतरचा डेटा या स्पेसमध्ये नकाशित होतो आणि त्याच्या वर्गाची भाकीत केली जाते.

सराव - 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 वर्गीकरण器 वापरून बघू, विशेषतः 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 वापरून भाषांतरित केलेले आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरात चुका किंवा असत्यता असू शकतात. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्त्रोत मानला जावा. अत्यावश्यक माहितींसाठी, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे होणाऱ्या कोणत्याही गैरसमजुती किंवा चुकीच्या अर्थालाबद्दल आम्ही जबाबदार नाही.