1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AzureML】データの入出力を自作して自由度を上げてみる【Python】

Posted at

今回はサンプルデータのMulticlass Classification - Letter Recognitionを利用してみたいと思います。
また、入出力部分をpythonスクリプトにすることでデータストアとして設定していないコンテナのデータも取得できるようにしてみたいと思います。

ワークスペースやクラスターの作成、実行方法等は最初の記事を参考にしてください。

サンプルを開く

今まで二項、回帰とやってきましたが今回は多項分類のパイプラインのようです。
image.png
一番左のカラムを予測するみたいですね。
多項分類は複数項目のうちどれかを予測するようなモデルになります。
二項の項目が増えた感じですね。
image.png
アルゴリズムが変わった以外は大きな変化はなさそうです。

左では二項のアルゴリズムブロックを利用していますが、OneVsAllMulticlassというブロックが二項を利用して複数の項目を予測するモデルを作るアルゴリズムらしいので、おおもとの二項のアルゴリズムを指定してあげてるのだと思います。
それでは実行してみましょう。

サンプルの内容

データは上部で確認しているので、予測結果と精度について確認してみましょう。
まずは予測結果です。
image.png
このような形で取得できていました。
二項のスコアみたいなデータが項目ごとに出力されてますね。
値の一番大きいデータが予測結果となるようですね。

続いて予測の評価についてです。
image.png
評価指標がいくつか出力されていますね。これを見ながらモデルの精度を高めていくことになりそうです。

サンプルをいじってみる

それでは冒頭でもいったようにデータの入出力の部分を変更してみたいと思います。
こちらに標準で利用できるライブラリの一覧がありました。azure.storage.blobがあるので今回はこれを利用して、データストアに登録していないコンテナで入出力したいと思います。
ブロックはこのように繋げました。
importDataを変更し、評価指標を出力できるようにつなげています。
image.png

まずは入力部分のコードです。

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を用いて変換しています。

では結果を見てみましょう。
importする部分です。
image.png

ちゃんとデータが読み込めているようです。
続いてExportの部分です。
こちらはblobが生成されているのかを確認してみましょう。
image.png
ちゃんとデータが生成されていますね。

まとめ

今回は多項分類のサンプルを動かしてみました。
また、データの入出力部分をpythonを用いて実装してみました。
これによりデータストアを作成していないコンテナを利用することができるようになりました。
自由度が増したことでいろんなデータを利用したり活用できるようになったかなと思います!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?