• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 機器學習入門筆記(二)

    多元線性回歸

    多元線性回歸與一元線性回歸類似,只是特征值由一個變為了兩個及以上。
    表達式:hθ(xi)=θ0+θ1x+θ2x2+...+θnxnh_\theta(x_i)=\theta_0+\theta_1x+\theta_2x_2+...+\theta_nx_n
    因此可用向量寫成:hθ(xi)=θiXiTh_\theta(x_i)=\theta_iX_i^T
    其中XT=(X0,X1,X2....,Xn)X^T=(X_0,X_1,X_2....,X_n)其中X0X_0恒為1。
    而代價函數仍為:(?)2(真實值-預測值)^2 的平均·。

    除了多元線性回歸,還有多項式回歸。多項式回歸是因為用直線擬合不夠準確,因此要用平滑的曲線擬合,如下圖為多項式回歸的一種情況:

    多項式回歸
    多項式回歸的一般式子可寫成:Yi=β0+β1Xi+β2X2+...+βkXikY_i=\beta_0+\beta_1X_i+\beta_2X_2+...+\beta_kX_i^k
    其中當k的值越大時,擬合的效果越好,曲線越平滑,但可能出現過擬合的情況。

    標準方程法

    除了梯度下降法,還有標準方程法也可用于求解參數。一般當參數較少時用標準方程法較為合適,其復雜度為O(n3n^3),其中n為k的大小,即特征量的個數。
    已知代價函數為:i=1m(hw(xi)?yi)2=(y?Xw)T(y?Xw)\sum_{i=1}^{m}(h_w(x^i)-y^i)^2=(y-Xw)^T(y-Xw)

    例如下列一組數據:
    x=[x0x1x2x3x412104514511416324011536323018522136]x= \left[ \begin{matrix} x_0&amp;x_1&amp;x_2&amp;x_3&amp;x_4\\ 1 &amp; 2104 &amp;5&amp;1&amp;45 \\ 1 &amp; 1416 &amp;3&amp;2&amp;40\\ 1 &amp; 1536 &amp;3&amp;2&amp;30 \\ 1 &amp; 852 &amp;2&amp;1&amp;36 \\ \end{matrix} \right]
    w=[w0w1w2w3w4]w= \left[ \begin{matrix} w_0\\ w_1\\ w_2\\ w_3\\ w_4\\ \end{matrix} \right]
    y=[460232315178]y= \left[ \begin{matrix} 460\\ 232\\ 315\\ 178\\ \end{matrix} \right]
    其中w為參數向量,對代價函數的w進行求偏導,即??w[(y?Xw)T(y?Xw)]\frac{\partial}{\partial w}[(y-Xw)^T(y-Xw)]
    根據矩陣求導法則可求得 w=(XTX)?1XTy(X^TX)^{-1}X^Ty
    實例代碼如下:

    import numpy as np
    from numpy import genfromtxt
    import matplotlib.pyplot as plt
    
    # 載入數據
    data = np.genfromtxt("Salary_Data.csv",delimiter=",")
    x_data = data[1:,0,np.newaxis]
    y_data = data[1:,1,np.newaxis]
    plt.scatter(x_data,y_data)
    plt.show()
    
    #為X矩陣 添加偏置項,即添加x0=1
    X_data = np.concatenate((np.ones((30,1)),x_data),axis=1)
    print(X_data)
    
    #標準方程法求解回歸參數
    def weights(xArr, yArr):
        xMat = np.mat(xArr)
        yMat = np.mat(yArr)
        xTx  = xMat.T*xMat # 矩陣乘法
        # 計算矩陣的值,如果值為0,說明矩陣不可逆
        if np.linalg.det(xTx) == 0.0:
            print("矩陣不可逆!")
            return
        ws=xTx.I*xMat.T*yMat
        return ws
    
    x_test = np.array([[0],[12]])
    y_test = ws[0]+x_test*ws[1]
    plt.plot(x_data,y_data,'b.')
    plt.plot(x_test,y_test,'r')
    plt.show()
    

    其中salary_data.csv 為參考的工資數據。

    最終結果如下:
    散點圖
    標準方程法擬合直線圖

    版權聲明:本文為qq_44832672原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_44832672/article/details/91125713

    智能推薦

    機器學習入門-決策樹(二)

    這篇文章主要是帶來機器學習西瓜書決策書這一章的編程習題。相比機器學習實戰中的對應章節有了一定的難度上的提升,主要體現在數據集中加入了連續值,對于連續值的處理不能夠和離散值同等對待,否則其不同值各自分為一類顯然信息增益最大,但這樣在實際的應用中并沒有意義甚至適得其反。這就涉及到了對于連續值的處理。 連續值處理 最簡單的策略就是采用二分法對于連續值進行處理,這正是C4.5決策樹算法中采用的機制。 習題...

    機器學習入門-線性模型(二)

    首先稍微再補充一點理論性的知識。 關于最小化代價函數的幾種算法。 Gradient Descent Normal equation Conjugate gradient BFGS L-BFGS 由于難度原因本篇只關注gradient descent梯度下降法,這個方法應用比較廣泛,在無法使用正規方程法的許多條件下依然可以奏效,其對比正規方程法的優點是在數據量較大的時候仍然能取得較好的結果因為其復雜...

    機器學習入門(二)驗證曲線

    擬合問題的解決 尋找參數的最優:超參數優化器 使用sklearn中的學習曲線 單一參數 這里我們使用驗證曲線validation_curve來找到單一超參數的優化值...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