Esercitazione Python

Python HOME Introduzione di Python Python per iniziare Sintassi Python Commenti Python Variabili Python Tipi di dati Python Numeri Python Fusione in pitone Stringhe Python Python booleani Operatori Python Elenchi Python Tuple di Python Insiemi Python Dizionari Python Python Se... Altro Python While Loops Python per loop Funzioni Python Python Lambda Matrici Python Classi/oggetti Python Ereditarietà Python Iteratori Python Ambito Python Moduli Python Date Python Python matematica Python JSON Python RegEx PIP Python Python Prova... Tranne Input utente Python Formattazione di stringhe Python

Gestione dei file

Gestione dei file Python File di lettura Python Python Scrivi/Crea file Python Elimina file

Moduli Python

Tutorial NumPy Procedura dettagliata di Panda Tutorial Scipy

Python Matplotlib

Introduzione a Matplotlib Matplotlib Inizia Plottaggio Matplotlib Tracciatura Matplotlib Marcatori Matplotlib Linea Matplotlib Etichette Matplotlib Griglia Matplotlib Sottotrame Matplotlib Dispersione Matplotlib Barre Matplotlib Istogrammi Matplotlib Grafici a torta Matplotlib

Apprendimento automatico

Iniziare Modalità mediana media Deviazione standard percentile Distribuzione dei dati Distribuzione normale dei dati Trama a dispersione Regressione lineare Regressione polinomiale Regressione multipla Scala Treno/prova Albero decisionale

Python MySQL

MySQL per iniziare MySQL crea database MySQL Crea tabella Inserimento MySQL MySQL Seleziona MySQL dove MySQL Ordina per Elimina MySQL MySQL Drop Table Aggiornamento MySQL Limite MySQL Unisciti a MySQL

Python MongoDB

MongoDB Inizia MongoDB Crea database MongoDB Crea raccolta Inserisci MongoDB MongoDB Trova Interrogazione MongoDB Ordinamento MongoDB Elimina MongoDB Collezione Drop MongoDB Aggiornamento MongoDB Limite MongoDB

Riferimento Python

Panoramica di Python Funzioni integrate in Python Metodi di stringa Python Metodi dell'elenco Python Metodi del dizionario Python Metodi della tupla Python Metodi di impostazione Python Metodi di file Python Parole chiave Python Eccezioni Python Glossario Python

Riferimento del modulo

Modulo casuale Modulo Richieste Modulo Statistiche Modulo di matematica Modulo cMath

Python come fare per

Rimuovi i duplicati dell'elenco Invertire una stringa Aggiungi due numeri

Esempi Python

Esempi Python Compilatore Python Esercizi di Python Python Quiz Certificato Python

Apprendimento automatico - Addestramento/test


Valuta il tuo modello

In Machine Learning creiamo modelli per prevedere l'esito di determinati eventi, come nel capitolo precedente in cui prevedevamo le emissioni di CO2 di un'auto conoscendo il peso e la cilindrata.

Per misurare se il modello è abbastanza buono, possiamo usare un metodo chiamato Train/Test.


Che cos'è Train/Test

Train/Test è un metodo per misurare la precisione del tuo modello.

Si chiama Train/Test perché dividi il set di dati in due set: un set di addestramento e un set di test.

80% per la formazione e il 20% per i test.

Alleni il modello usando il set di allenamento.

Testare il modello utilizzando il set di test .

Addestrare il modello significa creare il modello.

Testare il modello significa testare l'accuratezza del modello.


Inizia con un set di dati

Inizia con un set di dati che vuoi testare.

Il nostro set di dati illustra 100 clienti in un negozio e le loro abitudini di acquisto.

Esempio

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

plt.scatter(x, y)
plt.show()

Risultato:

L'asse x rappresenta il numero di minuti prima di effettuare un acquisto.

L'asse y rappresenta la quantità di denaro speso per l'acquisto.



Dividi in treno/test

Il training set dovrebbe essere una selezione casuale dell'80% dei dati originali.

Il set di test dovrebbe essere il restante 20%.

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]


Visualizza il set di allenamento

Visualizza lo stesso grafico a dispersione con il training set:

Esempio

plt.scatter(train_x, train_y)
plt.show()

Risultato:

Sembra il set di dati originale, quindi sembra essere una selezione equa:


Visualizza il set di test

Per assicurarci che il set di test non sia completamente diverso, daremo un'occhiata anche al set di test.

Esempio

plt.scatter(test_x, test_y)
plt.show()

Risultato:

Anche il set di test è simile al set di dati originale:


Adatta il set di dati

Che aspetto ha il set di dati? A mio parere, penso che la soluzione migliore sarebbe una regressione polinomiale , quindi tracciamo una linea di regressione polinomiale.

Per tracciare una linea attraverso i punti dati, utilizziamo il plot()metodo del modulo matplotlib:

Esempio

Disegna una linea di regressione polinomiale attraverso i punti dati:

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(0, 6, 100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

Risultato:

Il risultato può supportare il mio suggerimento sul set di dati che si adatta a una regressione polinomiale, anche se ci darebbe alcuni risultati strani se proviamo a prevedere valori al di fuori del set di dati. Esempio: la riga indica che un cliente che trascorre 6 minuti in negozio farebbe un acquisto del valore di 200. Questo è probabilmente un segno di overfitting.

Ma per quanto riguarda il punteggio R al quadrato? Il punteggio R-quadrato è un buon indicatore di quanto bene il mio set di dati si adatti al modello.


R2

Ricordi R2, noto anche come R-quadrato?

Misura la relazione tra l'asse x e l'asse y e il valore varia da 0 a 1, dove 0 significa nessuna relazione e 1 significa totalmente correlato.

Il modulo sklearn ha un metodo chiamato r2_score() che ci aiuterà a trovare questa relazione.

In questo caso vorremmo misurare il rapporto tra i minuti di permanenza di un cliente in negozio e quanto denaro spende.

Esempio

In che misura i miei dati di addestramento si adattano a una regressione polinomiale?

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(train_y, mymodel(train_x))

print(r2)

Nota: il risultato 0,799 mostra che esiste una relazione OK.

Porta il set di prova

Ora abbiamo creato un modello che va bene, almeno per quanto riguarda i dati di allenamento.

Ora vogliamo testare il modello anche con i dati di test, per vedere se ci dà lo stesso risultato.

Esempio

Troviamo il punteggio R2 quando si utilizzano i dati di test:

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(test_y, mymodel(test_x))

print(r2)

Nota: il risultato 0,809 mostra che il modello si adatta anche al set di test e siamo fiduciosi di poter utilizzare il modello per prevedere i valori futuri.


Prevedere i valori

Ora che abbiamo stabilito che il nostro modello è OK, possiamo iniziare a prevedere nuovi valori.

Esempio

Quanti soldi spenderà un cliente acquirente se rimane in negozio per 5 minuti?

print(mymodel(5))

L'esempio prevedeva che il cliente spendesse 22,88 dollari, come sembra corrispondere al diagramma: