Tensorflow实现多元线性回归
生活随笔
收集整理的這篇文章主要介紹了
Tensorflow实现多元线性回归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上一篇使用tensorflow實現了簡單的線性回歸,這次在簡單的線性回歸基礎上,通過在權重和占位符聲明中
修改來對相同的數據進行多元線性回歸。
同樣以波士頓房價數據為例
波士頓房價數據集可從http://lib.stat.cmu.edu/datasets/boston處獲取。
多元線性回歸具體實現步驟
1:導入需要的所有軟件包
2:因各特征的數據范圍不同,需要歸一化特征數據,為此定義一個歸一化函數
定義一個append_bias_reshape()函數,來將固定輸入值和偏置結合起來
3:加載數據集,并劃分為X_train,Y_train。注意X_train包含所需要的特征,可以選擇在這里對數據
進行歸一化處理。也可以添加偏置并對網絡數據重構
4:為訓練數據聲明Tensorflow占位符,觀測占位符X的形狀變化
5:為權重和偏置創建Tensorflow變量。通過隨機數初始化權重
6:定義要用于預測的線性回歸模型,這個實例需要矩陣乘法來完成這個任務
7:定義損失函數
8:選擇正確的優化器
9:定義初始化操作符
10:開始計算圖
11繪制損失函數
12利用從模型學到的系數來預測房價
具體代碼如下:
#1:導入所需要的軟件包 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_bostontf.compat.v1.disable_eager_execution()'''使用Tensorflow實現多元線性回歸'''#2:因為各特征的數據范圍不同,需要歸一化特征數據。為此定義一個歸一化函數 #另外,這里添加一個額外的固定輸入值將權重和偏置結合起來。 #為此定義函數append_bias_reshape()。該技巧可簡化編程 def normalize(X):'''歸一化數組 X''''''np.mean:計算均值np.std:計算標準差'''mean = np.mean(X)std = np.std(X)X = (X-mean)/stdreturn X def append_bias_reshape(features,labels):'''param features: 對于矩陣來說,shape[0]:表示矩陣的行數shape[1]:表示矩陣的列數'''m = features.shape[0]n = features.shape[1]'''np.c_:按行將矩陣組合起來'''x = np.reshape(np.c_[np.ones(m),features],[m,n+1])y = np.reshape(labels,[m,1])return x,y#3:加載波士頓房價數據集,并劃分為X_train,Y_train #可以選擇這里對數據進行歸一化處理,也可以添加偏置并對網絡數據重構boston = load_boston() X_train,Y_train = boston.data,boston.target X_train = normalize(X_train) X_train,Y_train = append_bias_reshape(X_train,Y_train) # 訓練示例數 m = len(X_train) #特征+偏置的數量 n = 13+1 #4:為訓練數據聲明Tensorflow占位符,觀測占位符X的形狀變化 X = tf.compat.v1.placeholder(tf.float32,name='X',shape=[m,n]) Y = tf.compat.v1.placeholder(tf.float32,name='Y')#5:為權重和偏置創建Tensorflow變量,通過隨機數初始化權重 w = tf.compat.v1.Variable(tf.random.normal([n,1])) b = tf.compat.v1.Variable(tf.zeros(1))#6:定義用于預測的線性回歸模型。需要矩陣乘法完成任務Y_hat = tf.matmul(X,w)#7:為了更好的求微分,定義損失函數 loss = tf.reduce_mean(tf.square(Y-Y_hat,name='loss'))#8:選擇正確的優化器 optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss)#9:定義初始化操作符 init_op = tf.compat.v1.global_variables_initializer() total = []#10:開始計算圖with tf.compat.v1.Session() as sess:sess.run(init_op)writer = tf.compat.v1.summary.FileWriter('graphs2',sess.graph)for i in range(100):l = sess.run([optimizer,loss],feed_dict={X:X_train,Y:Y_train})total.append(l)print('Epoch {0}:Loss {1}'.format(i,l))writer.close()w_value,b_value = sess.run([w,b])#11:繪制損失函數 plt.plot(total) plt.show()#12:從模型中學到的系數來預測房價 N = 500 X_new = X_train[N,:] Y_pred = (np.matmul(X_new,w_value)+b_value).round(1) print('Predicted value:${0} Actual value: / ${1}'.format(Y_pred[0]*1000,Y_train[N]*1000,'\nDone'))總結
以上是生活随笔為你收集整理的Tensorflow实现多元线性回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 4283:You Are the
- 下一篇: LeetCode 142 环形链表 II