1. 程式人生 > >Python資料探勘課程 五.線性迴歸知識及預測糖尿病例項

Python資料探勘課程 五.線性迴歸知識及預測糖尿病例項

        希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~
        同時這篇文章是我上課的內容,所以參考了一些知識,強烈推薦大家學習斯坦福的機器學習Ng教授課程和Scikit-Learn中的內容。由於自己數學不是很好,自己也還在學習中,所以文章以程式碼和一元線性迴歸為主,數學方面的當自己學到一定的程度,才能進行深入的分享及介紹。抱歉~

一. 資料集介紹

        1.diabetes dataset資料集
        資料集參考:http://scikit-learn.org/stable/datasets/


        這是一個糖尿病的資料集,主要包括442行資料,10個屬性值,分別是:Age(年齡)、性別(Sex)、Body mass index(體質指數)、Average Blood Pressure(平均血壓)、S1~S6一年後疾病級數指標。Target為一年後患疾病的定量指標。


        輸出如下所示:

  1. # -*- coding: utf-8 -*-
  2. """ 
  3. Created on Thu Oct 27 02:37:05 2016 
  4. @author: yxz15 
  5. """
  6. from sklearn import datasets  
  7. diabetes = datasets.load_diabetes()                         #載入資料
  8. print diabetes.data                                         #資料
  9. print diabetes.target                                       #類標
  10. print u'總行數: ', len(diabetes.data), len(diabetes.target) #資料總行數
  11. print u'特徵數: ', len(diabetes.data[0])                    #每行資料集維數
  12. print u'資料型別: ', diabetes.data.shape                    
    #型別
  13. print type(diabetes.data), type(diabetes.target)            #資料集型別
  14. """ 
  15. [[ 0.03807591  0.05068012  0.06169621 ..., -0.00259226  0.01990842 
  16.   -0.01764613] 
  17.  [-0.00188202 -0.04464164 -0.05147406 ..., -0.03949338 -0.06832974 
  18.   -0.09220405] 
  19.   ... 
  20.  [-0.04547248 -0.04464164 -0.0730303  ..., -0.03949338 -0.00421986 
  21.    0.00306441]] 
  22. [ 151.   75.  141.  206.  135.   97.  138.   63.  110.  310.  101. 
  23.   ... 
  24. 64.   48.  178.  104.  132.  220.   57.] 
  25. 總行數:  442 442 
  26. 特徵數:  10 
  27. 資料型別:  (442L, 10L) 
  28. <type 'numpy.ndarray'> <type 'numpy.ndarray'> 
  29. """

        2.sklearn常見資料集
常見的sklearn資料集包括,強烈推薦下面這篇文章:
sklearn包含一些不許要下載的toy資料集,見下表,包括波士頓房屋資料集、鳶尾花資料集、糖尿病資料集、手寫字資料集和健身資料集等。

