tensorflow demo 波士顿房价预测

tensorflow 的一个基础应用,用于预测波士顿的房价

环境

python3.7
tensorflow 1.15.0

代码
import tensorflow as tf
import numpy as np
from sklearn.datasets import load_boston


def read_infile():
    data = load_boston()
    features = np.array(data.data)

    target = np.array(data.target)

    return features, target


def feature_normalize(data):
    mu = np.mean(data, axis=0)
    std = np.std(data, axis=0)

    return (data - mu)/std


def append_bias(features, target):
    n_samples = features.shape[0]
    n_features = features.shape[1]

    intercept_features = np.ones((n_samples,1))

    X = np.concatenate((features,intercept_features), axis=1)
    X = np.reshape(X, [n_samples, n_features+1])

    Y = np.reshape(target, [n_samples, 1])

    return X, Y

def trian_model(learning_rate=0.01, epochs=100):
    features, target = read_infile()

    z_features = feature_normalize(features)

    X_input, Y_input = append_bias(z_features, target)

    num_features = X_input.shape[1]

    X = tf.placeholder(tf.float32, [None, num_features])
    Y = tf.placeholder(tf.float32, [None, 1])

    w = tf.Variable(tf.random_normal((num_features, 1)), name='w')

    init = tf.global_variables_initializer()

    const_trace = []

    pred = tf.matmul(X, w)

    error = pred - Y
    cost = tf.reduce_mean(tf.square(error))

    train_op = tf.python.train.GradientDescentOptimizer(learning_rate).minimize(cost)

    with tf.Session() as sess:
        sess.run(init)
        for i in range(epochs):
            sess.run(train_op, feed_dict={X: X_input, Y: Y_input})
            const_trace.append(sess.run(cost, feed_dict={X: X_input, Y: Y_input}))

        error_ = sess.run(error, {X: X_input, Y: Y_input})
        pred_ = sess.run(pred, {X: X_input, Y: Y_input})

    print(const_trace[-1])

    import matplotlib.pyplot as plt
    # %matplotlib inline

    # plt.plot(const_trace)

    fig, ax = plt.subplots()
    plt.scatter(Y_input, pred_)
    plt.show()

if __name__ == '__main__':
    trian_model()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_刘文凯_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值