【TF2】Keras load_dataで読み込んだ全データセットをローカル保存する (4) Boston Housing data のcsvへの変換

TIPS ディープラーニング
スポンサーリンク

価格予測のサンプルでよく使われるBoston Housingデータ。
こちらは、データをCSVとして保存できます。

はじめに

Keras のload_dataで読み込んだデータを可視化する方法。

(1) CIFAR10、CIFAR100 画像への変換方法
(2) MNIST、Fashin-MNIST 画像への変換方法
(3) IMDB Review、Reuters Topics テキストへの変換方法
(4) Boston Housing data のcsvへの変換方法

この記事では「(4) Boston Housing data のcsvへの変換方法」について書いています。

 

ソースコード一式

こちらに(1)~(4) すべてのコードを一括したファイルをアップしています。
コード見たほうが早いわーな方はどうぞ。

MaxiParadise/Save_TF_Keras_Dataset
Contribute to MaxiParadise/Save_TF_Keras_Dataset development by creating an account on GitHub.

 

Boston Housing dataのCSV化保存

from tensorflow.keras.datasets import boston_housing

# Load data from keras API
(x_train, y_train), (x_test, y_test) = boston_housing.load_data()

まず、load_data()で、train, testにデータを読み込みます。

この時点で、
x_train, x_testには、13項目の入力値、
y_train, y_testには、1項目の出力値が格納されています。

以下のサイトに説明があります。

Boston Dataset

 

具体的には、
入力項目が以下のとおり。

項目名意味
CRIM犯罪発生率
ZN
25000平方フィート以上の住宅区間の割合
INDUS
非小売業の土地面積の割合
CHAS
チャールズ川沿いかどうか(1:Yes/0:No)
NOX窒素感化物濃度
RM平均部屋数
AGE
1940年より前の家屋の割合
DIS
ボストンの主要5圏までの距離
RAD
幹線道路へのアクセス指数
TAX
10000ドルあたりの所得税率
PTRATIO
教師あたりの生徒の数
B
アフリカ系アメリカ人居住者の割合
LSTAT低所得者の割合

出力は、以下のとおりです。

項目名意味
MEDV住宅価格の中央値


これをまとめて、もとのcsvデータに復元
します。

 

OUT_DIR = 'boston_housing'
os.makedirs(OUT_DIR, exist_ok=True)

# define feature names from https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html
feature_list = ['CRIM','ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PTRATIO','B','LSTAT','MEDV']

まず保存用ディレクトリを作成。
そして、13項目+MEDVをまとめてfeature_listとして定義します。

この項目ごとのデータをカンマ区切りで出力し、
1行ずつ出力していきます。

# convert train data
with open(os.path.join(OUT_DIR, 'train_data.csv'), mode='w', encoding='utf-8') as f:
    # write header
    f.write(','.join(feature_list)+'\n')
    # write feature data
    for x_data,y_data in zip(x_train, y_train):
        f.write(','.join(map(str,np.append(x_data, y_data)))+'\n')

Trainデータの保存です。
zip()を使って入力と出力を一気に取得、

map()を使って、一気にカンマ区切りの文字列へと変換してます。
かなりスッキリと書けました。

Testデータも同じです。

# convert test data
with open(os.path.join(OUT_DIR, 'test_data.csv'), mode='w', encoding='utf-8') as f:
    # write header
    f.write(','.join(feature_list)+'\n')
    # write feature data
    for x_data,y_data in zip(x_test, y_test):
        f.write(','.join(map(str,np.append(x_data, y_data)))+'\n')

 

Trainが404個、Testが102個出力されます。

以下のように保存されます。

 

 

以上、
Keras API load_data()のデータをローカル保存する方法シリーズでした。

 

最後まで読んでいただき、ありがとうございます!

ブックマーク登録、
ツイッターフォロー、
よろしくお願いいたします!🙇‍♂️🙇‍♂️
↓↓↓