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...