Python のチュートリアル:SQL 機械学習で線形回帰モデルをトレーニングするためのデータを準備する

適用対象: SQL Server 2017 (14.x) 以降 Azure SQL Managed Instance

この 4 部構成のチュートリアル シリーズの第 2 部では、Python を使用してデータベースからデータを準備します。 このシリーズの後半では、本データを使用して、SQL Server 2019 ビッグ データ クラスター上の SQL Server Machine Learning Services を使用して Python で線形回帰モデルをトレーニングし、デプロイします。

この 4 部構成のチュートリアル シリーズの第 2 部では、Python を使用してデータベースからデータを準備します。 このシリーズの後半では、本データを使用して、SQL Server Machine Learning Services とともに Python で線形回帰モデルをトレーニングし、デプロイします。

この 4 部構成のチュートリアル シリーズの第 2 部では、Python を使用してデータベースからデータを準備します。 このシリーズの後半では、本データを使用して、Azure SQL Managed Instance Machine Learning Services とともに Python で線形回帰モデルをトレーニングし、デプロイします。

この記事では、次の方法について学習します。

  • データベースから pandasデータ フレームにデータを読み込む
  • いくつかの列を削除して Python でデータを準備する

第 1 部では、サンプル データベースを復元する方法を学習しました。

パート 3 では、Python で線形回帰機械学習モデルをトレーニングする方法について学習します。

第 4 部では、モデルをデータベースに格納した後、第 2 部と 3 部で開発した Python スクリプトからストアド プロシージャを作成する方法について学習します。 ストアド プロシージャは、新しいデータに基づいて予測を行うためにサーバーで実行されます。

前提条件

  • このチュートリアルのパート 2 は、パート 1 とその前提条件を完了していることを前提としています。

データの探索と準備

Python でデータを使用するために、データベースから、pandas データ フレームにデータを読み込みます。

Azure Data Studio で新しい Python notebook を作成し、次のスクリプトを実行します。

次の Python スクリプトでは、データベースの dbo.rental_data テーブルから、データセットを pandas データ フレーム df にインポートします。

接続文字列で、必要に応じて接続の詳細を置き換えます。 ODBC 接続文字列で Windows 認証を使用するには、UID パラメーターと PWD パラメーターの代わりに Trusted_Connection=Yes; を指定します。

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]

次のステップ

このチュートリアル シリーズの第 2 部では、次の手順を完了しました。

  • データベースから pandasデータ フレームにデータを読み込む
  • いくつかの列を削除して Python でデータを準備する

TutorialDB データベースのデータを使用する機械学習モデルをトレーニングするには、このチュートリアル シリーズのパート 3 に従ってください。