You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/fi/4-Classification/3-Classifiers-2
localizeflow[bot] 3931064a51
chore(i18n): sync translations with latest source changes (chunk 1/1, 21 changes)
3 months ago
..
solution chore(i18n): sync translations with latest source changes (chunk 1/1, 21 changes) 3 months ago
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 21 changes) 3 months ago
assignment.md chore(i18n): sync translations with latest source changes (chunk 1/1, 300 changes) 4 months ago
notebook.ipynb chore(i18n): sync translations with latest source changes (chunk 1/1, 21 changes) 3 months ago

README.md

Cuisine classifiers 2

Tässä toisessa luokittelutunnissa tutustut lisää tapoihin luokitella numeerista dataa. Opit myös, mitä seurauksia yhden luokittimen valinnalla on toisen sijaan.

Esiluentokoe

Ennakkoedellytys

Oletetaan, että olet suorittanut edelliset oppitunnit ja sinulla on siivottu aineisto kansiossasi nimeltä cleaned_cuisines.csv tämän neljän oppitunnin kansion juurikansiossa.

Valmistelut

Olemme ladanneet notebook.ipynb-tiedostosi siivotun aineiston kanssa ja jakaneet sen X- ja y-datafreimeiksi, valmiina mallin rakentamisprosessiin.

Luokittelukartta

Aiemmin opit Microsoftin kikan avulla eri vaihtoehdoista datan luokittelussa. Scikit-learn tarjoaa samanlaisen mutta tarkemman kikan, joka voi auttaa kaventamaan arvioijiasi (toinen nimi luokittimille):

ML Map from Scikit-learn

Vinkki: vieraile tällä kartalla verkossa ja klikkaa polkua lukeaksesi dokumentaatiota.

Suunnitelma

Tämä kartta on hyvin hyödyllinen, kun ymmärrät datasi selkeästi, sillä voit kävellä sen polkuja päätökseen:

  • Meillä on yli 50 näytettä
  • Haluamme ennustaa kategorian
  • Meillä on merkittyä dataa
  • Näytteitä on alle 100 000
  • Voimme valita Linear SVC:n
  • Jos se ei toimi, koska meillä on numeerista dataa
    • Voimme kokeilla KNeighbors-luokitinta
      • Jos sekään ei toimi, kokeile SVC:tä ja yhdistelmäluokittimia

Tämä on hyvin hyödyllinen polku seurata.

Harjoitus - jaa data

Seuraamalla tätä polkua, aloitamme tuomalla käyttöön tarvittavat kirjastot.

  1. Tuo tarvittavat kirjastot:

    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. Jaa harjoitus- ja testidata:

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

Linear SVC luokitin

Support-Vector clustering (SVC) kuuluu Support-Vector machines -menetelmien perheeseen (lue lisää niistä alla). Tässä menetelmässä voit valita ytimen, joka päättää, miten tunnisteet ryhmitellään. C-parametri viittaa regulointiin, joka säätelee parametrien vaikutusta. Ydin voi olla yksi useista; tässä asetamme sen lineaariseksi varmistaaksemme lineaarisen SVC:n käytön. Todennäköisyysasetuksena on oletuksena false; tässä asetamme sen true saadaksemme todennäköisyyksiä. Asetamme satunnaistilan 0:ksi, jotta data sekoittuu todennäköisyyksien saadessa.

Harjoitus - käytä lineaarista SVC:tä

Aloita luomalla taulukko luokittimista. Lisäät taulukkoon vähitellen testatessasi.

  1. Aloita Linear SVC:llä:

    C = 10
    # Luo erilaisia luokittelijoita.
    classifiers = {
        'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0)
    }
    
  2. Kouluta mallisi käyttäen Linear SVC:tä ja tulosta raportti:

    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))
    

    Tulokset ovat varsin hyvät:

    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 luokitin

K-Neighbors kuuluu ”naapuri”-menetelmien koneoppimisperheeseen, jota voidaan käyttää valvottuun ja valvomattomaan oppimiseen. Tässä menetelmässä luodaan ennalta määritelty määrä pisteitä, joihin data kerätään niin, että datan yleistäminen ja tunnisteiden ennustaminen onnistuu.

Harjoitus - käytä K-Neighbors luokitinta

Edellinen luokitin toimi hyvin aineistolla, mutta ehkä voimme saada paremman tarkkuuden. Kokeile K-Neighbors-luokitinta.

  1. Lisää rivi luokittimien taulukkoon (lisää pilkku Linear SVC:n jälkeen):

    'KNN classifier': KNeighborsClassifier(C),
    

    Tulokset ovat hieman heikommat:

    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
    

    Lue lisää K-Neighborsista

Support Vector Classifier

Support-Vector -luokittimet kuuluvat Support-Vector Machine -menetelmien koneoppimisperheeseen, joita käytetään luokittelu- ja regressiotehtävissä. SVM:t ”karttavat harjoitusesimerkit pisteiksi avaruuteen” maksimoidakseen kahden kategorian eron. Seuraavat datat kartoitetaan tähän avaruuteen, jotta niiden kategoria voidaan ennustaa.

Harjoitus - käytä Support Vector Classifieria

Yritetään hieman parempaa tarkkuutta Support Vector Classifierilla.

  1. Lisää pilkku K-Neighborsin jälkeen ja lisää sitten tämä rivi:

    'SVC': SVC(),
    

    Tulokset ovat varsin hyvät!

    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
    

    Lue lisää Support-Vektoreista

Yhdistelmäluokittimet

Seurataan polkua aivan loppuun asti, vaikka edellinen testi oli varsin hyvä. Kokeillaan Yhdistelmäluokittimia, erityisesti Random Forestia ja AdaBoostia:

  'RFST': RandomForestClassifier(n_estimators=100),
  'ADA': AdaBoostClassifier(n_estimators=100)

Tulokset ovat erittäin hyvät, erityisesti Random Forestilla:

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

Lue lisää Yhdistelmäluokittimista

Tämä koneoppimismenetelmä ”yhdistää usean perusarvioijan ennusteet” parantaakseen mallin laatua. Esimerkissämme käytimme satunnaisia puita ja AdaBoostia.

  • Random Forest, keskiarvomenetelmä, rakentaa metsän päätöspuita, joita satunnaistetaan ylisovittamisen välttämiseksi. n_estimators-parametri on puiden lukumäärä.

  • AdaBoost sovittaa luokittimen aineistoon ja sovittaa sitten kopioita tästä luokittimesta samaan aineistoon. Se keskittyy virheellisesti luokiteltujen kohteiden painoihin ja säätää seuraavan luokittimen sovitusta korjatakseen ne.


🚀Haaste

Jokaisella näistä menetelmistä on suuri määrä parametreja, joita voit säätää. Tutki kunkin oletusparametreja ja mieti, mitä niiden muuttaminen merkitsisi mallin laadulle.

Jälkiluennon koe

Kertaus & Itsenäinen opiskelu

Näissä oppitunneissa on paljon ammattisanastoa, joten ota hetki ja kertaile tätä listaa hyödyllisistä termeistä!

Tehtävä

Parametrileikki


Vastuuvapauslauseke: Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä tulee pitää virallisena lähteenä. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä johtuvista väärinymmärryksistä tai virhetulkinnoista.