Šajā rakstā mēs redzēsim, kā izveidot a Nejaušs meža klasifikators izmantojot Scikit-Learn bibliotēka no Python programmēšanas valoda un, lai to izdarītu, mēs izmantojam IRIS datu kopa kas ir diezgan izplatīta un slavena datu kopa.
Izlases mežs
The Nejaušs mežs vai Random Decision Forest ir uzraudzīts mašīnmācīšanās algoritms, ko izmanto klasifikācijai, regresijai un citiem uzdevumiem, izmantojot lēmumu kokus. Random Forests ir īpaši labi piemēroti lielu un sarežģītu datu kopu apstrādei, augstas dimensijas objektu telpu apstrādei un ieskatu sniegšanai par objektu svarīgumu. Šī algoritma spēja saglabāt augstu paredzamo precizitāti, vienlaikus samazinot pārmērību, padara to par populāru izvēli dažādās jomās, tostarp finanšu, veselības aprūpes un attēlu analīzes jomā.
Nejaušs meža klasifikators
Random meža klasifikators izveido a komplekts no lēmumu koki no nejauši izvēlētas apmācības kopas apakškopas. Tā ir lēmumu koku (DT) kopa no nejauši atlasītas apmācības kopas apakškopas, un pēc tam tā apkopo balsis no dažādiem lēmumu kokiem, lai izlemtu galīgo prognozi.
Nejaušs meža klasifikators
Turklāt nejaušais meža klasifikators var apstrādāt gan klasifikācijas, gan regresijas uzdevumus, un tā spēja nodrošināt funkciju svarīguma rādītājus padara to par vērtīgu rīku, lai izprastu dažādu datu kopas mainīgo nozīmi.
Kā darbojas nejaušā mežu klasifikācija
Random Forest Classification ir ansambļa mācīšanās paņēmiens, kas paredzēts, lai uzlabotu klasifikācijas uzdevumu precizitāti un robustumu. Algoritms apmācības laikā izveido daudzus lēmumu kokus un izvada to klasē tas ir klasifikācijas klašu veids. Katrs lēmumu koks nejaušā mežā ir izveidots, izmantojot apmācības datu apakškopu un nejaušu pazīmju apakškopu, kas ievieš koku daudzveidību, padarot modeli izturīgāku un mazāk pakļautu pārmērībai.
Nejaušais meža algoritms izmanto paņēmienu, ko sauc par iekraušanu (Bootstrap Aggregating), lai izveidotu šīs dažādās apakškopas.
Apmācības posmā katrs koks ir izveidots, rekursīvi sadalot datus, pamatojoties uz līdzekļiem. Pie katra sadalīt, algoritms atlasa labāko iezīmi no nejaušās apakškopas, optimizējot informācijas ieguvi vai Džini piemaisījumu. Process turpinās, līdz tiek izpildīts iepriekš noteikts apstāšanās kritērijs, piemēram, tiek sasniegts maksimālais dziļums vai ir minimāls paraugu skaits katrā lapas mezglā.
Kad nejaušais mežs ir apmācīts, tas var veikt prognozes, izmantojot katra koka balsojumu klasei, un klase, kurai ir visvairāk balsu, kļūst par paredzamo klasi ievades datiem.
Funkciju atlase izlases mežos
Funkciju izvēle in Random Forests ir pēc būtības iekļauts individuālo lēmumu koku veidošanā un apkopošanas procesā.
Apmācības posmā katrs lēmumu koks tiek veidots, izmantojot nejaušu pazīmju apakškopu, tādējādi veicinot koku daudzveidību. Šis process ir pazīstams kā funkciju iepakošana, tas palīdz novērst jebkuras atsevišķas funkcijas dominēšanu un veicina izturīgāku modeli.
Algoritms novērtē dažādas pazīmju apakškopas katrā sadalīšanas punktā, atlasot labāko līdzekli mezglu sadalīšanai, pamatojoties uz tādiem kritērijiem kā informācijas ieguvums vai Džini piemaisījums. Līdz ar to Random Forests, protams, ietver funkciju atlases veidu, nodrošinot, ka ansamblis gūst labumu no daudzveidīga funkciju kopuma, lai uzlabotu vispārināšanu un samazinātu pārmērīgu pielāgošanu.
Nejaušs meža klasifikators mašīnmācībā
1. darbība. Datu kopas ielāde
python3
numpy summēšana
# importing required libraries> # importing Scikit-learn library and datasets package> from> sklearn>import> datasets> # Loading the iris plants dataset (classification)> iris>=> datasets.load_iris()> |
>
>
2. darbība: pārbaudiet datu kopas saturu un tajā esošos līdzekļu nosaukumus.
python3
print>(iris.target_names)> |
>
>
Izvade:
[‘setosa’ ‘versicolor’ ‘virginica’]>
python3
print>(iris.feature_names)> |
>
>
Izvade:
atšķirība starp programmu un skriptu
[‘sepal length (cm)’, ’sepal width (cm)’, ’petal length (cm)’, ’petal width (cm)’]>
3. darbība: vilciena testa sadalījums
python3
# dividing the datasets into two parts i.e. training datasets and test datasets> X, y>=> datasets.load_iris( return_X_y>=> True>)> # Splitting arrays or matrices into random train and test subsets> from> sklearn.model_selection>import> train_test_split> # i.e. 70 % training dataset and 30 % test datasets> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.30>)> |
>
>
4. darbība: importējiet izlases meža klasifikatora moduli.
python3
virkņu masīva izveide Java
# importing random forest classifier from assemble module> from> sklearn.ensemble>import> RandomForestClassifier> import> pandas as pd> # creating dataframe of IRIS dataset> data>=> pd.DataFrame({>'sepallength'>: iris.data[:,>0>],>'sepalwidth'>: iris.data[:,>1>],> >'petallength'>: iris.data[:,>2>],>'petalwidth'>: iris.data[:,>3>],> >'species'>: iris.target})> |
>
>
Datu kopas pārskats
python3
# printing the top 5 datasets in iris dataset> print>(data.head())> |
>
>
Izvade:
sepallength sepalwidth petallength petalwidth species 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0>
5. solis: modeļa apmācība
python3
pavasaris un pavasaris mvc
# creating a RF classifier> clf>=> RandomForestClassifier(n_estimators>=> 100>)> # Training the model on the training dataset> # fit function is used to train the model using the training sets as parameters> clf.fit(X_train, y_train)> # performing predictions on the test dataset> y_pred>=> clf.predict(X_test)> # metrics are used to find accuracy or error> from> sklearn>import> metrics> print>()> # using metrics module for accuracy calculation> print>(>'ACCURACY OF THE MODEL:'>, metrics.accuracy_score(y_test, y_pred))> |
>
>
Izvade:
ACCURACY OF THE MODEL: 0.9238095238095239>
6. darbība. Prognozes
Python3
# predicting which type of flower it is.> clf.predict([[>3>,>3>,>2>,>2>]])> |
atjauninājums no pievienošanās sql
>
>
Izvade:
array([0])>
Tas nozīmē, ka tā ir zīdaini ziedu veids, jo datu kopā ir trīs sugas vai klases: Setosa, Versicolor un Virdžīnija.
Pārbaudiet svarīgās funkcijas
Tagad mēs arī noskaidrosim svarīgās funkcijas vai funkciju atlasi IRIS datu kopā, izmantojot šādas koda rindiņas.
python3
# using the feature importance variable> import> pandas as pd> feature_imp>=> pd.Series(clf.feature_importances_, index>=> iris.feature_names).sort_values(ascending>=> False>)> feature_imp> |
>
>
Izvade:
petal length (cm) 0.440050 petal width (cm) 0.423437 sepal length (cm) 0.103293 sepal width (cm) 0.033220 dtype: float64>
Nejauši meži Python's Scikit-Learn Bibliotēkas komplektā ietilpst hiperparametri kas ļauj precīzi noregulēt modeļa uzvedību. Lai optimizētu modeļa veiktspēju, ir ļoti svarīgi saprast un izvēlēties piemērotus hiperparametrus.
Izlases meža klasifikatora parametri
- n_estimators: Koku skaits mežā.
- Vairāk koku parasti nodrošina labāku veiktspēju, taču uz skaitļošanas laika rēķina.
- Sāciet ar vērtību 100 un palieliniet pēc vajadzības.
- max_depth: Katra koka maksimālais dziļums.
- Dziļāki koki var attēlot sarežģītākus rakstus, taču arī pastāv risks, ka tie var tikt pārspīlēti.
- Eksperimentējiet ar vērtībām no 5 līdz 15 un apsveriet zemākas vērtības mazākām datu kopām.
- max_features: Līdzekļu skaits, kas ņemti vērā sadalīšanai katrā mezglā.
- Izplatīta vērtība ir “sqrt” (kvadrātsakne no kopējā objektu skaita).
- Pielāgojiet, pamatojoties uz datu kopas lielumu un funkciju svarīgumu.
- kritērijs: Funkcija, ko izmanto, lai izmērītu sadalīšanas kvalitāti (“džini” vai “entropija”).
- Džini piemaisījums bieži ir nedaudz ātrāks, taču abiem kopumā ir līdzīga veiktspēja.
- min_samples_split: Minimālais paraugu skaits, kas nepieciešams mezgla sadalīšanai.
- Augstākas vērtības var novērst pārmērīgu uzstādīšanu, bet pārāk augstas var kavēt modeļa sarežģītību.
- Sāciet ar 2 un pielāgojiet pēc vajadzības.
- min_samples_leaf: Minimālais paraugu skaits, kas nepieciešams, lai atrastos lapas mezglā.
- Līdzīgi min_samples_split, bet koncentrējas uz lapu mezgliem.
- Sāciet ar 1 un pielāgojiet pēc vajadzības.
- bootstrap: Vai, veidojot kokus, izmantot sāknēšanas iztveršanu (patiesa vai nepatiesa).
- Bootstrapping var uzlabot modeļa dispersiju un vispārināšanu, bet var nedaudz palielināt novirzi.
Random Forest Klasifikatora priekšrocības
- Random Forests ansambļa raksturs, apvienojot vairākus kokus, padara tos mazāk pakļautus pārklāšanai, salīdzinot ar atsevišķiem lēmumu kokiem.
- Efektīva datu kopām ar lielu skaitu funkciju, un tā var labi apstrādāt neatbilstošus mainīgos.
- Random Forests var sniegt ieskatu par objektu nozīmi, palīdzot objektu atlasē un izprast datu kopu.
Random Forest klasifikatora trūkumi
- Nejaušie meži var būt skaitļošanas ziņā dārgi un var prasīt vairāk resursu, jo tiek veidoti vairāki lēmumu koki.
- Ansambļa raksturs apgrūtina atsevišķu prognožu pamatojumu interpretāciju salīdzinājumā ar vienu lēmumu koku.
- Nelīdzsvarotās datu kopās Random Forests var būt novirzīts uz vairākuma klasi, ietekmējot mazākuma klašu paredzamo veiktspēju.
Secinājums
Visbeidzot, Random Forests ar savu lēmumu koku kopumu izceļas kā stabils risinājums dažādiem mašīnmācīšanās uzdevumiem, demonstrējot to daudzpusību un efektivitāti.
Bieži uzdotie jautājumi (FAQ)
J. Kas ir izlases meža klasifikators?
Random Forest Klasifikators ir ansambļa mācību metode, kurā klasifikācijas uzdevumiem izmanto vairākus lēmumu kokus, uzlabojot precizitāti. Tas izceļas ar sarežģītu datu apstrādi, mazina pārmērīgu pielāgošanu un nodrošina stabilas prognozes ar funkciju nozīmi.
J. Vai izlases mežu var izmantot regresijai?
Random Forest var izmantot gan regresijas, gan klasifikācijas uzdevumiem, padarot to par daudzpusīgu mašīnmācīšanās algoritmu.
J. Kāds ir izlases meža princips?
Random Forest veido vairākus lēmumu kokus, izmantojot nejaušas datu kopas apakškopas, un apvieno to rezultātus, lai uzlabotu precizitāti.
J. Kādi ir nejaušā meža pielietojumi?
Īstie lietojumi ietver:
- Medicīniskā diagnoze: Slimību noteikšana, pamatojoties uz pacienta datiem.
- Finanses: Kredītpunktu noteikšana riska novērtēšanai kreditēšanā.