二. 什麼是線性迴歸

        1.機器學習簡述
        機器學習(Machine Learning )包括:
        a.監督學習(Supervised Learning):迴歸(Regression)、分類(Classification)
        例:訓練過程中知道結果。小孩給水果分類,給他蘋果告訴他是蘋果,反覆訓練學習。在給他說過,問他是什麼?他回答準確,如果是桃子,他不能回答為蘋果。

        b.無監督學習(Unsupervised Learning):聚類(Clustering)
        例:訓練過程中不知道結果。給小孩一堆水果,如蘋果、橘子、桃子,小孩開始不知道需要分類的水果是什麼,讓小孩對水果進行分類。分類完成後,給他一個蘋果,小孩應該把它放到蘋果堆中。

        c.增強學習(Reinforcement Learning)
        例:ML過程中,對行為做出評價,評價有正面的和負面兩種。通過學習評價,程式應做出更好評價的行為。

        d.推薦系統(Recommender System)

        <1>模型表示(Model Representation)
        房屋價格預測問題,有監督學習問題。每個樣本的輸入都有正確輸出或答案,它也是一個迴歸問題,預測一個真實值的輸出。
        訓練集表示如下:


        對於房價預測問題,訊息過程如下所示:

        其中x代表房屋的大小,y代表預測的價格,h(hypothesis)將輸入變數對映到輸出變數y中,如何表示h呢?可以表示如下公式,簡寫為h(x),即帶一個變數的線性迴歸或單變數線性迴歸問題。


       <2>成本函式(Cost Function)
        對於上面的公式函式h(x),如何求theta0和theta1引數呢? 
        構想: 對於訓練集(x, y),選取引數01使得hθ(x)儘可能的接近y。如何做呢?一種做法就是求訓練集的平方誤差函式(squared error function)。
        Cost Function可表示為:
        並且選取合適的引數使其最小化,數學表示如下:
        總的來說,線性迴歸主要包括一下四個部分,分別是Hypothesis、Parameters、Cost Function、Goal。右圖位簡化版,theta0賦值為0。   

        然後令θ1分別取1、0.5、-0.5等值,同步對比hθ(x)J(θ0,θ1)在二維座標系中的變化情況,具體可參考原PPT中的對比圖,很直觀。

        <3>梯度下降(Gradient descent)

        應用的場景之一最小值問題:

        對於一些函式,例如J(θ0,θ1)

        目標:  minθ0,θ1J(θ0,θ1)

        方法的框架:

        a. 給θ0θ1一個初始值,例如都等於0;

        b. 每次改變θ0θ1的時候都保持J(θ0,θ1)遞減,直到達到一個我們滿意的最小值;

        對於任一J(θ0,θ1) , 初始位置不同,最終達到的極小值點也不同,例如以下例子:



<1>什麼是線性迴歸?
        迴歸函式的具體解釋和定義,可檢視任何一本“概率論與數理統計”的書。我看的是“陳希孺”的。
        這裡我講幾點:
        1)統計迴歸分析的任務,就在於根據 x1,x2,...,xp 線性迴歸和Y的觀察值,去估計函式f,尋求變數之間近似的函式關係。
        2)我們常用的是,假定f函式的數學形式已知,其中若干個引數未知,要通過自變數和因變數的觀察值去估計未知的引數值。這叫“引數迴歸”。其中應用最廣泛的是f為線性函式的假設:

         這種情況叫做“線性迴歸”。
        3)自變數只有一個時,叫做一元線性迴歸。
                                            f(x) = b0+b1x
               自變數有多個時,叫做多元線性迴歸。  
                                            f(x1,x2,...,xp) = b0 + b1x1 + b2x2 + ... + bpxp
        4)分類(Classification)與迴歸(Regression)都屬於監督學習,他們的區別在於:
               分類:用於預測有限的離散值,如是否得了癌症(0,1),或手寫數字的判斷,是0,1,2,3,4,5,6,7,8還是9等。分類中,預測的可能的結果是有限的,且提前給定的。
               迴歸:用於預測實數值,如給定了房子的面積,地段,和房間數,預測房子的價格。

        <2>一元線性迴歸
        假設:我們要預測房價。當前自變數(輸入特徵)是房子面積x,因變數是房價y.給定了一批訓練集資料。我們要做的是利用手上的訓練集資料,得出x與y之間的函式f關係,並用f函式來預測任意麵積x對應的房價。
        假設x與y是線性關係,則我們可以接著假設一元線性迴歸函式如下來代表y的預測值:



        我們有訓練集了,那麼問題就成了如何利用現有的訓練集來判定未知引數 (θ0,θ1)的值,使其讓h的值更接近實際值y? 訓練集指的是已知x,y值的資料集合!

        一種方法是計算它的成本函式(Cost function),即預測出來的h的值與實際值y之間的方差的大小來決定當前的(θ0,θ1)值是否是最優的!
        常用的成本函式是最小二乘法:



        <3>模型總結
        整個一元線性迴歸通過下面這張圖總結即可:




        最後,梯度下降和多元迴歸模型將繼續學習,當我學到一定程度,再進行分享。
http://www.52nlp.cn/coursera公開課筆記-斯坦福大學機器學習第四課多變數

