📝

[TensorFlowDeveloper]#1 C1W1_Assignment _Housing Prices

2022/08/11に公開

コース1の1週目の課題は住宅価格の予測を行うことです。
そして、それぞれの週毎に学習目標が定められてます。

ちなみに、アサインメントは下記でgitにて公開されてますので誰でも自由にチャレンジすることできます。
TensorFlow Developer Certification C1W1アサインメント

学習目標

1.住宅価格予測の精度モニタリング
2.シングルレイヤーニューラルネットワークを用いた住宅価格予測の分析
3.線形モデルをフィッティングを行うためのシングルニューラルネットワーク構築におけるTensorFlowの利用

アサインメントの内容

基本コストが50kでベッドルームが1つ増える毎に50k増加するような簡単な住宅価格のルールがあった場合を考える。つまり、ベッドルームが1,2,3・・・の場合、100k,150k,200kのように価格が推移していく。
このような場合にデータから住宅価格の予測モデルを作成する。
ベッドルームの数が7の場合の価格を400kに近い値を予測できてれば合格。

アサインの実施

アサインのnotebookの中のhouse_modelメソッドの中身を記載していく。

1.データ定義

今回モデルを作るための説明変数(ベッドルームの数)と目的変数(住宅価格)のデータを設定する。

    xs = np.array([1.0,  2.0, 3.0, 4.0, 5.0, 6.0], dtype=float)
    ys = np.array([1.0,  1.5, 2.0, 2.5, 3.0, 3.5], dtype=float)

2.モデル定義

次にモデル定義を行う。
今回はシングルレイヤーのニューラルネットワークを利用するためunits=1を指定し、インプットとなる説明変数は1次元(ベッドルーム数)なのでinput_shape=[1]を指定する。

model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])

3.コンパイル

モデルのコンパイル時には下記のような引数を指定することができます。

  • optimizer:最適化アルゴリズム(rmsprop,adagrad)
  • loss:損失関数(categorical_crossentropy,mse)
  • metrics:評価関数(accuracy)

ここでは最適化アルゴリズムにsgd、損失関数にmean_squared_errorを指定します。
評価関数は指定しません。

model.compile(optimizer='sgd', loss='mean_squared_error')

フィッティング(学習)

モデルに説明変数、目的変数とepochs(試行回数)を設定し、モデルのフィッティング(学習)を行います。

model.fit(xs, ys, epochs=1000)

予測の実行

下記でベッドルームが7部屋の場合の価格を予測します。

new_x = 7.0
prediction = model.predict([new_x])
print(prediction)

結果は、「4.0074844」と合格基準内の価格となりました。

Discussion