Tensorflowの環境を構築して線形回帰を試す

年齢と点数の関係

GoogleやMicrosoft、IBMが提供する機械学習済みのデータを使うのであれば、自身で環境を構築する必要はありません。

しかし、独自の学習をさせるのであれば自身のコンピュータに環境を構築するか、或いはGoogleなどが提供するクラウド上の機械学習の環境が必要です。

以下のサイトを参考にさせていただき、MacOSにTensorflowをインストールして環境を構築しました。
https://qiita.com/junichiro/items/8886f3976fc20f73335f

上記のサイトでは、予め線形関数の係数を定めて、この関数からデータを作成して学習データとしています。

今回は、下記のサイトのデータを使わせていただき、線形回帰の機械学習を試してみました。
https://kyoto-edu.sakura.ne.jp/?&course=statistics&content=correl

実行結果は以下のとおり。

python tensorflow-test.py

0 [8.540184] [0.9793252]
200 [6.1199374] [-0.58089983]
400 [6.234987] [-1.5768614]
600 [6.325655] [-2.3617592]
800 [6.3971086] [-2.9803212]
1000 [6.4534197] [-3.467797]
1200 [6.4977975] [-3.8519664]
1400 [6.5327706] [-4.1547227]
1600 [6.560332] [-4.3933163]
1800 [6.582052] [-4.581347]
2000 [6.5991697] [-4.7295313]

0歳の得点がマイナスというのも変なモデルですが、そこはそういうデータだったということで良しとします。

Pythonのソースファイルは以下です。

import tensorflow as tf
import numpy as np

x_data = np.loadtxt('exam-result.csv', delimiter=',', usecols=[3], skiprows=1)
y_data = np.loadtxt('exam-result.csv', delimiter=',', usecols=[1], skiprows=1)

# Try to find values for W and b that compute y_data = W * x_data + b
# (We know that W should be 0.1 and b 0.3, but TensorFlow will
# figure that out for us.)
W = tf.Variable(tf.zeros([1]))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b

# Minimize the mean squared errors.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

# Before starting, initialize the variables.  We will 'run' this first.
init = tf.global_variables_initializer()

# Launch the graph.
sess = tf.Session()
sess.run(init)

# Fit the line.
for step in range(2001):
    sess.run(train)
    if step % 200 == 0:
        print(step, sess.run(W), sess.run(b))

# Close the Session when we're done.
sess.close()

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA