python 非线性回归_机器学习入门之菜鸟之路——机器学习之非线性回归个人理解及python实现...
本文主要向大家介紹了機器學習入門之菜鳥之路——機器學習之非線性回歸個人理解及python實現,通過具體的內容向大家展現,希望對大家學習機器學習入門有所幫助。
梯度下降:就是讓數據順著梯度最大的方向,也就是函數導數最大的放下下降,使其快速的接近結果。
Cost函數等公式太長,不在這打了。網上多得是。
這個非線性回歸說白了就是縮小版的神經網絡。
python實現:
1?import?numpy?as?np
2?import?random
3
4?def?graientDescent(x,y,theta,alpha,m,numIterations):#梯度下降算法
5?????xTrain?=x.transpose()
6?????for?i?in?range(0,numIterations):#重復多少次
7?????????hypothesis=np.dot(x,theta)??????????#h函數
8?????????loss=hypothesis-y
9
10?????????cost=np.sum(loss**2)?/?(2*m)
11?????????print("Iteration?%d?/?cost:%f"%(i,cost))
12?????????graient=np.dot(xTrain,loss)/m
13?????????theta=theta-alpha*graient
14?????return?theta
15
16?def?getData(numPoints,bias,variance):#自己生成待處理數據
17?????x=np.zeros(shape=(numPoints,2))
18?????y=np.zeros(shape=numPoints)
19?????for?i?in?range(0,numPoints):
20?????????x[i][0]=1
21?????????x[i][1]?=?i
22?????????y[i]=(i+bias)+random.uniform(0,1)*variance
23?????return?x,y
24
25?X,Y=getData(100,25,10)
26?print("X:",X)
27?print("Y:",Y)
28
29?numIterations=100000
30?alpha=0.0005
31?theta=np.ones(X.shape[1])
32?theta=graientDescent(X,Y,theta,alpha,X.shape[0],numIterations)
33?print(theta)
運行結果:
......輸出數據太多,只截取后面十幾行
Iteration?99988?/?cost:3.930135Iteration?99989?/?cost:3.930135Iteration?99990?/?cost:3.930135Iteration?99991?/?cost:3.930135Iteration?99992?/?cost:3.930135Iteration?99993?/?cost:3.930135Iteration?99994?/?cost:3.930135Iteration?99995?/?cost:3.930135Iteration?99996?/?cost:3.930135Iteration?99997?/?cost:3.930135Iteration?99998?/?cost:3.930135Iteration?99999?/?cost:3.930135[30.54541676??0.99982553]
其中遇到一個錯誤。
TypeError:?unsupported?operand?type(s)?for?*:?‘builtin_function_or_method‘?and?‘float‘
因為我第五行xTrain?=x.transpose()。剛開始沒加括號。直接用的xTrain?=x.transpose
打印一下xTrain是
只是創建了一個transpose方法,并沒有真的給x轉置。加上括號就好了。再打印xTrain就能正常顯示轉置后的x了
本文由職坐標整理并發布,希望對同學們有所幫助。了解更多詳情請關注職坐標人工智能機器學習頻道!
總結
以上是生活随笔為你收集整理的python 非线性回归_机器学习入门之菜鸟之路——机器学习之非线性回归个人理解及python实现...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海欢乐谷马戏团表演时间
- 下一篇: 被理疗贴烫伤,留下两个疤痕,名淑美容会所