Microsoft Fabric でデータ サイエンスを始める

このラボでは、データの取り込み、ノートブック内でのデータの調査、Data Wrangler を使用したデータの処理、2 種類のモデルのトレーニングを行います。 これらのすべての手順を実行することで、Microsoft Fabric のデータ サイエンス機能を確認することができます。

このラボを完了することで、機械学習とモデル追跡に関するハンズオンの経験を積み、Microsoft Fabric で “ノートブック”、Data Wrangler、”実験”、”モデル” を操作する方法を学習できます。** ** **

このラボは完了するまで、約 20 分かかります。

:この演習を完了するには、Microsoft Fabric 試用版が必要です。

ワークスペースの作成

Fabric でデータを操作する前に、Fabric 試用版を有効にしてワークスペースを作成してください。

  1. ブラウザーの https://app.fabric.microsoft.com/home?experience=fabricMicrosoft Fabric ホーム ページに移動し、Fabric 資格情報でサインインします。
  2. 左側のメニュー バーで、 [ワークスペース] を選択します (アイコンは 🗇 に似ています)。
  3. 任意の名前で新しいワークスペースを作成し、Fabric 容量を含むライセンス モード (“試用版”、Premium、または Fabric) を選択します。**
  4. 開いた新しいワークスペースは空のはずです。

    Fabric の空のワークスペースを示すスクリーンショット。

ノートブックを作成する

コードを実行するには、”ノートブック” を作成します。** ノートブックは、(複数の言語で) コードを記述して実行できる対話型環境を提供します。

  1. 左側のメニュー バーで、[作成] を選択します。 [新規] ページの [Data Science] セクションで、[ノートブック] を選択します。 任意の一意の名前を設定します。

    : [作成] オプションがサイド バーにピン留めされていない場合は、最初に省略記号 () オプションを選択する必要があります。

    数秒後に、1 つの ‘‘セル’’ を含む新しいノートブックが開きます。** ノートブックは、’‘コード’’ または ‘‘マークダウン’’ (書式設定されたテキスト) を含むことができる 1 つまたは複数のセルで構成されます。** **

  2. 最初のセル (現在は ‘‘コード’’ セル) を選択し、右上の動的ツール バーで [M↓] ボタンを使用してセルを ‘‘マークダウン’’ セルに変換します。** **

    セルがマークダウン セルに変わると、それに含まれるテキストがレンダリングされます。

  3. [🖉] (編集) ボタンを使用してセルを編集モードに切り替え、その内容を削除して次のテキストを入力します。

    # Data science in Microsoft Fabric
    

データを取得する

これで、データを取得してモデルをトレーニングするためのコードを実行する準備ができました。 Azure Open Datasets から Diabetes データセットを操作します。 データを読み込んだ後、データを Pandas データフレームに変換します。これは、行と列でデータを操作するための一般的な構造です。

  1. ノートブックで、最新のセル出力の下にある [+ コード] アイコンを使用して、新しいコード セルをノートブックに追加します。

    ヒント: [+ コード] アイコンを表示するには、マウスを現在のセルの出力のすぐ下かつ左に移動します。 別の方法として、メニュー バーの [編集] タブで、[+ コード セルの追加] を選択します。

  2. 新しいコード セルに次のコードを入力します。

    # Azure storage access info for open dataset diabetes
    blob_account_name = "azureopendatastorage"
    blob_container_name = "mlsamples"
    blob_relative_path = "diabetes"
    blob_sas_token = r"" # Blank since container is Anonymous access
        
    # Set Spark config to access  blob storage
    wasbs_path = f"wasbs://%s@%s.blob.core.windows.net/%s" % (blob_container_name, blob_account_name, blob_relative_path)
    spark.conf.set("fs.azure.sas.%s.%s.blob.core.windows.net" % (blob_container_name, blob_account_name), blob_sas_token)
    print("Remote blob path: " + wasbs_path)
        
    # Spark read parquet, note that it won't load any data yet by now
    df = spark.read.parquet(wasbs_path)
    
  3. セルの左側にある [▷] (セルの実行) ボタンを使用して実行します。 または、キーボードで SHIFT + ENTER キーを押してセルを実行できます。

    : このセッション内で Spark コードを実行したのはこれが最初であるため、Spark プールを起動する必要があります。 これは、セッション内での最初の実行が完了するまで 1 分ほどかかる場合があることを意味します。 それ以降は、短時間で実行できます。

  4. セル出力の下にある [+ コード] アイコンを使用して、ノートブックに新しいコード セルを追加し、次のコードを入力します。

    display(df)
    
  5. セル コマンドが完了したら、セルの下にある出力を確認します。これは次のようになるはずです。

    AGE SEX BMI BP S1 S2 S3 S4 S5 S6 Y
    59 2 32.1 101.0 157 93.2 38.0 4.0 4.8598 87 151
    48 1 21.6 87.0 183 103.2 70.0 3.0 3.8918 69 75
    72 2 30.5 93.0 156 93.6 41.0 4.0 4.6728 85 141
    24 1 25.3 84.0 198 131.4 40.0 5.0 4.8903 89 206
    50 1 23.0 101.0 192 125.4 52.0 4.0 4.2905 80 135

    出力には、Diabetes データセットの行と列が表示されます。

  6. レンダリングされたテーブルの上部には、[テーブル][+ 新しいグラフ] という 2 つのタブがあります。 [+ 新しいグラフ] を選択します。
  7. グラフの右側にある [自分で作成する] オプションを選択して、新しい視覚化を作成します。
  8. 次のグラフ設定を選択します。
    • グラフの種類: Box plot
    • Y 軸: Y
  9. ラベル列 Y の分布を表示する出力を確認します。

