Inhoudsopgave:
- Uw gegevens laden
- Lijn 1 importeert de bibliotheek waarmee u de gegevensset in twee delen kunt splitsen.
- array ([0, 0, 2, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >>>> y_test
- True], dtype = bool)
Video: Doen ze dat zo: Hoe worden onze riolen gecontroleerd? | Het Klokhuis 2024
te selecteren. Het willekeurige bosmodel is een ensemblemodel dat kan worden gebruikt in voorspellende analyses; er is een ensemble (selectie) beslissingsbomen nodig om het model te maken. Het idee is om een willekeurige steekproef van zwakke leerlingen (een willekeurige subset van de trainingsgegevens) te nemen en hen te laten stemmen om het sterkste en beste model te selecteren. Het willekeurige forest-model kan worden gebruikt voor classificatie of regressie. In het volgende voorbeeld wordt het willekeurige bosmodel gebruikt om de Iris-soorten te classificeren.
Uw gegevens laden
Deze codelijst laadt de
iris
dataset in uw sessie: >>>> van sklearn. datasets importeren load_iris >>>> iris = load_iris ()
Een instantie van de classifier maken
De volgende twee coderegels maken een instantie van de classifier. De eerste regel importeert de willekeurige bosbibliotheek. De tweede regel maakt een instantie van het willekeurige forest-algoritme:
>>>> van sklearn. ensemble import RandomForestClassifier >>>> rf = RandomForestClassifier (n_estimators = 15,
random_state = 111)
De parameter
n_estimators
in de constructor is een veelgebruikte afstemmingsparameter voor het willekeurige forest-model. De waarde wordt gebruikt om het aantal bomen in het bos op te bouwen. Het ligt meestal tussen de 10 en 100 procent van de gegevensset, maar het hangt af van de gegevens die u gebruikt. Hier wordt de waarde ingesteld op 15, wat 10 procent van de gegevens is. Later ziet u dat het wijzigen van de parameterwaarde in 150 (100 procent) dezelfde resultaten oplevert.
De n
_estimators
worden gebruikt om de modelprestaties en overfitting af te stemmen. Hoe groter de waarde, hoe beter de prestaties, maar ten koste van overfitting. Hoe kleiner de waarde, hoe groter de kans op niet-overflooiing, maar ten koste van lagere prestaties. Ook is er een punt waar verhoging van het aantal in het algemeen zal afnemen in nauwkeurigheidsverbetering en het benodigde rekenvermogen dramatisch kan verhogen. De parameter wordt standaard ingesteld op 10 als deze wordt weggelaten in de constructor.
U moet de gegevensset splitsen in trainings- en testsets voordat u een instantie van de willekeurige forest-classificatie kunt maken. De volgende code zal die taak volbrengen: >>>> van sklearn import cross_validation >>>> X_train, X_test, y_train, y_test =
cross_validation. train_test_split (iris. data,
iris. target, test_size = 0. 10, random_state = 111) >>>> rf = rf. fit (X_train, y_train)
Lijn 1 importeert de bibliotheek waarmee u de gegevensset in twee delen kunt splitsen.
Lijn 2 roept de functie op uit de bibliotheek die de gegevensset in twee delen splitst en wijst de nu verdeelde gegevensreeksen toe aan twee paren variabelen.
Regel 3 neemt het voorbeeld van de willekeurige forest-classificator die u zojuist hebt gemaakt en roept vervolgens de fit-methode op om het model te trainen met de trainingsgegevensset.
Testgegevens uitvoeren
In de volgende code voert de eerste regel de testgegevensreeks naar het model, waarna de derde regel de uitvoer weergeeft: >>>> voorspeld = rf. voorspellen (X_test) >>>> voorspelde
matrix ([0, 0, 2, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) > Het model evalueren
U kunt de uitvoer van de voorspelling vergelijken met de array
- y_test
- . Als gevolg hiervan kunt u zien dat het twee testdatapunten verkeerd heeft voorspeld. Dus de nauwkeurigheid van het willekeurige bosmodel was 86. 67 procent.
- Hier is de code: >>>> van sklearn import-statistieken >>>> voorspelde
array ([0, 0, 2, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >>>> y_test
array ([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 2, 2, 2]) >>>> statistieken. accuracy_score (y_test, voorspeld)
0. 8666666666666667 # 1. 0 is 100 procent nauwkeurigheid >>>> voorspeld == y_test
array ([Waar, Waar, Waar, Waar, Onwaar, Waar, Waar,
Waar, Waar, Waar, Waar, True, False, True,
True], dtype = bool)
Hoe werkt het willekeurige forest-model als u de parameter
n_estimators
wijzigt in 150? Het lijkt erop dat het geen verschil zal maken voor deze kleine dataset. Het produceert hetzelfde resultaat: >>>> rf = RandomForestClassifier (n_estimators = 150, random_state = 111) >>>> rf = rf. fit (X_train, y_train) >>>> voorspeld = rf. voorspellen (X_test) >>>> voorspelde
matrix ([0, 0, 2, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >