Share via


Esercitazione Python: Preparare i dati per eseguire il training di un modello di regressione lineare con il Machine Learning in SQL

Si applica a: SQL Server 2017 (14.x) e versioni successive Istanza gestita di SQL di Azure

Nella seconda parte di questa serie di esercitazioni in quattro parti si prepareranno i dati da un database tramite Python. Più avanti nel corso della serie questi dati verranno usati per eseguire il training e la distribuzione di un modello di regressione lineare in Python con Machine Learning Services per SQL Server oppure in cluster Big Data di SQL Server 2019.

Nella seconda parte di questa serie di esercitazioni in quattro parti si prepareranno i dati da un database tramite Python. Più avanti nel corso della serie questi dati verranno usati per eseguire il training e la distribuzione di un modello di regressione lineare in Python con Machine Learning Services per SQL Server.

Nella seconda parte di questa serie di esercitazioni in quattro parti si prepareranno i dati da un database tramite Python. Più avanti nel corso della serie questi dati verranno usati per eseguire il training e la distribuzione di un modello di regressione lineare in Python con Machine Learning Services per Istanza gestita di SQL di Azure.

In questo articolo si apprenderà come:

  • Caricare i dati dal database in un frame di dati pandas
  • Preparare i dati in Python rimuovendo alcune colonne

Nella prima parte si è appreso come ripristinare il database di esempio.

Nella terza parte si apprenderà come eseguire il training di un modello di Machine Learning di regressione lineare in Python.

Nelle quarta parte si apprenderà come archiviare il modello in un database e quindi creare le stored procedure dagli script Python sviluppati nella seconda e nella terza parte. Le stored procedure verranno quindi eseguite sul server per eseguire stime basate sui nuovi dati.

Prerequisiti

  • Per poter eseguire la seconda parte di questa esercitazione si presuppone che sia stata completata la prima parte e i rispettivi prerequisiti.

Esplorare e preparare i dati

Per usare i dati in Python, si caricheranno i dati dal database in un frame di dati pandas.

Creare un nuovo notebook Python in Azure Data Studio ed eseguire lo script seguente.

Lo script Python seguente consente di importare il set di dati dalla tabella dbo.rental_data del database in un frame di dati pandas df.

Nella stringa di connessione sostituire i dettagli della connessione in base alle esigenze. Per usare l'autenticazione di Windows con una stringa di connessione ODBC, specificare Trusted_Connection=Yes; anziché i parametri UID e PWD.

import pyodbc
import pandas
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# Connection string to your SQL Server instance
conn_str = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server}; SERVER=<server>; DATABASE=TutorialDB;UID=<username>;PWD=<password>')

query_str = 'SELECT Year, Month, Day, Rentalcount, Weekday, Holiday, Snow FROM dbo.rental_data'

df = pandas.read_sql(sql=query_str, con=conn_str)
print("Data frame:", df)

I risultati visualizzati saranno simili ai seguenti:

Data frame:      Year  Month  Day  Rentalcount  WeekDay  Holiday  Snow
0    2014      1   20          445        2        1     0
1    2014      2   13           40        5        0     0
2    2013      3   10          456        1        0     0
3    2014      3   31           38        2        0     0
4    2014      4   24           23        5        0     0
..    ...    ...  ...          ...      ...      ...   ...
448  2013      2   19           57        3        0     1
449  2015      3   18           26        4        0     0
450  2015      3   24           29        3        0     1
451  2014      3   26           50        4        0     1
452  2015     12    6          377        1        0     1

[453 rows x 7 columns]

Filtrare le colonne dal dataframe per rimuovere quelle che non si vogliono usare nel training. Rentalcount non deve essere incluso perché è la destinazione delle stime.

columns = df.columns.tolist()
columns = [c for c in columns if c not in ["Year", "Rentalcount"]]

print("Training set:", df[columns])

Prendere nota dei dati a cui il set di training avrà accesso a:

Training set:      Month  Day  Weekday  Holiday  Snow
1        2   13        5        0     0
3        3   31        2        0     0
7        3    8        7        0     0
15       3    4        2        0     1
22       1   18        1        0     0
..     ...  ...      ...      ...   ...
416      4   13        1        0     1
421      1   21        3        0     1
438      2   19        4        0     1
441      2    3        3        0     1
447      1    4        6        0     1

[91 rows x 5 columns]

Passaggi successivi

Nella seconda parte di questa serie di esercitazioni sono stati completati i passaggi seguenti:

  • Caricare i dati dal database in un frame di dati pandas
  • Preparare i dati in Python rimuovendo alcune colonne

Per eseguire il training di un modello di Machine Learning che usa i dati del database TutorialDB, seguire la terza parte di questa serie di esercitazioni: