簡單線性回歸演算法

2021-08-28 17:44:06 字數 2885 閱讀 6834

一、目標

尋找一條直線,最大程度的「擬合」樣本特徵和樣本輸出標記之間的關係。在回歸問題中我們**的是乙個具體的數值,這個具體的數值是在乙個連續的空間裡的,如果想看兩個特徵的回歸問題就需要在三維空間裡進行觀察。樣本特徵有多個的回歸稱為多元線性回歸

損失函式

對a求偏導數:

最後得到的結果:

求a、b的python**:

封裝samplelinearregression演算法的**實現

"""coding:utf-8"""

import numpy as np

class ******linearregression(object):

def __init__(self):

"""初始化****** linear regression 模型"""

self.a_ = none

self.b_ = none

def fit(self,x_train,y_train):

"""根據訓練資料集x_train,y_train訓練****** linear regression模型"""

assert x_train.ndim == 1, \

"****** linear regressor can only solve single feature training data."

assert len(x_train) == len(y_train), \

"the size of x_train must be equal to the size of y_train"

x_mean = np.mean(x_train)

y_mean = np.mean(y_train)

num = 0.0

d = 0.0

for x,y in zip(x_train,y_train):

num += (x-x_mean)*(y-y_mean)

d += (x-x_mean)**2

self.a_ = num/d

self.b_ = y_mean-self.a_*x_mean

return self

def predict(self,x_predict):

"""給定待**資料集x_predict,返回表示x_predict的結果向量"""

assert x_predict.ndim == 1, \

"****** linear regressor can only solve single feature training data."

assert self.a_ is not none and self.b_ is not none, \

"must fit before predict!"

return np.array([self._predict(x) for x in x_predict])

def _predict(self,x):

"""給定單個待**資料x,返回x的**結果值"""

return self.a_ * x +self.b_

def __repr__(self):

return "******linearregression1()"

檢驗封裝演算法的測試**

"""coding:utf-8"""

import numpy as np

import matplotlib.pyplot as plt

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

y = np.array([1.,3.,2.,3.,5.])

plt.scatter(x,y)

plt.axis([0,6,0,6])

plt.show()

from play_ml.******linearrrgression import ******linearregression

slr = ******linearregression()

slr.fit(x,y)

y_hat = slr.predict(x)

plt.scatter(x,y)

plt.plot(x,y_hat,color="r")

plt.axis([0,6,0,6])

plt.show()

測試結果

線性回歸演算法 1 簡單線性回歸原理

一類機器學習演算法的思路 通過分析問題,找到問題的損失函式或者效用函式,通過最優化損失函式或者效用函式,確定機器學習的演算法模型 如圖所示,對於樣本,求一條擬合曲線 y ax b hat 為 的某個樣本 x 的 值,而 y 為樣本的真實值。我們希望 hat 和 y 的差距盡量小 y hat 2 此處...

簡單線性回歸

真實值 y theta x varepsilon 值 hat theta x varepsilon 為誤差 項,服從 均值為0 方差為 為誤差項,服從均值為0,方差為 為誤差項,服 從均值為 0,方差 為 sigma 的高斯分布。已知若干樣本,可以得到若干 varepsilon 值,根 據極大似 然...

簡單線性回歸

資料預處理 data student data 1 刪除缺失值 lm data na.omit data 散點圖 plot height,weight,data data,main scatter plot col 1,pch col為顏色,pch為形狀 箱線圖 boxplot height wei...