|
|
3 months ago | |
|---|---|---|
| .. | ||
| solution | 3 months ago | |
| README.md | 3 months ago | |
| assignment.md | 4 months ago | |
| notebook.ipynb | 3 months ago | |
README.md
Razvrščevalci kuhinj 2
V tej drugi lekciji o razvrščanju boste raziskali več načinov razvrščanja številskih podatkov. Naučili se boste tudi posledic izbire enega razvrščevalca namesto drugega.
Kviz pred predavanjem
Predpogoj
Predvidevamo, da ste opravili prejšnje lekcije in imate v vaši mapi data očiščeno podatkovno zbirko imenovano cleaned_cuisines.csv v korenu te 4-lekcijske mape.
Priprava
Naložili smo vašo datoteko notebook.ipynb z očiščeno podatkovno zbirko in jo razdelili v podatkovni okvir X in y, pripravljena za proces gradnje modela.
Zemljevid razvrščanja
Prej ste spoznali različne možnosti, ki jih imate pri razvrščanju podatkov z uporabo Microsoftovega prevarantskega lista. Scikit-learn ponuja podoben, a bolj podroben prevarantski list, ki lahko še dodatno pomaga zožiti vaše ocenovalce (drug izraz za razvrščevalce):
Namig: obiščite ta zemljevid na spletu in klikajte po poti, da preberete dokumentacijo.
Načrt
Ta zemljevid je zelo koristen, ko imate jasen vpogled v svoje podatke, saj lahko ‘hodite’ po njegovih poteh do odločitve:
- Imamo >50 vzorcev
- Želimo napovedati kategorijo
- Imamo označene podatke
- Imamo manj kot 100.000 vzorcev
- ✨ Lahko izberemo Linear SVC
- Če to ne deluje, ker imamo številske podatke
- Lahko poskusimo s ✨ KNeighbors Classifier
- Če tudi to ne deluje, poskusimo ✨ SVC in ✨ Ensemble Classifiers
- Lahko poskusimo s ✨ KNeighbors Classifier
To je zelo uporabna slediti.
Vaja - razdelite podatke
Sledi tej poti, začnemo z uvozom nekaterih knjižnic, ki jih bomo uporabili.
-
Uvoz potrebnih knjižnic:
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 -
Razdelite svoje trening in testne podatke:
X_train, X_test, y_train, y_test = train_test_split(cuisines_features_df, cuisines_label_df, test_size=0.3)
Linearni SVC razvrščevalec
Support-Vector clustering (SVC) je del družine metod strojnega učenja Support-Vector machines (SVM) (o njih več spodaj). Pri tej metodi lahko izberete 'jedro' (kernel), da določite, kako zgrupirate oznake. Parameter 'C' se nanaša na 'regularizacijo', ki uravnava vpliv parametrov. Jedro je lahko eno izmed več; tukaj ga nastavimo na 'linear', da zagotovimo uporabo linearnega SVC. Privzeto je Probability nastavljeno na 'false'; tukaj smo ga nastavili na 'true', da zberemo ocene verjetnosti. Za naključno stanje smo nastavili '0', da premešamo podatke za verjetnosti.
Vaja - uporabite linearen SVC
Začnite z ustvarjanjem tabele razvrščevalcev. Postopoma boste dodajali elemente v to tabelo, ko boste testirali.
-
Začnite z Linear SVC:
C = 10 # Ustvari različne klasifikatorje. classifiers = { 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) } -
Naučite svoj model z uporabo Linear SVC in izpišite poročilo:
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))Rezultat je precej dober:
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-najbližjih sosedov razvrščevalec
K-najbližjih sosedov spada v družino metod strojnega učenja "neighbors", ki se lahko uporabljajo tako za nadzorovano kot nenadzorovano učenje. Pri tej metodi se ustvari preddefinirano število točk in podatki se zbirajo okoli teh točk, tako da je mogoče napovedati posplošene oznake za podatke.
Vaja - uporabite K-najbližjih sosedov
Prejšnji razvrščevalec je bil dober in je deloval dobro s podatki, vendar morda lahko dosežemo boljšo natančnost. Poskusite s K-najbližjih sosedov.
-
Dodajte vrstico v svojo tabelo razvrščevalcev (dodajte vejico za Linear SVC elementom):
'KNN classifier': KNeighborsClassifier(C),Rezultat je malo slabši:
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✅ Spoznajte K-najbližjih sosedov
Support Vector razvrščevalec
Support-Vector razvrščevalci so del družine Support-Vector Machines metod strojnega učenja, ki se uporabljajo za razvrščanje in regresijo. SVM “preslika trening primere v točke v prostoru”, da maksimira razdaljo med dvema kategorijama. Kasnejši podatki so preslikani v ta prostor, da je mogoče napovedati njihovo kategorijo.
Vaja - uporabite Support Vector razvrščevalec
Poskusimo doseči malo boljšo natančnost s Support Vector razvrščevalcem.
-
Dodajte vejico za K-najbližjih sosedov elementom in nato dodajte to vrstico:
'SVC': SVC(),Rezultat je precej dober!
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✅ Spoznajte Support-Vectors
Ensemble razvrščevalci
Pojdimo do konca poti, čeprav je bil prejšnji test precej dober. Poskusimo nekaj 'Ensemble razvrščevalcev', natančneje Random Forest in AdaBoost:
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
Rezultat je zelo dober, še posebej za 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
✅ Spoznajte Ensemble razvrščevalce
Ta metoda strojnega učenja "združuje napovedi več osnovnih ocenjevalcev", da izboljša kakovost modela. V našem primeru smo uporabili Random Trees in AdaBoost.
-
Random Forest, metoda povprečenja, gradi 'gosto' drevo 'odločilnih dreves' vpeto z naključnostjo, da prepreči prekomerno prileganje (overfitting). Parameter n_estimators je nastavljen na število dreves.
-
AdaBoost prilagodi razvrščevalec na podatkovno množico in nato prilagodi kopije tega razvrščevalca na isti podatkovni množici. Osredotoča se na uteži nepravilno razvrščenih elementov in prilagaja prileganje za naslednjega razvrščevalca, da to popravi.
🚀Izziv
Vsaka od teh tehnik ima veliko parametrov, ki jih lahko spreminjate. Raziskujte privzete nastavitve vsakega in razmislite, kaj bi pomenilo prilagajanje teh parametrov za kakovost modela.
Kviz po predavanju
Pregled in samostojno učenje
V teh lekcijah je veliko strokovnega besedišča, zato si vzemite trenutek za pregled tega seznama uporabne terminologije!
Domača naloga
Zavrnitev odgovornosti: Ta dokument je bil preveden z uporabo AI prevajalske storitve Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatski prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku velja za avtoritativni vir. Za pomembne informacije priporočamo strokovni prevod s strani človeka. Za morebitna nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda, ne prevzemamo odgovornosti.
