1維線性迴歸

月月今天做題了嗎發表於2022-04-08

機器學習一維線性迴歸

(飛槳AI Studio)

python 程式碼:

# 檢視當前掛載的資料集目錄, 該目錄下的變更重啟環境後會自動還原
# View dataset directory. 
# This directory will be recovered automatically after resetting environment. 
!ls /home/aistudio/data
 
# 檢視工作區檔案, 該目錄下的變更將會持久儲存. 請及時清理不必要的檔案, 避免載入過慢.
# View personal work directory. 
# All changes under this directory will be kept even after reset. 
# Please clean unnecessary files in time to speed up environment loading. 
!ls /home/aistudio/work
 
#匯入所需包
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
 
#樣本資料(Xi,Yi),需要轉換成陣列(列表)形式
Xi=np.array([162,165,159,173,157,175,161,164,172,158]) #身高資料
Yi=np.array([48,64,53,66,52,68,50,52,64,49])#體重資料
 
 

 

 

可以推得

#根據最小二乘法的解析解求解最優權值w和b
w=0
b=0
m=len(Xi)
#請補全最小乘法的程式碼

#求w
#遍歷x陣列求x的平均值 sumx=0 for i in range (m): sumx=sumx+Xi[i] xba=sumx/m

#分別求w的分子和分母 wz=0 wm=0 x2=0 for i in range (m): wz=wz+Yi[i]*(Xi[i]-xba) x2=x2+Xi[i]*Xi[i] wm=x2-sumx*sumx/m w=wz/wm
#求解b for i in range (m): b=b+(Yi[i]-w*Xi[i]) b=b/m #輸出求得的w和b的最優解 print("w=",w,"b=",b)

此步執行得:
w= 1.0595238095237538 b= -117.79761904760

 


 

#畫樣本點
plt.figure(figsize=(8,6)) ##指定影像比例: 8:6
plt.scatter(Xi,Yi,color="red",label="Sample data",linewidth=2) 
#畫擬合直線
x=np.linspace(150,180,80) #在150-180直接畫80個連續點
y=w*x+b ##函式式
plt.plot(x,y,color="blue",label="Fitting Curve",linewidth=2) 
plt.legend() #繪製圖例
plt.xlabel('橫軸:身高(釐米)', fontproperties = 'simHei', fontsize = 12)
plt.ylabel('縱軸:體重(公斤)', fontproperties = 'simHei', fontsize = 12)
plt.show()
 

相關文章