• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • DC學院學習筆記(十六):線性回歸實戰

    預測型數據分析:線性回歸

    回歸:預測數值型變量
    分類:預測樣本所屬類別
    聚類:在未知樣本類別的情況下,根據樣本之間的相似性把樣本分成不同的類別

    適用:用于股價、房價、空氣質量等數值型變量的預測
    數學模型:分析兩組變量之間的關系
    x:自變量(Independent variable)
    y:應變量(Dependent variable)
    如圖是一個線性回歸的示意圖
    image

    通過x來預測y,函數:f(x) = y,例如在房價問題中,用房子大小等特征作為自變量,房子價格為應變量
    房價回歸預測案例:
    $x_1$:房子大小
    $x_2$:房子樓層
    $x_3$:綠化規模
    $x_4$:距離最近的地鐵站距離
    $x_5$:距離最近的公交站距離
    $x_6$:是否配備停車位
    ……
    y:房子價格
    根據常識來講,房價和很多因素相關,房子的大小、樓層等等都是比較明顯的影響因素,還有一些需要花功夫去尋找的特征。
    要尋找一個函數f,將x映射到y上,這就是回歸的關鍵。

    回歸的經典方法:線性回歸
    線性回歸認為y是x的一個線性的疊加

    • 方程式
      image

    向量形式:
    image

    • 參數含義
      image

    圖中y軸上的截距為,回歸曲線的斜率代表橫坐標變量的系數,即

    • 參數優化方法:監督學習、OLS

      • 監督學習:已有一些訓練樣本(訓練集),同時知道X和y,通過這些已知的樣本學習得到回歸模型
      • OLS(Ordinary Least Squares):使得預測的y和真實的y在訓練集上誤差的平方最小

    用sklearn實現

    1.依舊使用到iris的數據集

    import pandas 
    iris = pandas.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',header=None)
    iris.columns=['SepalLengthCm','SepalWidthCm','PetalLengthCm','PetalWidthCm','Species']
    iris.sample(10)
    


    SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
    25 5.0 3.0 1.6 0.2 Iris-setosa
    28 5.2 3.4 1.4 0.2 Iris-setosa
    137 6.4 3.1 5.5 1.8 Iris-virginica
    87 6.3 2.3 4.4 1.3 Iris-versicolor
    126 6.2 2.8 4.8 1.8 Iris-virginica
    30 4.8 3.1 1.6 0.2 Iris-setosa
    86 6.7 3.1 4.7 1.5 Iris-versicolor
    96 5.7 2.9 4.2 1.3 Iris-versicolor
    84 5.4 3.0 4.5 1.5 Iris-versicolor
    94 5.6 2.7 4.2 1.3 Iris-versicolor

    2. 繪圖

    import seaborn
    %matplotlib inline
    #通過畫圖可以直觀地對數據的線性關系做一個觀察
    seaborn.regplot(x='PetalLengthCm',y='PetalWidthCm',data=iris)

    image

    3.訓練模型

    from sklearn import linear_model
    lm=linear_model.LinearRegression()
    features=['PetalLengthCm']
    X=iris[features]
    y=iris['PetalWidthCm']
    print(X.shape,y.shape)
    (150, 1) (150,)
    
    
    #放入兩個特征,X就會多一個維度
    features=['PetalLengthCm','SepalLengthCm']
    #使用X,y來訓練model
    model=lm.fit(X,y)
    print(model.intercept_,model.coef_)
    #從print的結果可以得到回歸模型的截距和系數
    -0.366514045217 [ 0.41641913]
    
    

    截距和系數正對應上圖中的直線

    4.預測數據

    #使用model來對數據進行預測,輸入X自變量的值,輸出y的預測值
    #注意多個自變量時的情況,比如:model.predict([1,2])
    
    model.predict(4)
    array([ 1.29916248])
    

    預測性能的評估

    為了評估獲得模型的性能,需要對數據集進行劃分,劃分為訓練集和測試集,在訓練集上學習獲得模型,在測試集上評估誤差

    交叉檢驗

    將數據集中的樣本等分成多份,每次取其中的一份作為測試集,剩余的數據作為訓練集,使用測試集數據評估和檢驗從訓練集學習得到的模型,即進行交叉檢驗。相對于隨機劃分,一部分的訓練集永遠劃分在測試集中,交叉檢驗是將數據劃分成若干份,每次用不同的部分作為測試集,則每份都被當做測試集和訓練集使用過。

    如下圖是將數據集劃分為五份的交叉檢驗
    image

    將數據集分為5份,分別進行5次回歸

    回歸常用的打分函數

    • $MAE=\sum \left | {y}'-y \right |/N$對應的scoring參數為’neg_mean_absolute_error’
    • $MSE=\sum ({y}'-y)^{2}$對應的scoring參數為’neg_mean_squared_error’

    得分越高,則代表模型的性能越好

    scikit learn中進行交叉檢驗

    from sklearn.model_selection import cross_val_score
    #得到5次交叉檢驗的誤差,注意這里cross_val_score()前面用了負號,得到的是每個回歸模型的平均絕對值誤差
    #用MAE舉例
    scores=-cross_val_score(lm,X,y,cv=5,scoring='neg_mean_absolute_error')
    print(scores)
    #求平均值,作為誤差結果
    import numpy as np
    print(np.mean(scores))
    [ 0.08581817  0.09533821  0.13792154  0.2074044   0.29904645]
    0.165105751004
    
    
    版權聲明:本文為weixin_34253126原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_34253126/article/details/89904825

    智能推薦

    TensorFlow2.0學習筆記——簡單的線性回歸實戰

    代碼:   代碼解析: 1.第15-16行 但是如果改成下面這樣,則會報錯: 因為tf.Variable默認整數為int32,注意Numpy默認的浮點數類型是float64,前面的x y定義為類型:dtype=np.float32 如果想和Numpy數據進行對比或者一起參與求導運算,則需要修改與numpy一致。 2.第19行 設置了優化器選用SGD優化器(SGD梯度下降算法),梯度下降的...

    CNN學習筆記:線性回歸

    CNN學習筆記:Logistic回歸 線性回歸 二分類問題   Logistic回歸是一個用于二分分類的算法,比如我們有一張圖片,判斷其是否為一張貓圖,為貓輸出1,否則輸出0。    基本術語   進行機器學習,首先要有數據,比如我們收集了一批關于西瓜的數據,例如   (色澤=青綠;根蒂=收縮;敲聲=濁響)   (色澤=烏黑;根蒂=稍蜷;敲聲=沉悶)   (色澤=淺白;根蒂=硬挺;敲聲=清脆)  ...

    機器學習筆記——線性回歸

    機器學習筆記——線性回歸 學習資源:斯坦福機器學習公開課 by Andrew Ng 0 符號說明 mm:訓練樣本個數 nn:樣本的特征個數(特征的維度),這里先取n=1n=1 hθ(x)hθ(x):假設函數,hθ(x)=θ0+θ1xhθ(x)=θ0+θ1x J(θ0,...

    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_...

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