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

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


相关文章
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
765 0
|
机器学习/深度学习 数据采集 传感器
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
368 0
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
531 0
|
12月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
436 0
|
机器学习/深度学习 数据采集 运维
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
504 4
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
机器学习/深度学习 算法 PyTorch
OpenCV-图像着色(采用DNN模块导入深度学习模型)
OpenCV-图像着色(采用DNN模块导入深度学习模型)
708 0
来自OpenCv的DNN模块助力图像分类任务
来自OpenCv的DNN模块助力图像分类任务
472 0
来自OpenCv的DNN模块助力图像分类任务
|
机器学习/深度学习
DNN永日新闻模块(YongRi)免费1.00.09版本下载
DNN上实现新闻发布国内模块很少,主要是使用永日新闻模块实现。最近不少人在寻找之前免费的1.00.09版本,为方便大家学习,我把这个模块传上来了。 下载链接:永日新闻模块1.00.09免费版本下载 此版本不支持图片新闻模板。
962 0