這篇文章寫一下如何在python中實現非線性回歸
#定義資料
defgendata
(numpoints,bias,variance)
: x=np.zeros(shape=
(numpoints,2)
) y=np.zeros(shape=
(numpoints)
)for i in
range(0
,numpoints)
: x[i][0
]=1#每一行的第一列第乙個數字等於1
x[i][1
]=i#每一行第二個數字是i
y[i]
=(i+bias)
+random.uniform(0,
1)*variance#y的賦值,100行,一列
檢視x和y的形狀
再來寫一下梯度下降演算法
def
gradientdescent
(x,y,theta,alpha,m,numiterations)
:#m,例項的個數
xtrans=x.transpose(
)for i in
range(0
,numiterations)
: hypothesis=np.dot(x,theta)
loss=hypothesis-y
cost=np.
sum(loss**2)
/(2*m)
print
('iteration %d / cost:%f'
%(i,cost)
) gradient=np.dot(xtrans,loss)
/m theta=theta-alpha*gradient #更新法則
return theta
全部**:
import numpy as np
import random
defgradientdescent
(x,y,theta,alpha,m,numiterations)
:#alpha,學習率;m,例項的個數;numiterations,迭代次數
xtrans=x.transpose(
)#矩陣的轉置
for i in
range(0
,numiterations)
: hypothesis=np.dot(x,theta)
#求內積
loss=hypothesis-y#損失函式
cost=np.
sum(loss**2)
/(2*m)
print
('iteration %d / cost:%f'
%(i,cost)
) gradient=np.dot(xtrans,loss)
/m theta=theta-alpha*gradient #更新法則
return theta
defgendata
(numpoints,bias,variance)
: x=np.zeros(shape=
(numpoints,2)
) y=np.zeros(shape=
(numpoints)
)for i in
range(0
,numpoints)
: x[i][0
]=1#每一行的第一列第乙個數字等於1
x[i][1
]=i#每一行第二個數字是i
y[i]
=(i+bias)
+random.uniform(0,
1)*variance#y的賦值,100行,一列
return x,y
x,y=gendata(
100,25,
10)print
('x:'
,x)print
('y:'
,y)m,n=np.shape(x)
print
('x:shape:'
,m,n)
n_y=np.shape(y)
print
('y:shape:'
,n_y)
numiterations=
10000
alpha=
0.005
theta=np.ones(n)
theta=gradientdescent(x,y,theta,alpha,m,numiterations)
深度學習Tensorflow非線性回歸案列
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt 建立自定義影象 使用numpy生成200個隨機點 x data np.linspace 0.5,0.5,200 np.newaxis noise np...
深度學習Tensorflow非線性回歸案列
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt 建立自定義影象 使用numpy生成200個隨機點 x data np.linspace 0.5,0.5,200 np.newaxis noise np...
tensorflow非線性回歸
該程式有輸入層,中間層和輸出層 執行環境 ubuntun menpo queen queen x550ld downloads py python nonliner regression.py coding utf 8 定義乙個神經網路 輸入層乙個元素,中間層10個神經元,輸出層1個元素 impor...