三. LinearRegression使用方法

        LinearRegression模型在Sklearn.linear_model下,它主要是通過fit(x,y)的方法來訓練模型,其中x為資料的屬性,y為所屬型別。
        sklearn中引用迴歸模型的程式碼如下:

  1. from sklearn import linear_model       #匯入線性模型
  2. regr = linear_model.LinearRegression() #使用線性迴歸
  3. print regr  

        輸出的函式原型如下所示:

  1. LinearRegression(copy_X=True,   
  2.                  fit_intercept=True,   
  3.                  n_jobs=1,   
  4.                  normalize=False)  
        fit(x, y): 訓練。分析模型引數,填充資料集。其中x為特徵,y位標記或類屬性。
        predict(): 預測。它通過fit()算出的模型引數構成的模型,對解釋變數進行預測其類屬性。預測方法將返回預測值y_pred。

        這裡推薦"搬磚小工053"大神的文章,非常不錯,強烈推薦。
        引用他文章的例子,參考:scikit-learn : 線性迴歸,多元迴歸,多項式迴歸

  1. # -*- coding: utf-8 -*-
  2. 相關推薦

    Python資料課程 .線性迴歸知識預測糖尿病例項

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~         同時這篇文章是我上課的內容,所以參考了一些知識,強烈推薦大家學習斯坦福的機器學習Ng教

    Python資料課程.線性迴歸知識預測糖尿病例項

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~        同時這篇文章是我上課的內容,所以參考了一些知識,強烈推薦大家學習斯坦福的機器學習Ng教授課程和Sc

    python資料課程】邏輯迴歸LogisticRegression分析鳶尾花資料

    plt.scatter(X[:50,0], X[:50,1], color='red',marker='o', label='setosa') 呼叫scatter()繪製散點圖,第一個引數為第一列資料(長度),第二個引數為第二列資料(寬度),第三、四個引數為設定點的顏色為紅色,款式為圓圈,最後標

    python資料課程】十九.鳶尾花資料集視覺化、線性迴歸、決策樹花樣分析

    這是《Python資料探勘課程》系列文章,也是我這學期上課的部分內容。本文主要講述鳶尾花資料集的各種分析,包括視覺化分析、線性迴歸分析、決策樹分析等,通常一個數據集是可以用於多種分析的,希望這篇文章對大

    python資料課程】十八.線性迴歸多項式迴歸分析四個案例分享

    這是《Python資料探勘課程》系列文章,也是我這學期大資料金融學院上課的部分內容。本文主要講述和分享線性迴歸作業中,學生們做得比較好的四個案例,經過我修改後供大家學習,內容包括:    1.線性迴歸預測Pizza價格案例    2.線性迴歸分析波士頓房價案例    3.隨機

    python資料課程】十.Matplotlib呼叫imshow()函式繪製熱圖

    前面系列文章講過資料探勘的各種知識,最近在研究人類時空動力學分析和冪率定律,發現在人類興趣轉移模型中,可以通過熱圖(斑圖)來進行描述的興趣轉移,如下圖所示。下一篇文章將簡單普及人類動力學相關知識研究。這

    python資料課程】十六.邏輯迴歸LogisticRegression分析鳶尾花資料

    今天是教師節,容我先感嘆下。祝天下所有老師教師節快樂,這是自己的第二個教師節,這一年來,無限感慨,有給一個人的指導,有給十幾個人講畢設,有幾十人的實驗,有上百人的課堂,也有給上千人的Python網路直播

    Python資料課程 六.Numpy、Pandas和Matplotlib包基礎知識

            前面幾篇文章採用的案例的方法進行介紹的,這篇文章主要介紹Python常用的擴充套件包,同時結合資料探勘相關知識介紹該包具體的用法,主要介紹Numpy、Pandas和Matplotlib三個包。目錄:         一.Python常用擴充套件包  

    Python資料課程】四.決策樹DTC資料分析鳶尾資料集分析

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~一. 分類及決策樹介紹1.分類        分類其實是從特定的資料中挖掘模式,作出判斷的過程。比如Gmail郵箱

    Python資料課程 四.決策樹DTC資料分析鳶尾資料集分析

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~ 一. 分類及決策樹介紹 1.分類         分類其實是從特定的資料中挖掘模式,作

    python資料課程】十.Pandas、Matplotlib、PCA繪圖實用程式碼補充

    這篇文章主要是最近整理《資料探勘與分析》課程中的作品及課件過程中,收集了幾段比較好的程式碼供大家學習。同時,做資料分析到後面,除非是研究演算法創新的,否則越來越覺得資料非常重要,才是有價值的東西。後面的課程會慢慢講解Python應用在Hadoop和Spark中,以及netwo

    python資料課程】十二.Pandas、Matplotlib結合SQL語句對比圖分析

    一. 直方圖四圖對比        資料庫如下所示,包括URL、作者、標題、摘要、日期、閱讀量和評論數等。        執行結果如下所示,其中繪製多個圖的核心程式碼為:        p1 = plt.subplot(221)        plt.bar(ind, num

    python資料課程】十四.Scipy呼叫curve_fit實現曲線擬合

            前面系列文章講過各種知識,包括繪製曲線、散點圖、冪分佈等,而如何在在散點圖一堆點中擬合一條直線,也變得非常重要。這篇文章主要講述呼叫Scipy擴充套件包的curve_fit函式實現曲線擬

    Python資料課程】六.Numpy、Pandas和Matplotlib包基礎知識

            前面幾篇文章採用的案例的方法進行介紹的,這篇文章主要介紹Python常用的擴充套件包,同時結合資料探勘相關知識介紹該包具體的用法,主要介紹Numpy、Pandas和Matplotlib三

    Python資料課程】七.PCA降維操作subplot子圖繪製

            這篇文章主要介紹四個知識點,也是我那節課講課的內容。        1.PCA降維操作;        2.Python中Sklearn的PCA擴充套件包;        3.Matplotlib的subplot函式繪製子圖;        4.通過Kmean

    Python資料課程】八.關聯規則挖掘Apriori實現購物推薦

            這篇文章主要介紹三個知識點,也是我《資料探勘與分析》課程講課的內容。        1.關聯規則挖掘概念及實現過程;        2.Apriori演算法挖掘頻繁項集;        3.Python實現關聯規則挖掘及置信度、支援度計算。一. 關聯規則挖掘概

    Python資料課程】一.安裝Python爬蟲入門介紹

            最近因為需要給大資料金融學院的學生講解《Python資料探勘及大資料分析》的課程,所以在這裡,我將結合自己的上課內容,詳細講解每個步驟。作為助教,我更希望這門課程以實戰為主,同時按小組劃分學生,每個小組最後都提交一個基於Python的資料探勘及大資料分析相關

    python資料課程】十一.Pandas、Matplotlib結合SQL語句視覺化分析

    這是非常好的一篇文章,可以認為是我做資料分析的轉折點,為什麼呢?因為這是我做資料分析第一次引入SQL語句,然後愛不釋手;結合SQL語句返回結果進行資料分析的效果真的很好,很多大神看到可能會笑話晚輩,但是如果你是資料分析的新人,那我強烈推薦,尤其是結合網路爬蟲進行資料分析的。希

    Python資料課程】三.Kmeans聚類程式碼實現、作業優化

            這篇文章直接給出上次關於Kmeans聚類的籃球遠動員資料分析案例,同時介紹這次作業同學們完成的圖例,最後介紹Matplotlib包繪圖的優化知識。        希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行

    python資料課程】十七.社交網路Networkx庫分析人物關係(初識篇)

    這是《Python資料探勘課程》系列文章,也是我大資料金融學院上課的部分內容。本章主要講述複雜網路或社交網路基礎知識,通過Networkx擴充套件包繪製人物關係,並分析了班級學生的關係學院資訊。本篇文章為初始篇,基礎文章希望對你有所幫助,如果文章中存在錯誤或不足支援,還請海涵