Python 教學課程:準備資料以使用 SQL 機器學習來定型線性迴歸模型

適用於: SQL Server 2017 (14.x) 及更新版本 Azure SQL 受控執行個體

在本教學課程系列的第二部分 (總共四個部分) 中,您將使用 Python 準備資料庫中的資料。 在本系列稍後,您將使用此資料搭配 SQL Server 機器學習服務,在 Python 中定型和部署線性迴歸模型,或在 SQL Server 2019 巨量資料叢集上進行此定型和部署。

在本教學課程系列的第二部分 (總共四個部分) 中,您將使用 Python 準備資料庫中的資料。 在本系列稍後,您將使用 SQL Server 機器學習服務,在 Python 中定型和部署線性迴歸模型。

在本教學課程系列的第二部分 (總共四個部分) 中,您將使用 Python 準備資料庫中的資料。 在本系列稍後,您將使用 Azure SQL 受控執行個體機器學習服務,在 Python 中以本資料定型和部署線性迴歸模型。

在本文中,您將學會如何:

  • 將資料庫中的資料載入至 pandas 資料框架
  • 透過移除一些資料行來準備 Python 中的資料

第一部分,您已了解如何還原範例資料庫。

第三部分中,您將了解如何在 Python 中定型線性迴歸機器學習模型。

第四部分中,您將了解如何將模型儲存在資料庫中,然後從您在第二和第三部分中開發的 Python 指令碼建立預存程序。 預存程序將會在伺服器上中執行,以根據新資料進行預測。

Prerequisites

  • 本教學課程的第二部分會假設您已完成第一部分及其必要條件。

探索和準備資料

為了使用 Python 中的資料,請將資料庫中的資料載入到 pandas 資料框架。

在 Azure Data Studio 中建立新的 Python 筆記本,並執行以下指令碼。

下列 Python 指令碼會將資料集從資料庫中的 dbo.rental_data 資料表,匯入到 pandas 資料框架 df

在連接字串中,視需要取代連線詳細資料。 若要搭配 ODBC 連接字串使用Windows 驗證,請指定 Trusted_Connection=Yes; 而非 UIDPWD 參數。

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)

您應該會看見如下所示的結果。

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]

篩選資料框架中的資料行,以移除我們不想在定型中使用的資料行。 不應該包含 Rentalcount,因為其是預測的目標。

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

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

請注意訓練集將可存取的資料:

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]

後續步驟

在本教學課程系列的第二部分中,您已完成下列步驟:

  • 將資料庫中的資料載入至 pandas 資料框架
  • 透過移除一些資料行來準備 Python 中的資料

若要使用 TutorialDB 資料庫中的資料定型機器學習模型,請遵循此教學課程系列的第三部分: