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 では、必要な Python パッケージのインストール、
pandas
、pyodbc
など、パート 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
# 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 に従ってください。