-----------------------------author:midu
------------------------datetime:2014-12-08 02:29
(1)前言
以前看最小二乘,一直很模糊,後面昨天看了mit的線性代數之矩陣投影和最小二乘,突然有種豁然開朗的感覺,那位老師把他從方程的角度和矩陣聯絡起來,又有了不一樣的理解。其實很簡單就是通過找離散分布的點和貼近的直線間的最小距離,因為距離是正數,為了方便運算就加了個平方,這就是最小二乘法。然後看到了線性回歸,借用網友的一片資料處理的博文做拓展。
(2)演算法
這裡是採用了最小二乘法計算(證明比較冗長略去)。這種方式的優點是計算簡單,但是要求資料矩陣x滿秩,並且當資料維數較高時計算很慢;這時候我們應該考慮使用梯度下降法或者是隨機梯度下降(同logistic回歸中的思想完全一樣,而且更簡單)等求解。這裡對估計的好壞採用了相關係數進行度量。
這裡的txt中包含了x0的值,也就是下圖中前面的一堆1,但是一般情況下我們是不給出的,也就是根據乙個x**y,這時候我們會考慮到計算的方便也會加上乙個x0。
資料是這樣的
讀取資料。
standregres(xarr,yarr)
普通的線性回歸,這裡用的是最小二乘法
畫出擬合的效果
calccorrcoef(xarr,yarr,ws)
計算相關度,用的是numpy內建的函式
結果:
這裡的想法是:我們賦予**點附近每乙個點以一定的權值,在這上面基於最小均方差來進行普通的線性回歸。這裡面用「核」(與支援向量機相似)來對附近的點賦予最高的權重。這裡用的是高斯核:
根據計算公式計算出再testpoint處的估計值,這裡要給出k作為引數,k為1的時候演算法退化成普通的線性回歸。k越小越精確(太小可能會過擬合)求解用最小二乘法得到如下公式:
lwlrtest(testarr,xarr,yarr,k=1.0)
因為lwlr需要指定每乙個點,這裡把整個通過迴圈算出來了
lwlrtestplot(xarr,yarr,k=1.0)
將結果繪製成影象
結果:
(3)基於bp神經網路和遺傳演算法,以及馬爾科夫模型的實戰**競賽
比如說現在用bp、svm、hmm等演算法研究做程式化的人很多
線性回歸之普通最小二乘
from sklearn import linear model reg linear model.linearregression print reg.fit 0,0 1,1 2,2 0,1,2 linearregression copy x true,fit intercept true,n j...
sklearn 最小二乘線性回歸
sklearn是機器學習中的乙個常用的python第三方模組,裡面對機器學習的許多方法進行了封裝,在進行機器學習的任務時,許多常用的演算法可在這個模組中直接呼叫。並且sklearn中還提供了許多可用於分類 回歸的優質資料集。使用好sklearn最直接的方法就是仔細閱讀官方 sklearn就像是乙個模...
線性回歸 最小二乘 diabetes
資料集 特徵 age 年齡 性別 bmi 體質指數 bp 血壓 s1,s2,s3,s4,s4,s6 六種血清的化驗資料 標籤 value 一年後疾病進展的量化指標 一 載入庫 import numpy as np import pandas as pd from sklearn import dat...