使用python numpy線性回歸

2021-08-13 02:23:30 字數 1164 閱讀 5456

線性回歸的原理不再贅述,本文給出了乙個簡單的使用梯度下降的線性回歸模擬。

import numpy as np

def weightsupdate(data,w,b,learning_rate=0.01):

for x0,y0 in data:

y=np.dot(x0,w)+b

w_gradient = (y - y0) * x0.t#求w的梯度

b_gradient=(y-y0)[0];#求b的梯度;取標量

w-=w_gradient*learning_rate#權值更新

b-=b_gradient

loss=0.5*np.square(y-y0)

return [w,b,loss[0][0]]

def generatedata(w,b,datanum=10):#根據w,b生成資料

data =

for i in range(datanum):

noise = np.random.randn(1) * 0.01

x0 = np.random.randn(1,w.shape[0])

y0 = np.dot(x0, w) + b+noise

x = [x0, y0]

return data

def linearregressiontrain(data):

w0=np.random.randn(data[0][0].shape[1],1)

b0=np.random.randn(1)

for i in range(1000):

w0, b0,loss = weightsupdate(data, w0, b0,0.01)

if(i%100==0):

print(loss)

return [w0,b0]

#y=2*x1+3*x2+1

w=np.array([[2],[3],[4],[5]])

b=np.array([1])

data=generatedata(w,b)

w0,b0=linearregressiontrain(data)

print(" w=", w,'\n',"w0=", w0, '\n',"b=", b, '\n',"b0=", b0)

實現的比較簡單,效果還不錯

如何使用python numpy中的陣列複製

在使用python時我們經常會處理陣列,有的時候是複製有的時候不是,這裡也是初學者最容易誤解的地方,簡單講,可以分為下面三種情況 import numpy as np a np.arange 12 a為乙個序列 b a 沒有建立新的物件 print a的shape為 a.shape 輸出a的尺寸 p...

對python numpy陣列中冒號的使用方法詳解

python中冒號實際上有兩個意思 1.預設全部選擇程式設計客棧 2.指定範圍。下面看例子 定義陣列 x array 1,2,www.cppcns.com3,4 5,6,7,8 9,10,11,12 程式設計客棧13,14,15,16 17,18,19,20 輸出為5x4二維陣列 第一種意思,預設全...

Python Numpy陣列儲存

numpy提供了幾種資料儲存的方法。以3 4陣列a為例 這種方法只能儲存為二進位制檔案,且不能儲存當前資料的行列資訊,檔案字尾不一定非要是bin,也可以為txt,但不影響儲存格式,都是二進位制。這種儲存方法對資料讀取有要求,需要手動指定讀出來的資料的的dtype,如果指定的格式與儲存時的不一致,則讀...