由對偏導(dǎo)數(shù)的計(jì)算可以得到w的計(jì)算公式:如下
鹽田網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。假定輸入數(shù)據(jù)存放在矩陣x中,而回歸系數(shù)存放在向量w中。那么對于給定的數(shù)據(jù),預(yù)測結(jié)果將會通過給出。對于x和y,如何找到w?常用的方法是找到平方誤差最小的w。
平方誤差可以寫做:
用矩陣表示還可以寫做。對w求導(dǎo),解得w如下:
采用的數(shù)據(jù)是在UCI上下載的回歸汽車msg性能的數(shù)據(jù)集;
由于下載的數(shù)據(jù)格式不標(biāo)準(zhǔn),因此這里自己寫了一段java代碼將數(shù)據(jù)集的格式進(jìn)行了重新的規(guī)整,代碼如下:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class MyMaze { public static void main(String[] args) throws Exception { FileInputStream fileInputStream = new FileInputStream(new File("E:\\DataRegression.txt")); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); File file = new File("E:\\result.txt"); FileOutputStream fileOutputStream = new FileOutputStream(file); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); String line; String newline = null; while((line = bufferedReader.readLine())!=null) { if(line == null) { break; } int length = line.length(); for(int i = 0; i 輸出的文件是每個(gè)變量之間都有兩個(gè)空格的數(shù)據(jù)集,其中第一項(xiàng)是因變量,也就是msg。下面是采用python方法對數(shù)據(jù)集進(jìn)行線性回歸:
import numpy as np import matplotlib.pyplot as plt numFeat = len(open('result.txt').readline().split(' ')) dataMat = []; labelMat = [] fr = open('result.txt') //這里對每行的數(shù)據(jù)進(jìn)行分割,提取每行的數(shù)據(jù) for line in fr.readlines(): lineArr=[] curline = line.split(' ') for i in range(1,numFeat): lineArr.append(float(curline[i])) dataMat.append(lineArr) labelMat.append(float(curline[0])) //將序列轉(zhuǎn)為矩陣 xMat = np.mat(dataMat) yMat = np.mat(labelMat).T xTx = xMat.T*xMat /判斷行列式的值是否為0 if np.linalg.det(xTx) == 0.0: print "wrong" //利用公式求參數(shù) ws = xTx.I*(xMat.T*yMat) //利用matplotLib畫圖,制定在fig中 fig = plt.figure() ax = fig.add_subplot(111) xCopy = xMat.copy() xCopy.sort(0) yHat = xCopy*ws //這里是找x矩陣中某一項(xiàng)與yHat的關(guān)系,如這里是第二項(xiàng) ax.plot(xCopy[:,1],yHat) //展示圖像 plt.show() //這里是求出相關(guān)系數(shù)的函數(shù),越接近1越好 yHat = xMat*ws print yHat.T.shape print yMat.shape print np.corrcoef(yHat.T, yMat.T)附件:http://down.51cto.com/data/2366089另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文名稱:學(xué)習(xí)日志---線性回歸實(shí)現(xiàn)-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/decpci.html