|
|
6 days ago | |
|---|---|---|
| .. | ||
| solution | 6 days ago | |
| README.md | 6 days ago | |
| assignment.md | 3 months ago | |
| notebook.ipynb | 3 months ago | |
README.md
Köögi klassifikaatorid 2
Selles teises klassifikatsiooniõppetunnis uurid rohkem viise, kuidas klassifitseerida numbrilisi andmeid. Samuti õpid, millised on tagajärjed ühe klassifikaatori valimisel teise asemel.
Eelloengu viktoriin
Eeldused
Eeldame, et oled läbinud eelnevad õppetunnid ja sul on puhastatud andmestik kaustas data, mille nimi on cleaned_cuisines.csv ja mis asub selle nelja õppetunni kausta juurikas.
Ettevalmistus
Oleme sinu notebook.ipynb faili laadinud puhastatud andmestikuga ja jaganud selle X ja y andmeraamideks, mis on valmis mudeli loomise protsessiks.
Klassifikatsiooni kaart
Eelnevalt õppisid erinevaid võimalusi andmete klassifitseerimiseks, kasutades Microsofti spikrit. Scikit-learn pakub sarnast, kuid detailsemat spikrit, mis aitab veelgi täpsemalt valida sobivaid hindajaid (teine termin klassifikaatorite kohta):
Näpunäide: vaata seda kaarti veebis ja klõpsa teekonnal, et lugeda dokumentatsiooni.
Plaan
See kaart on väga kasulik, kui sul on selge arusaam oma andmetest, kuna saad selle teekonnal liikuda otsuse suunas:
- Meil on >50 näidet
- Tahame ennustada kategooriat
- Meil on märgistatud andmed
- Meil on vähem kui 100K näidet
- ✨ Võime valida Linear SVC
- Kui see ei tööta, kuna meil on numbrilised andmed
- Võime proovida ✨ KNeighbors Classifier
- Kui see ei tööta, proovime ✨ SVC ja ✨ Ensemble Classifiers
- Võime proovida ✨ KNeighbors Classifier
See on väga kasulik teekond, mida järgida.
Harjutus - andmete jagamine
Selle teekonna järgimiseks peaksime alustama vajalike teekide importimisest.
-
Impordi vajalikud teegid:
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 -
Jaga oma treening- ja testandmed:
X_train, X_test, y_train, y_test = train_test_split(cuisines_feature_df, cuisines_label_df, test_size=0.3)
Linear SVC klassifikaator
Support-Vector clustering (SVC) kuulub Support-Vector masinate ML-tehnikate perekonda (loe nende kohta rohkem allpool). Selles meetodis saad valida 'tuuma', et otsustada, kuidas silte grupeerida. Parameeter 'C' viitab 'regulatsioonile', mis reguleerib parameetrite mõju. Tuum võib olla üks mitmest; siin määrame selle 'lineaarseks', et kasutada lineaarset SVC-d. Tõenäosus on vaikimisi 'vale'; siin määrame selle 'tõeks', et saada tõenäosuse hinnanguid. Määrame juhusliku oleku '0', et andmeid segada ja saada tõenäosusi.
Harjutus - rakenda lineaarne SVC
Alusta klassifikaatorite massiivi loomisest. Lisad sellele massiivile järk-järgult, kui testime.
-
Alusta Lineaarse SVC-ga:
C = 10 # Create different classifiers. classifiers = { 'Linear SVC': SVC(kernel='linear', C=C, probability=True,random_state=0) } -
Treeni oma mudelit, kasutades Lineaarset SVC-d, ja prindi välja raport:
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))Tulemus on üsna hea:
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-Naabrite klassifikaator
K-Naabrid kuuluvad ML-meetodite "naabrite" perekonda, mida saab kasutada nii juhendatud kui juhendamata õppimiseks. Selles meetodis luuakse eelnevalt määratud arv punkte ja andmed kogutakse nende punktide ümber, et üldistatud silte saaks andmetele ennustada.
Harjutus - rakenda K-Naabrite klassifikaator
Eelmine klassifikaator oli hea ja töötas andmetega hästi, kuid võib-olla saame parema täpsuse. Proovi K-Naabrite klassifikaatorit.
-
Lisa rida oma klassifikaatorite massiivi (lisa koma pärast Lineaarse SVC elementi):
'KNN classifier': KNeighborsClassifier(C),Tulemus on veidi halvem:
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✅ Loe K-Naabrite kohta
Support-Vector klassifikaator
Support-Vector klassifikaatorid kuuluvad Support-Vector Machine ML-meetodite perekonda, mida kasutatakse klassifikatsiooni ja regressiooni ülesannete jaoks. SVM-id "kaardistavad treeningnäited punktidena ruumis", et maksimeerida kahe kategooria vahelist kaugust. Järgnevad andmed kaardistatakse sellesse ruumi, et nende kategooriat ennustada.
Harjutus - rakenda Support-Vector klassifikaator
Proovime veidi paremat täpsust Support-Vector klassifikaatoriga.
-
Lisa koma pärast K-Naabrite elementi ja seejärel lisa see rida:
'SVC': SVC(),Tulemus on üsna hea!
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✅ Loe Support-Vectors kohta
Ensemble klassifikaatorid
Järgime teekonda lõpuni, kuigi eelmine test oli üsna hea. Proovime mõningaid 'Ensemble klassifikaatoreid', eriti Random Forest ja AdaBoost:
'RFST': RandomForestClassifier(n_estimators=100),
'ADA': AdaBoostClassifier(n_estimators=100)
Tulemus on väga hea, eriti Random Foresti puhul:
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
✅ Loe Ensemble klassifikaatorite kohta
See masinõppe meetod "ühendab mitme baashindaja ennustused", et parandada mudeli kvaliteeti. Meie näites kasutasime Random Trees ja AdaBoosti.
-
Random Forest, keskmistamismeetod, ehitab 'otsustuspuude' 'metsa', mis on juhuslikkusega infundeeritud, et vältida üleõppimist. Parameeter n_estimators määratakse puude arvuks.
-
AdaBoost sobitab klassifikaatori andmestikuga ja seejärel sobitab selle klassifikaatori koopiaid samale andmestikule. See keskendub valesti klassifitseeritud üksuste kaaludele ja kohandab sobivust järgmise klassifikaatori jaoks, et parandada.
🚀Väljakutse
Igal neist tehnikatest on suur hulk parameetreid, mida saad kohandada. Uuri igaühe vaikimisi parameetreid ja mõtle, mida nende parameetrite kohandamine tähendaks mudeli kvaliteedi jaoks.
Järelloengu viktoriin
Ülevaade ja iseseisev õppimine
Nendes õppetundides on palju erialatermineid, seega võta hetk, et vaadata seda nimekirja kasulikest terminidest!
Ülesanne
Lahtiütlus:
See dokument on tõlgitud, kasutades AI tõlketeenust Co-op Translator. Kuigi püüame tagada täpsust, palun arvestage, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks lugeda autoriteetseks allikaks. Olulise teabe puhul on soovitatav kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valede tõlgenduste eest.
