[Python]數據挖掘(1)、梯度降低求解邏輯迴歸——考覈成績分類

ps:本博客內容根據唐宇迪的的機器學習經典算法  學習視頻複製總結而來

http://www.abcplus.com.cn/course/83/tasks

邏輯迴歸

問題描述:咱們將創建一個邏輯迴歸模型來預測一個學生是否被大學錄取。假設你是一個大學系的管理員,你想根據兩次考試的結果來決定每一個申請人的錄取機會。你有之前的申請人的歷史數據,你能夠用它做爲邏輯迴歸的訓練集。對於每個培訓例子,你有兩個考試的申請人的分數和錄取決定。爲了作到這一點,咱們將創建一個分類模型,根據考試成績估計入學機率。算法

數據下載:https://pan.baidu.com/s/1pNbtrjP機器學習

數據大概長這個樣函數

一、查看數據基本屬性

二、畫圖觀察

plot結構剖析

上圖來自https://www.jianshu.com/p/b4b5dd20e48a學習

三、創建分類器(求解出三個參數 θ0、θ一、θ2

設定閾值,根據閾值判斷錄取結果(此處設置爲50%,≥50%即判斷錄取)spa

要完成的模塊: 
sigmoid : 映射到機率的函數3d

    • model : 返回預測結果值code

    • cost : 根據參數計算損失視頻

    • gradient : 計算每一個參數的梯度方向blog

    • descent : 進行參數更新博客

    • accuracy: 計算精度

 

  

四、損失函數 

五、計算梯度

六、梯度降低(比較三種梯度降低方法)

 

下面這段代碼僅僅是將過程可視化

七、不一樣的中止策略

①設定迭代次數

②根據損失值中止

上面的迭代次數過少,修改閾值爲1E-6,迭代次數大概須要110000次 。會發現值再次下降

這種策略雖然準確度較高,可是迭代次數多,計算量大

③、根據梯度變化中止

設定閾值 0.05,差很少須要40 000次迭代

 

八、對比不一樣的梯度降低方法

 ①Stochastic descent  隨機梯度降低

 

至關不穩定,再來試試把學習率調小一些

速度快,效果和穩定性都差,須要很小的學習率

②Mini-batch descent 小批量梯度降低

 

標準化/歸一化

浮動仍然比較大,咱們來嘗試下對數據進行標準化 將數據按其屬性(按列進行)減去其均值,而後除以其方差。最後獲得的結果是,對每一個屬性/每列來講全部數據都彙集在0附近,方差值爲1。

 

它好多了!原始數據,只能達到達到0.61,而咱們獲得了0.38個在這裏! 因此對數據作預處理是很是重要的。

 

更多的迭代次數會使得損失降低的更多!

隨機梯度降低更快,可是咱們須要迭代的次數也須要更多,因此仍是用batch的比較合適!

九、精度

相關文章
相關標籤/搜索