TensorFlow 多項式回歸模型

2021-08-24 17:44:49 字數 2161 閱讀 8801

import numpy as np

import tensorflow as tf

import matplotlib.pyplot as plt

plt.rcparams["figure.figsize"]=(14,8)#視覺化的時候設定的長和寬

n_observations=100#樣本點的個數

xs=np.linspace(-3,3, n_observations)#在-3與3之間取得100個數。

ys=np.sin(xs)+np.random.uniform(-0.5,0.5, n_observations)#sin函式並加一些雜訊。

plt.scatter(xs,ys)#繪圖

plt.show()

x=tf.placeholder(tf.float32,name="x")

y=tf.placeholder(tf.float32,name="y")

#初始化引數和權重

w=tf.variable(tf.random_normal([1]),name="weight")

b=tf.variable(tf.random_normal([1]),name="bias")

#計算**結果

y_pred=tf.add(tf.multiply(x,w),b)

w_2=tf.variable(tf.random_normal([1]),name="weight_2")

y_pred=tf.add(tf.multiply(tf.pow(x,2),w_2),y_pred)

w_3=tf.variable(tf.random_normal([1]),name='weight_3')

y_pred=tf.add(tf.multiply(tf.pow(x,3),w_3),y_pred)

#計算損失函式值

sample_num=xs.shape[0]

loss=tf.reduce_sum(tf.pow(y_pred-y,2))/sample_num

#初始化optimizer

learning_rate=0.01

optimizer=tf.train.gradientdescentoptimizer(learning_rate).minimize(loss)

#指定迭代次數,在session裡執行graph

n_samples=xs.shape[0]

with  tf.session()  as  sess:

#初始化所有變數

sess.run(tf.global_variables_initializer()) 

writer=tf.summary.filewriter('.graphs/polynomial_reg',sess.graph)

#訓練模型

for  i  in range(1000):

total_loss=0

for  x,y  in zip(xs,ys):

#通過feed_dict把資料裝進去, optimizer和loss為兩個節點,但是我只要loss的輸出結果.

o,l=sess.run([optimizer,loss],feed_dict=)  

#計算所有樣本的損失

total_loss+=l

#每隔五次列印一次

多項式回歸

import numpy as np import matplotlib.pyplot as plt x np.random.uniform 3,3,size 100 x x.reshape 1,1 y 0.5 x 2 x 2 np.random.normal 0,1,100 plt.scatter...

多項式回歸

多項式回歸 import torch import numpy defmake features x 獲取 x,x 2,x 3 的矩陣 x x.unsqueeze 1 將一維資料變為 n,1 二維矩陣形式 return torch.cat x i for i in range 1 4 1 按列拼接 ...

多項式回歸

線性回歸適用於資料成線性分布的回歸問題,如果樣本是非線性分布,線性回歸就不再使用,轉而可以採用非線性模型進行回歸,比如多項式回歸 多項式回歸模型定義 與線性模型,多項式模型引入了高次項 y w 0 w1 x w2 x2 w 3x3 wnxn y w 0 w 1x w 2x 2 w 3x 3 w nx...