簡單線性回歸(乙個特徵)學習筆記

2021-08-27 09:02:32 字數 2200 閱讀 1550

假設這樣當給出新的

目標: x 和 y 都是已知的 , 需要求出 a:斜率 、b:截距。

最小二乘法(最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。)

誤差的平方

損失函式。

最小二乘法:

稱這個損失函式為

就是根據推到得到,當

通過傳入 x_train ,y_train ,求出 a 和 b ; 並且可以當給定新的 x (向量)時候,**出新的 y。

import numpy as np

class ******linearregression1:

def __init__(self):

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

self.a_ = none

self.b_ = none

def fit(self , x_train , y_train):

assert x_train.ndim ==1

assert x_train.shape[0] == y_train.shape[0]

num = 0

d = 0

for x_i ,y_i in zip(x_train,y_train):

num += (x_i -np.mean(x_train)) *(y_i -np.mean(y_train))

d += (x_i - np.mean(x_train))**2

self.a_ = num/d

self.b_ = np.mean(y_train) - self.a_ *np.mean(x_train)

return self

def predict(self ,x_predict ):

assert x_predict.ndim == 1

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

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

def _predict(self,x_single):

return self.a_ *x_single +self.b_

def __repr__(self):

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

在上面的演算法中,求 a 的方法是使用 for 迴圈;可以改進為使用 向量的點乘 來加快演算法的運算速度。

點乘:兩個向量的點乘 ,每個對應的元素 相乘 再 相加。

觀察a 的分子分母 ,可以發現分子分母實際都是 兩個向量點乘的結果 ;

只需要改動 原**中 fit 部分即可,其餘**保持不變:

def fit(self , x_train , y_train):

assert x_train.ndim ==1

assert x_train.shape[0] == y_train.shape[0]

x_mean = np.mean(x_train)

y_mean = np.mean(y_train)

num = (x_train-x_mean).dot(y_train-y_mean)

d = (x_train-x_mean).dot(x_train-x_mean)

self.a_ = num/d

self.b_ = y_mean - self.a_ *x_mean

return self

TensorFlow實現乙個簡單線性回歸的例子

1 author wsx 2import tensorflow as tf 3import numpy as np 4import matplotlib.pyplot as plt 56 x data np.linspace 0.5,0.5,200 np.newaxis 0.5 0.5 之間產生20...

sklearn學習筆記之簡單線性回歸

線性回歸是資料探勘中的基礎演算法之一,從某種意義上來說,在學習函式的時候已經開始接觸線性回歸了,只不過那時候並沒有涉及到誤差項。線性回歸的思想其實就是解一組方程,得到回歸函式,不過在出現誤差項之後,方程的解法就存在了改變,一般使用最小二乘法進行計算。sklearn對data mining的各類演算法...

機器學習回歸篇 簡單線性回歸

之前的幾篇裡面講了機器學習分類問題的一些演算法,下面幾篇來講一下回歸問題。回歸問題和分類問題有什麼區別呢?分類問題 的結果是一些類別值,比如說,顏色類別,電腦品牌,有無信譽等。回歸問題 的是連續型的數值,如房價,人數,降雨量等等 生活中我們做決定的過程通常是根據兩個或多個變數之間的關係,解決回歸問題...