python機器基礎邏輯回歸與非監督學習
一、邏輯回歸
1.模型的保存與加載
模型訓練好之後,可以直接保存,需要用到joblib庫。保存的時候是pkl格式,二進制,通過dump方法保存。加載的時候通過load方法即可。
安裝joblib:conda install joblib
保存:joblib.dump(rf, ‘test.pkl’)
加載:estimator = joblib.load(‘模型路徑’)
加載後直接將測試集代入即可進行預測。
2.邏輯回歸原理
邏輯回歸是一種分類算法,但該分類的標準,是通過h(x)輸入後,使用sigmoid函數進行轉換,同時根據閾值,就能夠針對不同的h(x)值,輸出0-1之間的數。我們將這個0-1之間的輸出,認為是概率。假設閾值是0.5,那麼,大於0.5的我們認為是1,否則認為是0。邏輯回歸適用於二分類問題。
①邏輯回歸的輸入
可以看出,輸入還是線性回歸的模型,裡面還是有權重w,以及特征值x,我們的目標依舊是找出最合適的w。
②sigmoid函數
該函數圖像如下:
該函數公式如下:
z就是回歸的結果h(x),通過sigmoid函數的轉化,無論z是什麼值,輸出都是在0-1之間。那麼我們需要選擇最合適的權重w,使得輸出的概率及所得結果,能夠盡可能地貼近訓練集的目標值。因此,邏輯回歸也有一個損失函數,稱為對數似然損失函數。將其最小化,便可求得目標w。
③邏輯回歸的損失函數
損失函數在y=1和0的時候的函數圖像如下:
由上圖可看出,若真實值類別是1,則h(x)給出的輸出,越接近於1,損失函數越小,反之越大。當y=0時同理。所以可據此,當損失函數最小的時候,我們的目標就找到瞭。
④邏輯回歸特點
邏輯回歸也是通過梯度下降進行的求解。對於均方誤差來說,隻有一個最小值,不存在局部最低點;但對於對數似然損失,可能會出現多個局部最小值,目前沒有一個能完全解決局部最小值問題的方法。因此,我們隻能通過多次隨機初始化,以及調整學習率的方法來盡量避免。不過,即使最後的結果是局部最優解,依舊是一個不錯的模型。
3.邏輯回歸API
sklearn.linear_model.LogisticRegression
其中penalty是正則化方式,C是懲罰力度。
4.邏輯回歸案例
①案例概述
給定的數據中,是通過多個特征,綜合判斷腫瘤是否為惡性。
②具體流程
由於算法的流程基本一致,重點都在於數據和特征的處理,因此本文中不再詳細闡述,代碼如下:
註意:
邏輯回歸的目標值不是0和1,而是2和4,但不需要進行處理,算法中會自動標記為0和1
算法預測完畢後,如果想看召回率,需要註意對所分的類別給出名字,但給名字之前需要先貼標簽。見上圖。否則方法不知道哪個是良性,哪個是惡性。貼標簽的時候順序需對應好。
一般情況下,哪個類別的樣本少,就按照哪個來去判定。比如惡性的少,就以“判斷屬於惡性的概率是多少”來去判斷
5.邏輯回歸總結
應用:廣告點擊率預測、是否患病等二分類問題
優點:適合需要得到一個分類概率的場景
缺點:當特征空間很大時,邏輯回歸的性能不是很好 (看硬件能力)
二、非監督學習
非監督學習就是,不給出正確答案。也就是說數據中沒有目標值,隻有特征值。
1.k-means聚類算法原理
假設聚類的類別為3類,流程如下:
①隨機在數據中抽取三個樣本,作為類別的三個中心點
②計算剩餘的點分別道三個中心點的距離,從中選出距離最近的點作為自己的標記。形成三個族群
③分別計算這三個族群的平均值,把三個平均值與之前的三個中心點進行比較。如果相同,結束聚類,如果不同,把三個平均值作為新的聚類中心,重復第二步。
2.k-means API
sklearn.cluster.KMeans
通常情況下,聚類是做在分類之前。先把樣本進行聚類,對其進行標記,接下來有新的樣本的時候,就可以按照聚類所給的標準進行分類。
3.聚類性能評估
①性能評估原理
簡單來說,就是類中的每一個點,與“類內的點”的距離,以及“類外的點”的距離。距離類內的點,越近越好。而距離類外的點,越遠越好。
如果sc_i 小於0,說明a_i 的平均距離大於最近的其他簇。 聚類效果不好
如果sc_i 越大,說明a_i 的平均距離小於最近的其他簇。 聚類效果好
輪廓系數的值是介於 [-1,1] ,越趨近於1代表內聚度和分離度都相對較優
②性能評估API
sklearn.metrics.silhouette_score
聚類算法容易收斂到局部最優,可通過多次聚類解決。
以上就是python機器基礎邏輯回歸與非監督學習的詳細內容,更多關於python機器學習邏輯回歸與非監督的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- 分析總結Python數據化運營KMeans聚類
- Python垃圾郵件的邏輯回歸分類示例詳解
- Python sklearn中的K-Means聚類使用方法淺析
- Python機器學習工具scikit-learn的使用筆記
- Python實現DBSCAN聚類算法並樣例測試