多項式線性回歸總結

2021-08-26 20:51:27 字數 2848 閱讀 8920

這裡主要記錄多項式線性回歸,會附帶一部分簡單線性回歸的講解

線性回歸其實是典型的引數訓練的機器學習方法,而且專門解決回歸問題

首先先講下簡單線性回歸

y=ax+b

其中

**實現

import numpy as np

import matplotlib.pyplot as plt

class ******linearregression:

def __init__(self):

self.a_ = none

self.b_ = none

#模型訓練

def fit(self, x, y):

assert x.ndim == 1, "illegle x"

assert len(x) == len(y), "this size of x_train must be equal to the size of y_train"

num = 0

d = 0

# 用for迴圈耗時長,需要消耗大量的計算資源

# for x_i, y_i in zip(x, y):

# num += (x_i - np.mean(x))*(y_i - np.mean(y))

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

# 用向量點乘的方式可以讓運算時長變短

num = (x-np.mean(x)).dot(y-np.mean(y))

d = (x-np.mean(x)).dot(x-np.mean(x))

self.a_ = num/d

self.b_ = np.mean(y) - self.a_* np.mean(x)

return self

#資料**

def predict(self, x):

assert x.ndim == 1, "illegle x"

assert self.a_ is not none and self.b_ is not none, "must fit before predict"

y_predict = [self.__predict(x_i) for x_i in x]

return y_predict

#私有函式,單個資料的**

整理一下變成如下

其中

**如下

import numpy as np

from .mertristics import mertristics

class linearregression:

def __init__(self):

self.coef_ = none

self.interception_ = none

self.theta_ = none

#訓練模型

def fit(self, x_trains, y_trains):

assert x_trains.shape[0] == len(y_trains), \

"the size of x_trains must be equal to the size of y_trians"

x_b = np.hstack([np.ones([len(x_trains), 1]), x_trains])

self.theta_ = ((np.linalg.inv(x_b.t.dot(x_b))).dot(x_b.t)).dot(y_trains)

self.coef_ = self.theta_[0]

self.interception_ = self.theta_[1:]

return self

#**資料

線性回歸總結

回歸模型的最終目標是建立自變數x和y之間的關係。線性回歸採用乙個高維的線性函式來盡可能的擬合所有的資料點,最簡單的想法就是根據中心極限定理,最小化函式值與真實值誤差的平方 概率解釋 高斯分布加最大似然估計 線性回歸假設誤差服從正太分布,值y也服從正太分布。對數似然函式求最大值即為即均方誤差,因此用這...

線性回歸與多項式回歸

線性回歸是最簡單的一種機器學習演算法,可分為一元線性回歸和多元線性回歸 也就是特徵數量不同 這裡先主要介紹一元線性回歸。舉乙個簡單的例子,有一組帶標籤樣本 xi,yi x是特徵y是響應變數 標籤 認為他們服從線性方程 y i a bx i cy i a bx i c yi a bxi c其中b是回歸...

多項式擬合lm 非線性回歸模型 多項式回歸

作者丨丹丹 丨醫數思維雲課堂 id datamedi 在許多實際問題分析中,回歸分析的應用十分廣泛,它是處理變數之間相關關係最常用的一種統計方法。回歸分析可分為線性回歸和非線性回歸。線性回歸分析相信大家都已經非常熟悉了,它主要分析有線性回歸趨勢的兩個變數間的關係。但是在處理許多實際問題時,變數間的關...