python之線性回歸 指令碼

2021-10-07 00:07:49 字數 3236 閱讀 5355

函式:f(特徵)->特徵值

f(身高)->(體重)首先我們把需要分析的資料匯入放在python資料夾下

pip install matplatlib
安裝成功後

發現身高體重成正比

線性回歸

y=wx+b

只需求出w和b

在函式的值和實際值有誤差

76.3*w+b-178

55.2*w+b-160

…把所有誤差平方後相加,

賦給損失函式loss(w,b),所以我們要求出來讓損失函式最小的w,b初始化:

def

init_data()

: data = np.loadtxt(

'hw.txt'

, delimiter=

'\t'

)return data

deflinear_regression()

: learning_rate =

0.01

#步長 initial_b =

0 initial_m =

0 num_iter =

1000

#迭代次數

data = init_data(

)[b, m]

= optimizer(data, initial_b, initial_m, learning_rate, num_iter)

plot_data(data,b,m)

print

(b, m)

return b, m

defoptimizer

(data, initial_b, initial_m, learning_rate, num_iter)

: b = initial_b

m = initial_m

for i in

range

(num_iter)

: b, m = compute_gradient(b, m, data, learning_rate)

# after = computer_error(b, m, data)

if i %

100==0:

print

(i, computer_error(b, m, data)

)# 損失函式,即誤差

return

[b, m]

defcompute_gradient

(b_cur, m_cur, data, learning_rate)

: b_gradient =

0 m_gradient =

0 n =

float

(len

(data))#

# 偏導數, 梯度

for i in

range(0

,len

(data)):

x = data[i,0]

y = data[i,1]

b_gradient +=-(

2/ n)

*(y -

((m_cur * x)

+ b_cur)

) m_gradient +=-(

2/ n)

* x *

(y -

((m_cur * x)

+ b_cur)

)#偏導數

new_b = b_cur -

(learning_rate * b_gradient)

new_m = m_cur -

(learning_rate * m_gradient)

return

[new_b, new_m]

defcomputer_error

(b, m, data)

: totalerror =

0 x = data[:,

0]y = data[:,

1]totalerror =

(y - m * x - b)**2

totalerror = np.

sum(totalerror, axis=0)

return totalerror /

len(data)

if __name__ ==

'__main__'

: linear_regression(

)

解決:hw.txt中資料是以tab分開的

在修改**

data = np.loadtxt(

'hw.txt'

, delimiter=

'\t'

)

出現上溢位現象

出現的的錯誤看圖

注意:nan代表not a number(不是乙個數),它並不等於0,因為nan不是乙個數,所以相關計算都無法得到數字。inf表示正無窮。

回歸演算法之線性回歸

線性回歸的定義是 目標值預期是輸入變數的線性組合。線性模型形式簡單 易於建模,但卻蘊含著機器學習中一些重要的基本思想。線性回歸,是利用數理統計中回歸分析,來確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法,運用十分廣泛。優點 結果易於理解,計算不複雜 缺點 對非線性的資料擬合不好 適用資...

演算法之線性回歸

一 普通線性回歸 原理 分類的目標變數是標稱型資料,而回歸將會對連續型的資料做出 應當怎樣從一大堆資料裡求出回歸方程呢?假定輸人資料存放在矩陣x中,而回歸係數存放在向量w中。那麼對於給定的資料x1,結果將會通過 y x w 給出。現在的問題是,手裡有一些x和對應的y,怎樣才能找到w呢?乙個常用的方法...

Pytorch之線性回歸

import torch from torch import nn import numpy as np import torch.utils.data as data from torch.nn import init 使得模型的可復現性 torch.manual seed 1 設定預設的資料格式...