#coding:utf-8
'''線性最小二乘擬合
'''from __future__ import division
from scipy import linalg as la
from scipy import optimize
import sympy
import numpy as np
sympy.init_printing()
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcparams['font.sans-serif'] = ['fangsong'] # 指定預設字型
mpl.rcparams['axes.unicode_minus'] = false # 解決儲存影象是負號'-'顯示為方塊的問題
# 定義模型
x = np.linspace(-1,1,100)
a,b,c = 1,2,3
y_exact = a + b * x + c * x ** 2
# 模擬雜訊
m = 100
x = 1 - 2 * np.random.rand(m)
y = a + b * x + c * x ** 2 + np.random.rand(m)
# 使用最小二乘法對資料進行擬合
a = np.vstack([x ** 0,x ** 1,x ** 2])
sol,r,rank,s = la.lstsq(a.t,y)
y_fit = sol[0] + sol[1] * x + sol[2] * x**2
# 繪製資料
fig,ax = plt.subplots(figsize = (12,4))
ax.plot(x,y,'go',alpha = 0.5,label=u'模擬資料')
ax.plot(x, y_exact, 'k', lw=2, label='真實資料 $y = 1 + 2x + 3x^2$')
ax.plot(x, y_fit, 'b', lw=2, label=u'最小二乘法擬合')
線性最小二乘法
example f x 12 ax b 22 f x frac parallel ax b parallel 2 2 f x 2 1 a x b 22 最小化下式時x的值。首先計算 xf x at a x b ata x at b big down xf x a t ax b a tax a tb ...
線性回歸,最小二乘法
回歸的定義 對於乙個點集,使用乙個函式去擬合該點集,使點集與擬合函式間的誤差最小,如果這個函式曲線是一條直線,則是線性回歸,如果曲線是二次曲線,則是二次回歸。廣義線性回歸 廣義線性模型是線性模型的擴充套件,其特點是不強行改變資料的自然度量,資料可以具有非線性和非恆定方差結構 59 主要是通過聯結函式...
線性最小二乘法推導
最小二乘法在中學時講過。有一些散點有線性的趨勢,用乙個一次函式去擬合,使得差距最小化。對於 x i 採用上述函式計算出的結果記為 hat 即 hat w 1 x i w 0 定義差距為 sum m y i hat 2 現需要最小化這個差距。顯然,上式為關於 w 0 和 w 1 的函式 損失函式 為了...