🐈

【Microsoft Fabricハンズオン】- House Prices Advanced Regression Techを可視化する

2024/09/28に公開

執筆日

2024/09/28

データ

House Prices - Advanced Regression Techniques を使います。
https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/data?select=train.csv

ハンズオンの内容

House Prices - Advanced Regression TechniquesをNotebookで読み込み、PowerBIで以下のような可視化をするまでがゴールとなっています。
30分ぐらいを想定し、Fabricを触ったことない人がターゲットとなっています。

各カラムの説明

SalePrice: プロパティの販売価格(ドル単位)
MSSubClass: 建物のクラス
MSZoning: 一般的なゾーニング分類
LotFrontage: プロパティに接続された道路の線形フィート
LotArea: 土地の面積(平方フィート)
Street: 道路アクセスの種類
Alley: 路地アクセスの種類
LotShape: プロパティの一般的な形状
LandContour: プロパティの平坦性
Utilities: 利用可能なユーティリティの種類
LotConfig: 土地の配置
LandSlope: プロパティの傾斜
Neighborhood: エイムズ市内の物理的な場所
Condition1: 主要道路または鉄道への近接性
Condition2: 主要道路または鉄道への近接性(2つ目がある場合)
BldgType: 住居の種類
HouseStyle: 住居のスタイル
OverallQual: 全体的な素材と仕上がりの品質
OverallCond: 全体的な状態評価
YearBuilt: 建設年
YearRemodAdd: リフォーム年
RoofStyle: 屋根のスタイル
RoofMatl: 屋根材
Exterior1st: 家の外装カバー
Exterior2nd: 家の外装カバー(複数の材料がある場合)
MasVnrType: 石積みベニアの種類
MasVnrArea: 石積みベニアの面積(平方フィート)
ExterQual: 外装材の品質
ExterCond: 外装材の現在の状態
Foundation: 基礎の種類
BsmtQual: 地下室の高さ
BsmtCond: 地下室の全体的な状態
BsmtExposure: ウォークアウトまたは庭レベルの地下室の壁
BsmtFinType1: 地下室の仕上げエリアの品質
BsmtFinSF1: タイプ1の仕上げ済み平方フィート
BsmtFinType2: 2つ目の仕上げエリアの品質(存在する場合)
BsmtFinSF2: タイプ2の仕上げ済み平方フィート
BsmtUnfSF: 仕上げていない地下室の面積(平方フィート)
TotalBsmtSF: 地下室全体の面積(平方フィート)
Heating: 暖房の種類
HeatingQC: 暖房の品質と状態
CentralAir: 中央空調
Electrical: 電気システム
1stFlrSF: 1階の平方フィート
2ndFlrSF: 2階の平方フィート
LowQualFinSF: 低品質の仕上げ済み平方フィート(全階)
GrLivArea: 地上(地面)生活エリアの平方フィート
BsmtFullBath: 地下室のフルバスルーム
BsmtHalfBath: 地下室のハーフバスルーム
FullBath: 地上のフルバスルーム
HalfBath: 地上のハーフバスルーム
Bedroom: 地下室レベルを除く寝室の数
Kitchen: キッチンの数
KitchenQual: キッチンの品質
TotRmsAbvGrd: 地上の部屋の総数(バスルームを含まない)
Functional: 住宅の機能性評価
Fireplaces: 暖炉の数
FireplaceQu: 暖炉の品質
GarageType: ガレージの位置
GarageYrBlt: ガレージが建てられた年
GarageFinish: ガレージの内装仕上げ
GarageCars: ガレージの車収容能力
GarageArea: ガレージの面積(平方フィート)
GarageQual: ガレージの品質
GarageCond: ガレージの状態
PavedDrive: 舗装されたドライブウェイ
WoodDeckSF: ウッドデッキの面積(平方フィート)
OpenPorchSF: オープンポーチの面積(平方フィート)
EnclosedPorch: 閉鎖されたポーチの面積(平方フィート)
3SsnPorch: 3シーズンポーチの面積(平方フィート)
ScreenPorch: スクリーンポーチの面積(平方フィート)
PoolArea: プールの面積(平方フィート)
PoolQC: プールの品質
Fence: フェンスの品質
MiscFeature: 他のカテゴリに含まれない雑多な特徴
MiscVal: 雑多な特徴の価値(ドル単位)
MoSold: 売却された月
YrSold: 売却された年
SaleType: 売却の種類
SaleCondition: 売却の条件

アーキテクト

大まかな流れ

  1. ワークスペースを作成
  2. Notebookでデータの前処理を行う
  3. セマンティックモデルにする
  4. PowerBIで可視化する

ワークスペースを作成

  1. Microsoft Fabric(https://app.fabric.microsoft.com/home)にアクセス
  2. 「Synapse Data Engineering」をクリック
  3. 「ワークスペース」をクリック

    4.「+新しいワークスペース」をクリック
  4. ワークスペース名を入力し、「適用」をクリックする
    ※ワークスペース名は何でもいいです
  5. ワークスペースが作成されたことを確認

Notebookでデータの前処理を行う

  1. 以下のURLからtrain.csvをダウンロードする
    ※Kaggleのアカウント登録が必要です。
    https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/data?select=train.csv
  2. Microsoft Fabricを開き、Syanpse Data EnginneringからNotebookを開く
  3. Lakehouseを作成する
    ※Lakehouseの名前はなんでもいいです
  4. Fileにダウンロードしたtrain.csvをimportする
  5. 以下のコードを実行し、データを読み込み。
  6. SalePriceのカラムの型を変更する。
df = spark.read.format("csv").option("header","true").load("Files/train.csv")
# SalePriceの型を変更する
df = df.withColumn("SalePrice", col("SalePrice").cast("integer"))
sale_price_type = df.schema["SalePrice"].dataType  
print(f"The data type of SalePrice column is: {sale_price_type}") 
  1. 以下のコードを実行し、Table形式でデータを保存する
df.write.mode("overwrite").format("delta").save("Tables/study")

参考記事

https://zenn.dev/headwaters/articles/6c08f8ba1f8e47

セマンティックモデルにする

1. 以下の記事を参考にセマンティックモデルを作成する
https://zenn.dev/headwaters/articles/da11ec40d23245

PowerBIで可視化する

  1. 新しいレポートをクリックする
  2. 積み上げ縦棒グラフ を選択する
  3. x軸に「MSSubClass」、y軸に「ΣSalePrice」を設定する
  4. y軸のSalesPriceをクリックすると、合計値,平均値など色々選択することができる
    ※今回は平均値にする
  5. 円グラフ を選択する
  6. 凡例に「MSSubClass」、値に「SalePrice」を設定する
    ※SalePriceは平均値にする
  7. 作成されたことを確認する
  8. 保存ボタンを押しレポートを作成する
ヘッドウォータース

Discussion