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 Guida 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

Machine Learning - Regressione lineare


Regressione

Il termine regressione viene utilizzato quando si cerca di trovare la relazione tra le variabili.

In Machine Learning e nella modellazione statistica, tale relazione viene utilizzata per prevedere l'esito di eventi futuri.


Regressione lineare

La regressione lineare utilizza la relazione tra i punti dati per tracciare una linea retta attraverso tutti loro.

Questa linea può essere utilizzata per prevedere i valori futuri.

In Machine Learning, prevedere il futuro è molto importante.


Come funziona?

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

Nell'esempio seguente, l'asse x rappresenta l'età e l'asse y rappresenta la velocità. Abbiamo registrato l'età e la velocità di 13 auto mentre stavano passando un casello. Vediamo se i dati che abbiamo raccolto possono essere utilizzati in una regressione lineare:

Esempio

Inizia disegnando un grafico a dispersione:

import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

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

Risultato:

Esempio

Importa scipye traccia la linea di regressione lineare:

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

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

Risultato:

Esempio spiegato

Importa i moduli di cui hai bisogno.

Puoi conoscere il modulo Matplotlib nel nostro Tutorial Matplotlib .

Puoi conoscere il modulo SciPy nel nostro Tutorial SciPy .

import matplotlib.pyplot as plt
from scipy import stats

Crea gli array che rappresentano i valori degli assi xey:

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

Eseguire un metodo che restituisce alcuni importanti valori chiave della regressione lineare:

slope, intercept, r, p, std_err = stats.linregress(x, y)

Creare una funzione che utilizzi i valori slopee interceptper restituire un nuovo valore. Questo nuovo valore rappresenta il punto in cui sull'asse y verrà posizionato il valore x corrispondente:

def myfunc(x):
  return slope * x + intercept

Esegui ogni valore dell'array x attraverso la funzione. Ciò si tradurrà in una nuova matrice con nuovi valori per l'asse y:

mymodel = list(map(myfunc, x))

Disegna il grafico a dispersione originale:

plt.scatter(x, y)

Disegna la retta di regressione lineare:

plt.plot(x, mymodel)

Visualizza il diagramma:

plt.show()



R per Relazione

È importante sapere come è la relazione tra i valori dell'asse x e i valori dell'asse y, se non ci sono relazioni la regressione lineare non può essere utilizzata per prevedere nulla.

Questa relazione - il coefficiente di correlazione - è chiamata r.

Il rvalore varia da -1 a 1, dove 0 significa nessuna relazione e 1 (e -1) significa correlato al 100%.

Python e il modulo Scipy calcoleranno questo valore per te, tutto ciò che devi fare è alimentarlo con i valori xey.

Esempio

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

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Nota: il risultato -0,76 mostra che esiste una relazione, non perfetta, ma indica che potremmo usare la regressione lineare 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 di 10 anni.

Per fare ciò, abbiamo bisogno della stessa myfunc()funzione dell'esempio sopra:

def myfunc(x):
  return slope * x + intercept

Esempio

Prevedi la velocità di un'auto di 10 anni:

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

speed = myfunc(10)

print(speed)

L'esempio prevedeva una velocità a 85,6, che potremmo anche leggere dal diagramma:


Cattivo adattamento?

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

Esempio

Questi valori per gli assi x e y dovrebbero risultare in un adattamento pessimo per la regressione lineare:

import matplotlib.pyplot as plt
from scipy import stats

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]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

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

Risultato:

E la rrelazione?

Esempio

Dovresti ottenere un rvalore molto basso.

import numpy
from scipy import stats

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]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

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