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 - Regressione polinomiale


Regressione polinomiale

Se i punti dati chiaramente non si adattano a una regressione lineare (una linea retta attraverso tutti i punti dati), potrebbe essere l'ideale per la regressione polinomiale.

La regressione polinomiale, come la regressione lineare, utilizza la relazione tra le variabili xey per trovare il modo migliore per tracciare una linea attraverso i punti dati.


Come funziona?

Python ha metodi per trovare una relazione tra punti dati e per tracciare una linea di regressione polinomiale. Ti mostreremo come utilizzare questi metodi invece di passare attraverso la formula matematica.

Nell'esempio seguente, abbiamo immatricolato 18 auto mentre stavano passando un determinato casello.

Abbiamo registrato la velocità dell'auto e l'ora del giorno (ora) in cui è avvenuto il passaggio.

L'asse x rappresenta le ore del giorno e l'asse y rappresenta la velocità:

Esempio

Inizia disegnando un grafico a dispersione:

import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

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

Risultato:

Esempio

Importa numpye matplotlibquindi traccia la linea di Polynomial Regression:

import numpy
import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(1, 22, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Risultato:

Esempio spiegato

Importa i moduli di cui hai bisogno.

Puoi conoscere il modulo NumPy nel nostro Tutorial NumPy .

Puoi conoscere il modulo SciPy nel nostro Tutorial SciPy .

import numpy
import matplotlib.pyplot as plt

Crea gli array che rappresentano i valori degli assi xey:

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

NumPy ha un metodo che ci permette di creare un modello polinomiale:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Quindi specificare come verrà visualizzata la riga, iniziamo dalla posizione 1 e finiamo alla posizione 22:

myline = numpy.linspace(1, 22, 100)

Disegna il grafico a dispersione originale:

plt.scatter(x, y)

Disegna la linea di regressione polinomiale:

plt.plot(myline, mymodel(myline))

Visualizza il diagramma:

plt.show()



R-quadrato

È importante sapere quanto è buona la relazione tra i valori degli assi x e y, se non ci sono relazioni la regressione polinomiale non può essere utilizzata per prevedere nulla.

La relazione viene misurata con un valore chiamato r-quadrato.

Il valore r-quadrato è compreso tra 0 e 1, dove 0 significa nessuna relazione e 1 significa 100% correlato.

Python e il modulo Sklearn calcoleranno questo valore per te, tutto ciò che devi fare è alimentarlo con gli array xey:

Esempio

Quanto bene si adattano i miei dati in una regressione polinomiale?

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Nota: il risultato 0,94 mostra che esiste un'ottima relazione e possiamo utilizzare la regressione polinomiale nelle previsioni future.


Prevedere i valori futuri

Ora possiamo utilizzare le informazioni che abbiamo raccolto per prevedere i valori futuri.

Esempio: Proviamo a prevedere la velocità di un'auto che passa il casello intorno alle 17:00:

Per fare ciò, abbiamo bisogno dello stesso mymodelarray dell'esempio sopra:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Esempio

Prevedi la velocità di un'auto che passa alle 17:00:

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

speed = mymodel(17)
print(speed)

L'esempio prevedeva una velocità di 88,87, che potremmo anche leggere dal diagramma:


Cattivo adattamento?

Creiamo un esempio in cui la regressione polinomiale non sarebbe il metodo migliore per prevedere i valori futuri.

Esempio

Questi valori per l'asse x e y dovrebbero risultare in un adattamento pessimo per la regressione polinomiale:

import numpy
import matplotlib.pyplot as plt

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(2, 95, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Risultato:

E il valore r-quadrato?

Esempio

Dovresti ottenere un valore r quadrato molto basso.

import numpy
from sklearn.metrics import r2_score

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Il risultato: 0,00995 indica una pessima relazione e ci dice che questo set di dati non è adatto per la regressione polinomiale.