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 でクラスタリングを実行できるストアド プロシージャをデータベースに作成する方法を学びます。

前提条件

  • 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 ビッグ データ クラスターのマスター インスタンスにデータベースを復元する方法に関する記事を参照してください。

  1. tpcxbb_1gb.bak ファイルをダウンロードします。

  2. Azure Data Studio で、以下の詳細情報を使用して、「バックアップ ファイルからデータベースを復元する」に記載されている手順に従います。

    • ダウンロードした tpcxbb_1gb.bak ファイルからインポートします
    • ターゲット データベースに "tpcxbb_1gb" という名前を指定します
  3. dbo.customer テーブルに対してクエリを実行することで、データベースを復元した後にデータセットが存在することを確認できます。

    USE tpcxbb_1gb;
    SELECT * FROM [dbo].[customer];
    
  1. tpcxbb_1gb.bak ファイルをダウンロードします。

  2. 次の詳細を使用し、SQL Server Management Studio で SQL Managed Instance へのデータベースの復元に関する記事で説明されている手順のようにします。

    • ダウンロードした tpcxbb_1gb.bak ファイルからインポートします
    • ターゲット データベースに "tpcxbb_1gb" という名前を指定します
  3. dbo.customer テーブルに対してクエリを実行することで、データベースを復元した後にデータセットが存在することを確認できます。

    USE tpcxbb_1gb;
    SELECT * FROM [dbo].[customer];
    

リソースをクリーンアップする

このチュートリアルを続行しない場合は、tpcxbb_1gb データベースを削除してください。

次のステップ

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

  • サンプル データベースを復元する

機械学習モデル用にデータを準備するには、このチュートリアル シリーズの第 2 部の手順を実行します。