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為一年後患疾病的定量指標。
輸出如下所示:
- # -*- coding: utf-8 -*-
- """
- Created on Thu Oct 27 02:37:05 2016
- @author: yxz15
- """
- from sklearn import datasets
-
diabetes = datasets.load_diabetes() #載入資料
- print diabetes.data #資料
- print diabetes.target #類標
- print u'總行數: ', len(diabetes.data), len(diabetes.target) #資料總行數
- print u'特徵數: ', len(diabetes.data[0]) #每行資料集維數
-
print u'資料型別: ', diabetes.data.shape
- print type(diabetes.data), type(diabetes.target) #資料集型別
- """
- [[ 0.03807591 0.05068012 0.06169621 ..., -0.00259226 0.01990842
- -0.01764613]
- [-0.00188202 -0.04464164 -0.05147406 ..., -0.03949338 -0.06832974
- -0.09220405]
- ...
- [-0.04547248 -0.04464164 -0.0730303 ..., -0.03949338 -0.00421986
- 0.00306441]]
- [ 151. 75. 141. 206. 135. 97. 138. 63. 110. 310. 101.
- ...
- 64. 48. 178. 104. 132. 220. 57.]
- 總行數: 442 442
- 特徵數: 10
- 資料型別: (442L, 10L)
- <type 'numpy.ndarray'> <type 'numpy.ndarray'>
- """
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)
房屋價格預測問題,有監督學習問題。每個樣本的輸入都有正確輸出或答案,它也是一個迴歸問題,預測一個真實值的輸出。
訓練集表示如下:
對於房價預測問題,訊息過程如下所示:
<2>成本函式(Cost Function)
對於上面的公式函式h(x),如何求theta0和theta1引數呢?
構想: 對於訓練集(x, y),選取引數
Cost Function可表示為:
並且選取合適的引數使其最小化,數學表示如下:
總的來說,線性迴歸主要包括一下四個部分,分別是Hypothesis、Parameters、Cost Function、Goal。右圖位簡化版,theta0賦值為0。
然後令
應用的場景之一最小值問題:
對於一些函式,例如
目標:
方法的框架:
a. 給
b. 每次改變
對於任一
<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中引用迴歸模型的程式碼如下:
- from sklearn import linear_model #匯入線性模型
- regr = linear_model.LinearRegression() #使用線性迴歸
- print regr
輸出的函式原型如下所示:
- LinearRegression(copy_X=True,
- fit_intercept=True,
- n_jobs=1,
- normalize=False)
predict(): 預測。它通過fit()算出的模型引數構成的模型,對解釋變數進行預測其類屬性。預測方法將返回預測值y_pred。
這裡推薦"搬磚小工053"大神的文章,非常不錯,強烈推薦。
引用他文章的例子,參考:scikit-learn : 線性迴歸,多元迴歸,多項式迴歸
- # -*- coding: utf-8 -*-
-
相關推薦
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擴充套件包繪製人物關係,並分析了班級學生的關係學院資訊。本篇文章為初始篇,基礎文章希望對你有所幫助,如果文章中存在錯誤或不足支援,還請海涵