DL之DNN:基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)


Z1
小张小张 2022-09-19 10:29:56 51678
分类专栏: 资讯

DL之DNN:基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)

目录

基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)

输出结果

实现代码


基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)

        该数据包含9个变量的20640个观测值,该数据集包含平均房屋价值作为目标变量和以下输入变量(特征):平均收入、房屋平均年龄、平均房间、平均卧室、人口、平均占用、纬度和经度。

输出结果

epoch: 20 batch_id: 83 Batch loss 0.5640518069267273
……
epoch: 90 batch_id: 203 Batch loss 0.6403363943099976
epoch: 90 batch_id: 204 Batch loss 0.45315566658973694
epoch: 90 batch_id: 205 Batch loss 0.5528439879417419
epoch: 90 batch_id: 206 Batch loss 0.386596143245697

实现代码

  1. import tensorflow as tf
  2. import numpy as np
  3. from sklearn.datasets import fetch_california_housing
  4. from sklearn.preprocessing import StandardScaler
  5. scaler = StandardScaler() 将特征进行标准归一化
  6. 获取房价数据
  7. housing = fetch_california_housing()
  8. m,n = housing.data.shape
  9. print (housing.keys()) 输出房价的key
  10. print (housing.feature_names) 输出房价的特征:
  11. print (housing.target)
  12. print (housing.DESCR)
  13. housing_data_plus_bias = np.c_[np.ones((m,1)), housing.data]
  14. scaled_data = scaler. fit_transform(housing.data)
  15. data = np.c_[np.ones((m,1)),scaled_data]
  16. T1、传统方式
  17. A = tf.placeholder(tf.float32,shape=(None,3))
  18. B = A + 5
  19. with tf.Session() as sess:
  20. test_b_l = B.eval(feed_dict={A:[[1,2,3]]})
  21. test_b_2 = B.eval(feed_dict={A:[[4,5,6],[7,8,9]]})
  22. print(test_b_1)
  23. print(test_b_2)
  24. T2、采用mini-batch方式
  25. X = tf.placeholder(tf.float32, shape=(None, n + 1), name="X")
  26. y = tf.placeholder(tf.float32, shape=(None, 1), name="y")
  27. 采用optimizer计算梯度,设置参数
  28. n_epochs = 100
  29. learning_rate = 0.01
  30. batch_size=100
  31. n_batches = int(np.ceil(m / batch_size))
  32. theta = tf.Variable(tf.random_uniform([n + 1, 1], -1.0, 1.0, seed=42), name="theta")
  33. y_pred = tf.matmul(X, theta, name="predictions")
  34. error = y_pred - y
  35. mse = tf.reduce_mean(tf.square(error), name="mse")
  36. optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
  37. training_op = optimizer.minimize(mse)
  38. init = tf.global_variables_initializer()
  39. 定义mini-batch取数据方式
  40. def fetch_batch(epoch, batch_index, batch_size):
  41. np.random.seed(epoch * n_batches + batch_index)
  42. indices = np.random.randint(m, size=batch_size)
  43. X_batch = data[indices]
  44. y_batch = housing.target.reshape(-1, 1)[indices]
  45. return X_batch, y_batch
  46. mini-batch计算过程
  47. with tf.Session() as sess:
  48. sess.run(init)
  49. for epoch in range(n_epochs):/gfeMat
  50. avg_cost = 0.
  51. for batch_index in range(n_batches):
  52. X_batch, y_batch = fetch_batch(epoch, batch_index, batch_size)
  53. sess.run(training_op, feed_dict={X: X_batch, y: y_batch})
  54. if epoch % 10 == 0:
  55. total_loss = 0
  56. acc_train = mse.eval(feed_dict={X: X_batch, y: y_batch})
  57. total_loss += acc_train
  58. print(acc_train, total_loss)
  59. print("epoch:",epoch, "batch_id:",batch_index, "Batch loss", total_loss)

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=1784
赞同 0
评论 0 条
小张小张L0
粉丝 0 发表 7 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2694
【软件正版化】软件正版化工作要点  2659
统信UOS试玩黑神话:悟空  2564
信刻光盘安全隔离与信息交换系统  2252
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1122
grub引导程序无法找到指定设备和分区  774
江波龙2025届校园招聘宣讲会行程大放送  30
点击报名 | 京东2025校招进校行程预告  27
海康威视2025校招|海康机器人,邀你共创工业智能化未来!  26
金山办公2024算法挑战赛 | 报名截止日期更新  24
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!