Python のチュートリアル:SQL 機械学習で K-Means クラスタリングを使用して顧客を分類する
適用対象: SQL Server 2017 (14.x) 以降 Azure SQL Managed Instance
この 4 部構成のチュートリアル シリーズでは、Python を使用して、顧客データを分類するための K-Means クラスタリング モデルを、SQL Server Machine Learning Services またはビッグ データ クラスターで開発して展開します。
この 4 部構成のチュートリアル シリーズでは、Python を使用して、顧客データをクラスター化するための K-Means クラスタリング モデルを、SQL Server Machine Learning Services で開発して展開します。
この 4 部構成のチュートリアル シリーズでは、Python を使用して、顧客データをクラスター化するための K-Means クラスタリング モデルを、Azure SQL Managed Instance の Machine Learning Services で開発して展開します。
このシリーズのパート 1 では、チュートリアルの前提条件を設定してから、サンプル データセットをデータベースに復元します。 このシリーズの後半では、このデータを使用し、Python と SQL 機械学習でクラスタリング モデルをトレーニングして展開します。
このシリーズのパート 2 と 3 では、Azure Data Studio ノートブックでいくつかの Python スクリプトを開発して、データを分析して準備し、機械学習モデルをトレーニングします。 その後、パート 4 では、ストアド プロシージャを使ってデータベースの内部でそれらの Python スクリプトを実行します。
クラスター化は、グループのメンバーにある意味で類似点があるグループにデータを編成すること、として説明できます。 このチュートリアル シリーズでは、小売事業を営んでいる場合を想定しています。 製品の購入と返品のデータセットで顧客のクラスタリングを実行するには、K-Means アルゴリズムを使います。 顧客をクラスタリングすることで、特定のグループをターゲットして、マーケティングの取り組みをより効果的に進めることができます。 K-Means クラスタリングは、類似性に基づいてデータのパターンを探す教師なし学習アルゴリズムです。
この記事では、次のことについて説明します:
- サンプル データベースを復元する
パート 2 では、データベースからデータを準備してクラスタリングを実行する方法を学びます。
パート 3 では、Python で K-Means クラスタリング モデルを作成してトレーニングする方法を学びます。
パート 4 では、新しいデータに基づいて Python でクラスタリングを実行できるストアド プロシージャをデータベースに作成する方法を学びます。
前提条件
- SQL Server Machine Learning Services に Python 言語オプションがあること。Windows インストール ガイドまたは Linux インストール ガイドに記載されているインストール手順に従ってください。
- SQL Server Machine Learning Services に Python 言語オプションがあること。Windows インストール ガイドまたは Linux インストール ガイドに記載されているインストール手順に従ってください。 SQL Server ビッグ データ クラスターで Machine Learning Services を有効にすることもできます。
- SQL Server Machine Learning Services に Python 言語オプションがあること。Windows インストール ガイドに記載されているインストール手順に従ってください。
Azure SQL Managed Instance の Machine Learning Services。 詳細については、Azure SQL Managed Instance の Machine Learning Services の概要に関するページを参照してください。
サンプル データベースを Azure SQL Managed Instance に復元するための SQL Server Management Studio。
Azure Data Studio Python と SQL の両方について、Azure Data Studio でノートブックを使います。 ノードブックの詳細については、「Azure Data Studio でノートブックを使用する方法」を参照してください。
追加の Python パッケージ - このチュートリアル シリーズの例では、インストールされている可能性とインストールされていない可能性がある Python パッケージを使用します。
管理コマンド プロンプトを開き、Azure Data Studio で使用する Python のバージョンのインストール パスに変更します。 たとえば、「
cd %LocalAppData%\Programs\Python\Python37-32
」のように入力します。 さらに次のコマンドを実行して、まだインストールされていないすべてのパッケージをインストールします。 これらのパッケージが正しい Python インストール場所にインストールされていることを確かめます。 オプション-t
を使用して、宛先ディレクトリを指定できます。pip install matplotlib pip install pandas pip install pyodbc pip install scipy pip install scikit-learn
次の icacls コマンドを実行して、インストールされているライブラリに対する読み取りと実行のアクセス権を SQL Server Launchpad Service と SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES) に付与します。
icacls "C:\Program Files\Python310\Lib\site-packages" /grant "NT Service\MSSQLLAUNCHPAD":(OI)(CI)RX /T
icacls "C:\Program Files\Python310\Lib\site-packages" /grant *S-1-15-2-1:(OI)(CI)RX /T
サンプル データベースを復元する
このチュートリアルで使用するサンプル データセットは、ダウンロードして使用できるように .bak データベース バックアップ ファイルに保存されています。 このデータセットは、トランザクション処理性能評議会 (TPC) によって提供される tpcx-bb データセットから派生しています。
注意
ビッグ データ クラスターで Machine Learning Services を使用している場合は、SQL Server ビッグ データ クラスターのマスター インスタンスにデータベースを復元する方法に関する記事を参照してください。
tpcxbb_1gb.bak ファイルをダウンロードします。
Azure Data Studio で、以下の詳細情報を使用して、「バックアップ ファイルからデータベースを復元する」に記載されている手順に従います。
- ダウンロードした
tpcxbb_1gb.bak
ファイルからインポートします。 - ターゲット データベースに
tpcxbb_1gb
という名前を指定します。
- ダウンロードした
dbo.customer
テーブルに対してクエリを実行することで、データベースを復元した後にデータセットが存在することを確認できます。USE tpcxbb_1gb; SELECT * FROM [dbo].[customer];
tpcxbb_1gb.bak ファイルをダウンロードします。
次の詳細を使用し、SQL Server Management Studio で SQL Managed Instance へのデータベースの復元に関する記事で説明されている手順のようにします。
- ダウンロードした
tpcxbb_1gb.bak
ファイルからインポートします。 - ターゲット データベースに
tpcxbb_1gb
という名前を指定します。
- ダウンロードした
dbo.customer
テーブルに対してクエリを実行することで、データベースを復元した後にデータセットが存在することを確認できます。USE tpcxbb_1gb; SELECT * FROM [dbo].[customer];
リソースをクリーンアップする
このチュートリアルを続行しない場合は、tpcxbb_1gb
データベースを削除してください。
次のステップ
このチュートリアル シリーズの第 1 部では、これらの手順を完了しました。
- サンプル データベースを復元する
機械学習モデル用にデータを準備するには、このチュートリアル シリーズの第 2 部の手順を実行します。