データを準備する

データの取り込みと調査が完了したので、データを変換できます。 ノートブックでコードを実行することも、Data Wrangler を使用してコードを生成することもできます。

  1. データは Spark データフレームとして読み込まれます。 Data Wrangler は Spark または Pandas のデータフレームを受け付けますが、現在は Pandas と連携するように最適化されています。 そのため、データを Pandas データフレームに変換します。 ノートブックで次のコードを実行します。

    df = df.toPandas()
    df.head()
    
  2. ノートブック リボンの [Data Wrangler] (データ ラングラー) を選択し、df データセットを選択します。 Data Wrangler が起動すると、データフレームの説明的な概要が [概要] パネルに生成されます。

    現在、ラベル列は Y で、これは連続変数です。 Y を予測する機械学習モデルをトレーニングするには、回帰モデルをトレーニングする必要があります。 Y の (予測された) 値は解釈が困難な場合があります。 代わりに、ある人が糖尿病を発症するリスクが低いか高いかを予測する分類モデルのトレーニングを確認することができます。 分類モデルをトレーニングできるようにするには、Y の値に基づいてバイナリ ラベル列を作成する必要があります。

  3. Data Wrangler で Y 列を選択します。 220-240 ビンの頻度が低下している点に注意してください。 75 パーセンタイルの 211.5 は、ヒストグラム内の 2 つの領域の切り替わりとおおよそ一致しています。 この値を、低リスクと高リスクのしきい値として使用しましょう。
  4. [操作] パネルに移動し、 [数式] を展開した後、 [数式から列を作成] を選択します。
  5. 以下の設定で新しい列を作成します。
    • 列の名前: Risk
    • 列の数式: (df['Y'] > 211.5).astype(int)
  6. 適用を選択します。
  7. プレビューに追加された新しい列 Risk を確認します。 値 1 を持つ行の数が、すべての行の約 25% となっていることを確認します (これは Y の 75 パーセンタイルであるため)。
  8. [Add code to notebook] (ノートブックにコードを追加する) を選択します。
  9. Data Wrangler によって生成されたコードでセルを実行します。
  10. 新しいセルで次のコードを実行して、Risk 列が期待どおりの形になっていることを確認します。

    df_clean.describe()
    

機械学習モデルをトレーニングする

データの準備が完了したので、それを使用して機械学習モデルをトレーニングし、糖尿病の予測を行うことができます。 このデータセットを使用して、(Y を予測する) 回帰モデルまたは (Risk を予測する) 分類モデルという 2 種類の異なるモデルをトレーニングできます。 scikit-learn ライブラリを使用してモデルをトレーニングし、MLflow を使用してモデルを追跡します。

