這裡主要記錄多項式線性回歸,會附帶一部分簡單線性回歸的講解
線性回歸其實是典型的引數訓練的機器學習方法,而且專門解決回歸問題
首先先講下簡單線性回歸
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 在許多實際問題分析中,回歸分析的應用十分廣泛,它是處理變數之間相關關係最常用的一種統計方法。回歸分析可分為線性回歸和非線性回歸。線性回歸分析相信大家都已經非常熟悉了,它主要分析有線性回歸趨勢的兩個變數間的關係。但是在處理許多實際問題時,變數間的關...