IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python深度学习-tensorflow实现一个线性回归的案例(对excel数据进行分析) -> 正文阅读

[人工智能]python深度学习-tensorflow实现一个线性回归的案例(对excel数据进行分析)

一、实验大体步骤:

  1. 准备数据;

  2. 构建回归模型;

  3. 构建损失函数(损失用均方误差表示);

  4. 优化损失(用梯度下降方法定义优化器);

  5. 输出测试集准确率和预测值。

二、具体实现:

线性回归:w1x1+w2x2+w3x3+......+wnxn+bias(这是一个偏移量),我们采用的算法是:线性回归,策略是:均方误差,优化是:梯度下降API,

1.转准备好实验的数据:86个数据,每一个有一个特征值,所以形成一个[100,1]的列表。

2.建立一个模型,需要我们随机生成两个参数,一个是权重w一个是偏置b , y_predict = x * w + b,需要注意的是这个模型的参数必须要用变量来定义

3.求损失误差,我们求的是均方误差,公式是:((y1-y1')^2+(y2-y2')^2+.......+(y100-y100')^2)/86

4.接下来就是利用梯度下降来优化误差,这个梯度下降是tensorflow里边自己实现的,我们只需要指定一个学习率就行了

Tensorflow运算的API

三、代码实现:

def myLineregression01():
 ? ?# 1、数据准备
 ? ?MasterFile = pd.read_excel('C:\\Users\\Administrator\\Desktop\\线性回归实验\\Data01.xlsx')
 ? ?# 查看文件有多少行和列
 ? ?Master=MasterFile.loc[:,['Unnamed: 5','120KV 1250VA 2mm滤波','Unnamed: 9','Unnamed: 10','Unnamed: 11','Unnamed: 12']].values
 ? ?#删除掉第0和第1行,同时取0-80行做训练集
 ? ?y=np.delete(Master[:,0],[0,1],axis=0).reshape(86,1)
 ? ?x1, x2 = np.delete(Master[:,1],[0,1],axis=0).reshape(86,1),np.delete(Master[:,2],[0,1],axis=0).reshape(86,1)
 ? ?x3, x4 = np.delete(Master[:,3],[0,1],axis=0).reshape(86,1),np.delete(Master[:,4],[0,1],axis=0).reshape(86,1)
 ? ?x5 = np.delete(Master[:,5],[0,1],axis=0).reshape(86,1)
?
?
 ? ?y_true_train = tf.convert_to_tensor(y[range(0,80)], tf.float32, name='y_true_train')
 ? ?x1_train = tf.convert_to_tensor(x1[range(0,80)], tf.float32, name='x1_train')
 ? ?x2_train = tf.convert_to_tensor(x2[range(0,80)], tf.float32, name='x2_train')
 ? ?x3_train = tf.convert_to_tensor(x3[range(0,80)], tf.float32, name='x3_train')
 ? ?x4_train = tf.convert_to_tensor(x4[range(0,80)], tf.float32, name='x4_train')
 ? ?x5_train = tf.convert_to_tensor(x5[range(0,80)], tf.float32, name='x5_train')
?#删除掉第0和第1行,同时取81-86行做训练集
 ? ?y_true_test = tf.convert_to_tensor(y[range(81,86)], tf.float32, name='y_true_test')
 ? ?x1_test = tf.convert_to_tensor(x1[range(81,86)], tf.float32, name='x1_train')
 ? ?x2_test = tf.convert_to_tensor(x2[range(81,86)], tf.float32, name='x2_train')
 ? ?x3_test = tf.convert_to_tensor(x3[range(81,86)], tf.float32, name='x3_train')
 ? ?x4_test = tf.convert_to_tensor(x4[range(81,86)], tf.float32, name='x4_train')
 ? ?x5_test = tf.convert_to_tensor(x5[range(81,86)], tf.float32, name='x5_train')
?
?
 ? ?# 2.建立回归模型,1个特征值x 1个权重weight,一个偏置bias,组成:y = x*weight + bias,这里一定是变量
 ? ?# 随机给一个权重和偏置,让他接下来去计算误差函数,然后再去优化,但是前提是必须是变量才能优化
 ? ?weight_x1 = tf.Variable(tf.random.normal([1,1],mean=0.0,stddev=1.0),name='w1')#即使是一个数也要表示成矩阵,一行一列表示一个矩阵
 ? ?weight_x2 = tf.Variable(tf.random.normal([1,1],mean=0.0,stddev=1.0),name='w2')#即使是一个数也要表示成矩阵,一行一列表示一个矩阵
 ? ?weight_x3 = tf.Variable(tf.random.normal([1,1],mean=0.0,stddev=1.0),name='w3')#即使是一个数也要表示成矩阵,一行一列表示一个矩阵
 ? ?weight_x4 = tf.Variable(tf.random.normal([1,1],mean=0.0,stddev=1.0),name='w4')#即使是一个数也要表示成矩阵,一行一列表示一个矩阵
 ? ?weight_x5 = tf.Variable(tf.random.normal([1,1],mean=0.0,stddev=1.0),name='w5')#即使是一个数也要表示成矩阵,一行一列表示一个矩阵
 ? ?bias = tf.Variable(0.0,name='b')
 ? ?y_predict = tf.matmul(x1_train,weight_x1)+tf.matmul(x2_train,weight_x2)+\
 ? ? ? ? ? ? ? ?tf.matmul(x3_train,weight_x3)+tf.matmul(x4_train,weight_x4) + \
 ? ? ? ? ? ? ? ?tf.matmul(x5_train,weight_x5)+bias
?
 ? ?print(y_predict)
 ? ?
 ? ?# 3.建立损失函数
 ? ?loss = tf.reduce_mean(tf.square(y_true_train - y_predict), name='loss')
?
 ? ?# 4.梯度下降优化损失,learning_rate一般是在0~10,越小越好通常是,最大不要超过10,然后通过minimize()来优化误差函数loss
 ? ?tf.compat.v1.disable_eager_execution()
 ? ?train_op = tf.compat.v1.train.GradientDescentOptimizer(0.03).minimize(loss=loss)
?
 ? ?# 接下来就要通过会话来运行实现了,但在这之前需要初始化变量的op
 ? ?init_op = tf.global_variables_initializer()
?
 ? ?with tf.Session() as sess:
 ? ? ? ?# 初始化变量
 ? ? ? ?sess.run(init_op)
 ? ? ? ?# 打印最先初始化的权重个偏置
 ? ? ? ?print("最先初始化的权重:%f %f %f %f %f  和 偏置是:%f" % (weight_x1.eval(),weight_x2.eval(),weight_x3.eval(),
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weight_x4.eval(), weight_x5.eval(),bias.eval()))
 ? ? ? ?# 运行优化,这只是训练一次的结果:
 ? ? ? ?# sess.run(train_op)
 ? ? ? ?# 循环训练,运行优化,优化
 ? ? ? ?# 1000次,越多越精确,越接近我们的假设值
 ? ? ? ?for i in range(6000):
 ? ? ? ? ? ?sess.run(train_op)
 ? ? ? ? ? ?# 打印优化后的权重和偏置
 ? ? ? ? ? ?print("loss:%f"%(loss.eval()))
 ? ? ? ? ? ?print("第%d次优化后的权重:%f %f %f %f %f  和 偏置是:%f" % (i, weight_x1.eval(),weight_x2.eval(),weight_x3.eval(),
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weight_x4.eval(), weight_x5.eval(), bias.eval()))
?
?
 ? ? ? ?print("model weights:%f %f %f %f %f" % (weight_x1.eval(),weight_x2.eval(),weight_x3.eval(),weight_x4.eval(),weight_x5.eval()))
 ? ? ? ?print("model bias: %f" % (bias.eval()))
 ? ? ? ?y_predict_test=tf.matmul(x1_test,weight_x1)+tf.matmul(x2_test,weight_x2)+\
 ? ? ? ? ? ? ? ?tf.matmul(x3_test,weight_x3)+tf.matmul(x4_test,weight_x4) + \
 ? ? ? ? ? ? ? ?tf.matmul(x5_test,weight_x5)+bias
 ? ? ? ?print(y_predict_test)
 ? ? ? ?loss_test = tf.sqrt(tf.reduce_mean(tf.square(y_predict_test - y_true_test)))
 ? ? ? ?sess.run(loss_test)
 ? ? ? ?print("loss: \n", loss_test.eval())
 ? ? ? ?print("对测试集的真实值y_true_test: \n", y_true_test.eval().tolist())
 ? ? ? ?print("对测试集的预测值y_test_predict: \n", y_predict_test.eval().tolist())
?
?

四、实验结果:

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:31:02  更:2022-03-10 22:34:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:46:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码