回帰モデルをトレーニングする

  1. 次のコードを実行して、データをトレーニング データセットとテスト データセットに分割し、予測したいラベル Y から特徴量を分離します。

    from sklearn.model_selection import train_test_split
        
    X, y = df_clean[['AGE','SEX','BMI','BP','S1','S2','S3','S4','S5','S6']].values, df_clean['Y'].values
        
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)
    
  2. ノートブックに新しいコード セルをもう 1 つ追加し、そこに次のコードを入力して実行します。

    import mlflow
    experiment_name = "diabetes-regression"
    mlflow.set_experiment(experiment_name)
    

    このコードでは、diabetes-regression という名前の MLflow 実験を作成します。 この実験でモデルが追跡されます。

  3. ノートブックに新しいコード セルをもう 1 つ追加し、そこに次のコードを入力して実行します。

    from sklearn.linear_model import LinearRegression
        
    with mlflow.start_run():
       mlflow.autolog()
        
       model = LinearRegression()
       model.fit(X_train, y_train)
    

    このコードは、線形回帰を使用して回帰モデルをトレーニングします。 パラメーター、メトリック、および成果物は、MLflow で自動的にログに記録されます。

分類モデルをトレーニングする

  1. 次のコードを実行して、データをトレーニング データセットとテスト データセットに分割し、予測したいラベル Risk から特徴量を分離します。

    from sklearn.model_selection import train_test_split
        
    X, y = df_clean[['AGE','SEX','BMI','BP','S1','S2','S3','S4','S5','S6']].values, df_clean['Risk'].values
        
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)
    
  2. ノートブックに新しいコード セルをもう 1 つ追加し、そこに次のコードを入力して実行します。

    import mlflow
    experiment_name = "diabetes-classification"
    mlflow.set_experiment(experiment_name)
    

    このコードでは、diabetes-classification という名前の MLflow 実験を作成します。 この実験でモデルが追跡されます。

  3. ノートブックに新しいコード セルをもう 1 つ追加し、そこに次のコードを入力して実行します。

    from sklearn.linear_model import LogisticRegression
        
    with mlflow.start_run():
        mlflow.sklearn.autolog()
    
        model = LogisticRegression(C=1/0.1, solver="liblinear").fit(X_train, y_train)
    

    このコードでは、ロジスティック回帰を使用して分類モデルをトレーニングします。 パラメーター、メトリック、および成果物は、MLflow で自動的にログに記録されます。

実験を調べる

Microsoft Fabric では、すべての実験を追跡し、それらを視覚的に調べることができます。

  1. 左側のハブ メニュー バーからワークスペースに移動します。
  2. diabetes-regression 実験を選択して開きます。

    ヒント: ログに記録された実験の実行が表示されない場合は、ページを最新の情報に更新します。

  3. [メトリックの実行] を確認して、回帰モデルがどの程度正確であるかを調べます。
  4. ホーム ページに戻り、diabetes-classification 実験を選択してこれを開きます。
  5. [メトリックの実行] を確認して、分類モデルの正確性を調べます。 異なる種類のモデルをトレーニングしたため、メトリックの種類が異なることに注意してください。

モデルを保存する

複数の実験にわたってトレーニングした機械学習モデルを比較した後、パフォーマンスが最も良いモデルを選択することができます。 最適なパフォーマンス モデルを使用するには、モデルを保存し、それを使用して予測を生成します。

  1. 実験リボンで [ML モデルとして保存] を選択します。
  2. 新しく開いたポップアップ ウィンドウで [新しい ML モデルの作成] を選択します。
  3. model フォルダーを選択します。
  4. モデルに model-diabetes という名前を付け、 [保存] を選択します。
  5. モデルが作成されると画面の右上に表示される通知内の [ML モデルの表示] を選択します。 ウィンドウを最新の情報に更新することもできます。 保存されたモデルは、[ML モデル バージョン] の下にリンクされています。

モデル、実験、実験の実行がリンクされていることに注意してください。これにより、モデルのトレーニング方法を確認できます。

ノートブックを保存して Spark セッションを終了する

モデルのトレーニングと評価が完了したので、わかりやすい名前でノートブックを保存し、Spark セッションを終了できます。

  1. ノートブックのメニュー バーで、[⚙️] (設定) アイコンを使用してノートブックの設定を表示します。
  2. ノートブックの [名前][モデルのトレーニングと比較] に設定し、設定ペインを閉じます。
  3. ノートブック メニューで、 [セッションの停止] を選択して Spark セッションを終了します。

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

この演習では、ノートブックを作成し、機械学習モデルをトレーニングしました。 scikit-learn を使用してモデルをトレーニングし、MLflow でそのパフォーマンスを追跡しました。

モデルと実験の確認が完了したら、この演習用に作成したワークスペースを削除して構いません。

  1. 左側のバーで、ワークスペースのアイコンを選択して、それに含まれるすべての項目を表示します。
  2. ツール バーの […] メニューで、 [ワークスペースの設定] を選択してください。
  3. [全般] セクションで、[このワークスペースの削除] を選択します。