背景
AWS SageMaker Studioを触り始めてみたので、まずはData Wranglerを使ってみようと思いました。Data Wranglerは色々な事が出来そうなので、まずはデータ品質インサイトのレポート(Data Quality and Insights Report)の作成を試してみました。
試した事(概要)
Nishikaのコンペの訓練(train)データをインプットとして、Data Wranglerでデータ品質インサイトのレポート(以下、Data Quality and Insights Report)の作成を試してみました。
試した事(詳細)
1. 前準備
1.1. Nishikaからデータを取得して前処理
こちらのサイトから、train.zipをダウンロードします。
zipファイルを解凍すると、trainフォルダ内に多数のcsvファイルが入っていますので、それらcsvファイルを、pandasを使って1つのcsvファイルに纏めて、train.csvとします。
data_df_list = []
for csv_file in glob.glob("./data/Nishika_ApartmentPrice/train/*"):
df = pd.read_csv(filepath_or_buffer=csv_file,
converters={"面積(㎡)": str},
encoding="utf-8")
data_df_list.append(df)
data_df = pd.concat(objs=data_df_list,
axis=0,
ignore_index=True)
print(data_df.columns)
Index(['ID', '種類', '地域', '市区町村コード', '都道府県名', '市区町村名', '地区名', '最寄駅:名称',
'最寄駅:距離(分)', '間取り', '面積(㎡)', '土地の形状', '間口', '延床面積(㎡)', '建築年', '建物の構造',
'用途', '今後の利用目的', '前面道路:方位', '前面道路:種類', '前面道路:幅員(m)', '都市計画', '建ぺい率(%)',
'容積率(%)', '取引時点', '改装', '取引の事情等', '取引価格(総額)_log'],
dtype='object')
1.2. S3にtrain.csvをアップロード
S3バケットにフォルダを作成して、先程作成したtrain.csvをアップロードします。
1.3. SageMaker StudioからCanvasを起動して、Canvasを開く
こちらの記事に記載したような形で、SageMaker StudioからCanvasを起動して、Canvasを開きます。その後、Data Wranglerのアイコンをクリックします。
2. Data Wranglerを操作
2.1. フロー(flow)を作成
Data Wranglerはフロー(flow)の中に行いたい処理を設定していく形になりますので、まずはフローを作成します。画面右上のImport dataのボタンをクリックします。
フローに名前を付けます。
これで、フローが新規作成されましたので、ここにデータをインポートしたり、行いたい処理を設定します。
2.2. S3に保存していたtrain.csvをインポート
まずは、新規作成したフローに、先程S3に保存したtrain.csvをインポートします。
画面中央のImport dataボタンをクリックします。
インポートするデータのタイプを聞かれます。今回はcsvファイルなので、Tabularをクリックします。
画面が変わります。こちらの画面の、Data Sourceの三角ボタンをクリックします。
インポートしたいデータがどこにあるのかを聞かれます。今回はS3にあるので、S3をクリックします。
すると、S3バケットを選択する画面になりますので、train.csvを保存したS3バケットからtrain.csvを選択して、Preview dataボタンをクリックします。
画面が変わります。train.csvの中身のプレビュー画面のような形です。画面の右側でいくつか設定出来るものがあります。データ数が50,000以上の場合は、Maximum sample sizeを変えたりします。
さらに、Advancedを展開すると、File EncodingやDelimiter等の設定も出てきます。
今回は、Maximum sample size含めて、全て設定はそのままで、画面右下のImport dataボタンをクリックします。
train.csvがフローにインポートされました。
Data typesという処理が自動で設定されていますので、ダブルクリックして中身を見てみます。
train.csvのカラム毎のデータ型の設定になります。Data Wrangler側でインポート時にデータ型を自動で判別してくれています。
ここで中身を確認して、もし、データ型を変えたい場合は、対象のカラム名のデータ型を変更して、Previewボタンをクリックします。
データ型の変更を確認出来たら、Updateボタンをクリックします。
データ型が変更されました。フロー画面に戻る際は、**Data flow*ボタンをクリックします。
2.3. Data Quality and Insights Reportを作成
フローのData typesの横の縦3点ボタンをクリックして、Get data insightsをクリックします。
画面が変わります。画面の右側でいくつか設定する項目があります。
今回は下記の設定を行って、Createボタンをクリックしました。
■Analysis type
そのまま
■Analysis name
test_data_quality_and_insights_report
■Problem type
Regressionを選択
(今回のtrain.csvはアパート価格を予測する回帰問題のため)
■Target column
取引価格(総額)_logを選択
(目的変数であるアパート価格のカラム名)
■Data size
Full datasetを選択
■Instance type
ml.m5.4xlargeを選択
■Number of instances
1
画面が変わって、レポート作成ジョブが走り始めました。
約10分程度でレポート作成ジョブは完了して、Data Quality and Insights Reportが表示されました。
画面を下にスクロールすると、色々な情報が載っています。
Data Quality and Insights Reportは、レポート画面の上のこのマークをクリックする事で、ローカルにダウンロード出来ます。ただし、pdfファイルでなく、pngファイルというのは意外でした(笑)
フロー画面に戻る時は、レポート画面の上にあるフロー名をクリックすると、フロー画面に戻ります。
フローに、Data Quality And Insights Reportの処理が追加されていました。
2.4. 一部のカラムを削除
先程作成したData Quality And Insights Reportを見てみると、カラム名「種類」は、カテゴリカル変数ではあるものの、1つのカテゴリー値のみっぽいので、あまり特徴量としては向いていないとして、このカラムを削除しようと思います。
フロー図で、Data typesの後ろにカラム削除の処理を追加したいので、Data typesの縦3点ボタンをクリックして、Add transformをクリックします。
画面が変わります。画面右側のAdd transformボタンをクリックします。
すると、どのような処理を追加するか、を選択する画面になります。
画面を下の方にスクロールすると、Manage columnsという処理があります。内容的に今回行いたい事と合っていそうなので、クリックします。
どのカラムを削除するのか、を設定する画面になりましたので、カラム名「種類」を選択して、Addボタンをクリックします。
画面が戻ると、3. Drop columnsという処理(Step)が追加されていました。また、データのプレビュー部分を横にスクロールして確認してみたところ、カラム名「種類」は削除されていました。
画面右上のData flowボタンをクリックして、フロー図に戻ってみます。
フロー図の方にも、Drop columnの処理が追加されている事が確認出来ます。Data Quality And Insights Reportの処理とは自動で別に分岐してくれています。
2.5. 再度、Data Quality And Insights Reportを作成
改めて、カラム名「種類」を削除したものでData Quality And Insights Reportを作成してみます。
まずは、Data columnの縦3点ボタンをクリックして、Get data insightsをクリックします。
ここの設定は、先程の時と同じで、createボタンをクリックします。(Analysis nameだけ少し変えました。)
■Analysis type
そのまま
■Analysis name
test_data_quality_and_insights_report_2
■Problem type
Regressionを選択
(今回のtrain.csvはアパート価格を予測する回帰問題のため)
■Target column
取引価格(総額)_logを選択
(目的変数であるアパート価格のカラム名)
■Data size
Full datasetを選択
■Instance type
ml.m5.4xlargeを選択
■Number of instances
1
先程と同様に画面が変わって、レポート作成ジョブが走り始めました。
約10分程度で、レポートが作成されました。前回のレポートと比較すると、カラム「種類」は削除されているので、Number of featuresの数や、categoricalの数が1つ減っている事が確認出来ました。
フロー図に戻る時は、画面上部のフロー名をクリックします。
フロー図に、Data column処理の後ろにData Quality And Insights Report処理が追加されていました。
以上になります。
まとめ
SageMaker StudioのData Wranglerを触りの部分ではありますが、触ってみました。Data Quality And Insights ReportではXGBoostにかけた時の特徴量重要度の記載もあり、特徴量選択の参考にもなるので、便利と思いました。
参考