Sommario:
- Caricamento dei dati
- La riga 1 importa la libreria che consente di dividere il set di dati in due parti.
- array ([0, 0, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >>>> y_test
- Vero], dtype = bool)
Video: Conferimento dell’Ordine del Cherubino - Università di Pisa 2024
Il modello a foresta casuale è un modello di insieme che può essere utilizzato nell'analisi predittiva; serve un ensemble (selezione) di alberi decisionali per creare il suo modello. L'idea è di prendere un campione casuale di studenti deboli (un sottoinsieme casuale dei dati di addestramento) e farli votare per selezionare il modello più forte e migliore. Il modello foresta casuale può essere utilizzato per la classificazione o la regressione. Nell'esempio seguente, il modello foresta casuale viene utilizzato per classificare la specie Iris.
Caricamento dei dati
Questo elenco di codici caricherà il set di dati
iris
nella sessione: >>>> da sklearn. set di dati import load_iris >>>> iris = load_iris ()
Creazione di un'istanza del classificatore
Le seguenti due righe di codice creano un'istanza del classificatore. La prima riga importa la libreria foresta casuale. La seconda riga crea un'istanza dell'algoritmo della foresta casuale:
>>>> da sklearn. ensemble import RandomForestClassifier >>>> rf = RandomForestClassifier (n_estimators = 15,
random_state = 111)
Il parametro
n_estimators
nel costruttore è un parametro di tuning comunemente usato per il modello di foresta casuale. Il valore viene utilizzato per creare il numero di alberi nella foresta. In genere è compreso tra il 10 e il 100 percento del set di dati, ma dipende dai dati che stai utilizzando. Qui, il valore è impostato su 15, che corrisponde al 10 percento dei dati. Successivamente, vedrai che la modifica del valore del parametro su 150 (100 percento) produce gli stessi risultati.
Il n
_estimators
viene usato per mettere a punto le prestazioni del modello e il sovradattamento. Maggiore è il valore, migliori sono le prestazioni ma a costo di un sovradattamento. Più piccolo è il valore, maggiori sono le possibilità di non sovralimentare ma al costo di prestazioni inferiori. Inoltre, vi è un punto in cui l'aumento del numero generalmente peggiorerà nel miglioramento della precisione e potrebbe aumentare notevolmente la potenza di calcolo necessaria. Il parametro è impostato su 10 se viene omesso nel costruttore.
È necessario suddividere il set di dati in training e set di test prima di poter creare un'istanza del classificatore di foresta casuale. Il seguente codice eseguirà questo compito: >>>> da 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)
La riga 1 importa la libreria che consente di dividere il set di dati in due parti.
La riga 2 chiama la funzione dalla libreria che divide il set di dati in due parti e assegna i set di dati ora divisi a due coppie di variabili.
La riga 3 prende l'istanza del classificatore di foresta casuale appena creato, quindi chiama il metodo di adattamento per addestrare il modello con il set di dati di addestramento.
Esecuzione dei dati di test
Nel seguente codice, la prima riga alimenta il dataset di test al modello, quindi la terza riga visualizza l'output: >>>> previsto = rf. prevedere (X_test) >>>> array
previsto ([0, 0, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) > Valutazione del modello
È possibile eseguire il riferimento incrociato dell'output dalla previsione con l'array
- y_test
- . Di conseguenza, è possibile vedere che ha previsto due punti di test in modo errato. Quindi l'accuratezza del modello di foresta casuale era 86. 67 percento.
- Ecco il codice: >>>> da sklearn import metrics >>>> previsto
array ([0, 0, 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]) >>>> metriche. accuracy_score (y_test, previsto)
0. 8666666666666667 # 1. 0 è precisione al 100% >>>> previsto == y_test
array ([Vero, Vero, Vero, Vero, Falso, Vero, Vero,
Vero, Vero, Vero, Vero, Vero, Falso, Vero,
Vero], dtype = bool)
Come funziona il modello casuale della foresta se si modifica il parametro
n_estimators
in 150? Sembra che non faccia la differenza per questo piccolo set di dati. Produce lo stesso risultato: >>>> rf = RandomForestClassifier (n_estimators = 150, random_state = 111) >>>> rf = rf. fit (X_train, y_train) >>>> previsto = rf. prevedere (X_test) >>>> array
previsto ([0, 0, 2, 2, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2]) >