最小二乘法
我們以最簡單的一元線性模型來解釋最小二乘法。什麼是一元線性模型呢?
監督學習中,如果**的變數是離散的,我們稱其為分類(如決策樹,支援向量機等),如果**的變數是連續的,我們稱其為回歸。回歸分析中,如果只包括乙個自變數和乙個因變數,且二者的關係可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,則稱為多元線性回歸分析。對於二維空間線性是一條直線;對於三維空間線性是乙個平面,對於多維空間線性是乙個超平面。
對於一元線性回歸模型, 假設從總體中獲取了n組觀察值(x1,y1),(x2,y2), …,(xn,yn)。對於平面中的這n個點,可以使用無數條曲線來擬合。要求樣本回歸函式盡可能好地擬合這組值。綜合起來看,這條直線處於樣本資料的中心位置最合理。 選擇最佳擬合曲線的標準可以確定為:使總的擬合誤差(即總殘差)達到最小。有以下三個標準可以選擇:
(1)用「殘差和最小」確定直線位置是乙個途徑。但很快發現計算「殘差和」存在相互抵消的問題。
(2)用「殘差絕對值和最小」確定直線位置也是乙個途徑。但絕對值的計算比較麻煩。
(3)最小二乘法的原則是以「殘差平方和最小」確定直線位置。用最小二乘法除了計算比較方便外,得到的估計量還具有優良特性。這種方法對異常值非常敏感。
最常用的是普通最小二乘法(ordinary least square,ols):所選擇的回歸模型應該使所有觀察值的殘差平方和達到最小。(q為殘差平方和)- 即採用平方損失函式。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# author:fcq
# datetime:2018/4/22 21:40
# software: pycharm
#本**從檔案獲取資料
import matplotlib.pyplot as plt
import numpy as np
import csv
defget_a
(x):
a = 0.0
for i in x:
a = a + (i * i)
return a
defget_b
(x):
a = 0.0
for i in x:
a = a + i
return a
defget_c
(x, y):
a = 0.0
for i in range(len(x)):
a = a + x[i] * y[i]
return a
defget_d
(y):
a = 0.0
for i in y:
a = a + i
return a
defprint_list
(ilist):
'列印資料,沒啥用'
for i in ilist:
print(i, ",", end = "")
print("\n")
plt.figure()#使用plt.figure定義乙個影象視窗
plt.title('single variable')#影象標題
plt.xlabel('x')#x軸標題
plt.ylabel('y')#y軸標題
#資料組
listx =
listy =
count = 0
with open("slr_data.csv", "r") as csvfile:#從檔案中獲取資料
reader = csv.reader(csvfile)
for line in reader:
count = count + 1
if count == 1:
continue
plt.grid(true)#是否開啟網格
x = np.linspace(0, 8000)#線性回歸方程線
#等式計算
a = get_a(listx)
b = get_b(listx)
c = get_c(listx, listy)
d = get_d(listy)
n = len(listx)
a = (b*d-c*n)/(b*b-n*a)
b = (b*c-d*a)/(b*b-n*a)
plt.scatter(listx, listy)#描點
plt.plot(x, a * x + b, 'b-')#繪製線條
#線性回歸方程
a = "%.4f" % a
b = "%.4f" % b
print('y='+a+'*x'+'+'+'('+b+')')
plt.pause(1)#畫圖延時
#**環節
x = input("請輸入x,**y-->>")
x = int(x)
y = float(a) * x + float(b)
print('y', '=', y)
專案github位址
最小二乘法 一
最小二乘法 又稱 最小平方法 是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小。最小二乘法還可用於曲線擬合。其他一些優化問題也可通過最小化能量或最大化熵用最小二乘法來表達。為了更好的理解這...
python最小二乘法擬合圓 最小二乘法擬合圓
有一系列的資料點 我們知道這些資料點近似的落在乙個圓上。依據這些資料預計這個圓的引數就是乙個非常有意義的問題。今天就來講講怎樣來做圓的擬合。圓擬合的方法有非常多種,最小二乘法屬於比較簡單的一種。今天就先將這樣的。我們知道圓方程能夠寫為 x?xc 2 y?yc 2 r2 通常的最小二乘擬合要求距離的平...
python最小二乘法擬合圓 最小二乘法擬合圓
有一系列的資料點 我們知道這些資料點近似的落在乙個圓上。依據這些資料預計這個圓的引數就是乙個非常有意義的問題。今天就來講講怎樣來做圓的擬合。圓擬合的方法有非常多種,最小二乘法屬於比較簡單的一種。今天就先將這樣的。我們知道圓方程能夠寫為 x?xc 2 y?yc 2 r2 通常的最小二乘擬合要求距離的平...