今回はサンプルデータのMulticlass Classification - Letter Recognition
を利用してみたいと思います。
また、入出力部分をpythonスクリプトにすることでデータストアとして設定していないコンテナのデータも取得できるようにしてみたいと思います。
ワークスペースやクラスターの作成、実行方法等は最初の記事を参考にしてください。
サンプルを開く
今まで二項、回帰とやってきましたが今回は多項分類のパイプラインのようです。
一番左のカラムを予測するみたいですね。
多項分類は複数項目のうちどれかを予測するようなモデルになります。
二項の項目が増えた感じですね。
アルゴリズムが変わった以外は大きな変化はなさそうです。
左では二項のアルゴリズムブロックを利用していますが、OneVsAllMulticlass
というブロックが二項を利用して複数の項目を予測するモデルを作るアルゴリズムらしいので、おおもとの二項のアルゴリズムを指定してあげてるのだと思います。
それでは実行してみましょう。
サンプルの内容
データは上部で確認しているので、予測結果と精度について確認してみましょう。
まずは予測結果です。
このような形で取得できていました。
二項のスコアみたいなデータが項目ごとに出力されてますね。
値の一番大きいデータが予測結果となるようですね。
続いて予測の評価についてです。
評価指標がいくつか出力されていますね。これを見ながらモデルの精度を高めていくことになりそうです。
サンプルをいじってみる
それでは冒頭でもいったようにデータの入出力の部分を変更してみたいと思います。
こちらに標準で利用できるライブラリの一覧がありました。azure.storage.blobがあるので今回はこれを利用して、データストアに登録していないコンテナで入出力したいと思います。
ブロックはこのように繋げました。
importDataを変更し、評価指標を出力できるようにつなげています。
まずは入力部分のコードです。
import pandas as pd
import io
from azure.storage.blob import BlockBlobService
def azureml_main(dataframe1 = None, dataframe2 = None):
service = BlockBlobService("<ストレージアカウント名>", "<アクセスキー>")
data = service.get_blob_to_text("azuremloutput", f'exportdata/multidata.csv').content
return pd.read_csv(io.StringIO(data)),
接続したいストレージアカウントを設定します。
その後、get_blob_to_text
でコンテナ名、パスを指定しcontent
でデータを取得します。
このデータはテキストになっているので、read_csv
を用いてDataFrameに変換しています。
一時ファイルとしてデータをダウンロードしたくなかったのでget_blob_to_textを利用して、io.StringIOを用いてテキストを変換できるようにしています。
続いてデータの出力部分です。
import pandas as pd
from azure.storage.blob import BlockBlobService
def azureml_main(dataframe1 = None, dataframe2 = None):
service = BlockBlobService("<ストレージアカウント名>", "<アクセスキー>")
service.create_blob_from_text("testpythonupload", f"eval/mutli.csv", dataframe1.to_csv())
return "success",
このようにします。
接続したいストレージアカウントを設定し、出力先をcreate_blob_from_text
で指定している形になります。
また、渡すデータはテキストである必要があるのでto_csv
を用いて変換しています。
ちゃんとデータが読み込めているようです。
続いてExportの部分です。
こちらはblobが生成されているのかを確認してみましょう。
ちゃんとデータが生成されていますね。
まとめ
今回は多項分類のサンプルを動かしてみました。
また、データの入出力部分をpythonを用いて実装してみました。
これによりデータストアを作成していないコンテナを利用することができるようになりました。
自由度が増したことでいろんなデータを利用したり活用できるようになったかなと思います!