中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

學習日志---線性回歸實現

發布時間:2020-03-19 22:24:56 來源:網絡 閱讀:354 作者:wukong0716 欄目:開發技術

由對偏導數的計算可以得到w的計算公式:如下

假定輸入數據存放在矩陣x中,而回歸系數存放在向量w中。那么對于給定的數據學習日志---線性回歸實現學習日志---線性回歸實現,預測結果將會通過學習日志---線性回歸實現學習日志---線性回歸實現給出。對于x和y,如何找到w?常用的方法是找到平方誤差最小的w。

        平方誤差可以寫做:

學習日志---線性回歸實現

學習日志---線性回歸實現

        用矩陣表示還可以寫做學習日志---線性回歸實現學習日志---線性回歸實現。對w求導,解得w如下:

學習日志---線性回歸實現

采用的數據是在UCI上下載的回歸汽車msg性能的數據集;

由于下載的數據格式不標準,因此這里自己寫了一段java代碼將數據集的格式進行了重新的規整,代碼如下:

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<length; i++)
            {
                while(line.charAt(i)==' ')
                {
                    if(line.charAt(i+1)!=' ')
                    {
                        newline = newline + " ";
                        break;
                    }
                    i++;
                }
                newline = newline + line.charAt(i);
            }
            newline = newline + "\r\n";
            newline = newline.substring(4);
            bufferedWriter.write(newline);
           
            newline = null;
        }
        
        bufferedWriter.close();
    }
    

}
輸出的文件是每個變量之間都有兩個空格的數據集,其中第一項是因變量,也就是msg。

下面是采用python方法對數據集進行線性回歸:

import numpy as np
import matplotlib.pyplot as plt

numFeat = len(open('result.txt').readline().split('  '))
dataMat = []; labelMat = []
fr = open('result.txt')
//這里對每行的數據進行分割,提取每行的數據
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]))
//將序列轉為矩陣
xMat = np.mat(dataMat)
yMat = np.mat(labelMat).T
xTx = xMat.T*xMat
/判斷行列式的值是否為0
if np.linalg.det(xTx) == 0.0:
    print "wrong"
//利用公式求參數
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矩陣中某一項與yHat的關系,如這里是第二項
ax.plot(xCopy[:,1],yHat)
//展示圖像
plt.show()

//這里是求出相關系數的函數,越接近1越好
yHat = xMat*ws
print yHat.T.shape
print yMat.shape
print np.corrcoef(yHat.T, yMat.T)


附件:http://down.51cto.com/data/2366089
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠州市| 全南县| 阳高县| 鹿邑县| 安远县| 山西省| 红河县| 浦东新区| 德钦县| 江北区| 磴口县| 邛崃市| 军事| 辉南县| 巨野县| 广元市| 离岛区| 清河县| 铁岭县| 石门县| 文昌市| 万源市| 宜良县| 台南县| 武功县| 白朗县| 博白县| 揭阳市| 保康县| 商都县| 隆尧县| 筠连县| 安徽省| 陵水| 靖安县| 玉树县| 连州市| 吉林市| 德阳市| 武清区| 安丘市|