python機器基礎(chǔ)邏輯回歸與非監(jiān)督學(xué)習(xí)
一、邏輯回歸
1.模型的保存與加載
模型訓(xùn)練好之后,可以直接保存,需要用到j(luò)oblib庫。保存的時候是pkl格式,二進(jìn)制,通過dump方法保存。加載的時候通過load方法即可。
安裝joblib:conda install joblib
保存:joblib.dump(rf, 'test.pkl')
加載:estimator = joblib.load('模型路徑')
加載后直接將測試集代入即可進(jìn)行預(yù)測。
2.邏輯回歸原理
邏輯回歸是一種分類算法,但該分類的標(biāo)準(zhǔn),是通過h(x)輸入后,使用sigmoid函數(shù)進(jìn)行轉(zhuǎn)換,同時根據(jù)閾值,就能夠針對不同的h(x)值,輸出0-1之間的數(shù)。我們將這個0-1之間的輸出,認(rèn)為是概率。假設(shè)閾值是0.5,那么,大于0.5的我們認(rèn)為是1,否則認(rèn)為是0。邏輯回歸適用于二分類問題。
①邏輯回歸的輸入
可以看出,輸入還是線性回歸的模型,里面還是有權(quán)重w,以及特征值x,我們的目標(biāo)依舊是找出最合適的w。
②sigmoid函數(shù)
該函數(shù)圖像如下:
該函數(shù)公式如下:
z就是回歸的結(jié)果h(x),通過sigmoid函數(shù)的轉(zhuǎn)化,無論z是什么值,輸出都是在0-1之間。那么我們需要選擇最合適的權(quán)重w,使得輸出的概率及所得結(jié)果,能夠盡可能地貼近訓(xùn)練集的目標(biāo)值。因此,邏輯回歸也有一個損失函數(shù),稱為對數(shù)似然損失函數(shù)。將其最小化,便可求得目標(biāo)w。
③邏輯回歸的損失函數(shù)
損失函數(shù)在y=1和0的時候的函數(shù)圖像如下:
由上圖可看出,若真實值類別是1,則h(x)給出的輸出,越接近于1,損失函數(shù)越小,反之越大。當(dāng)y=0時同理。所以可據(jù)此,當(dāng)損失函數(shù)最小的時候,我們的目標(biāo)就找到了。
④邏輯回歸特點
邏輯回歸也是通過梯度下降進(jìn)行的求解。對于均方誤差來說,只有一個最小值,不存在局部最低點;但對于對數(shù)似然損失,可能會出現(xiàn)多個局部最小值,目前沒有一個能完全解決局部最小值問題的方法。因此,我們只能通過多次隨機初始化,以及調(diào)整學(xué)習(xí)率的方法來盡量避免。不過,即使最后的結(jié)果是局部最優(yōu)解,依舊是一個不錯的模型。
3.邏輯回歸API
sklearn.linear_model.LogisticRegression
其中penalty是正則化方式,C是懲罰力度。
4.邏輯回歸案例
①案例概述
給定的數(shù)據(jù)中,是通過多個特征,綜合判斷腫瘤是否為惡性。
②具體流程
由于算法的流程基本一致,重點都在于數(shù)據(jù)和特征的處理,因此本文中不再詳細(xì)闡述,代碼如下:
注意:
邏輯回歸的目標(biāo)值不是0和1,而是2和4,但不需要進(jìn)行處理,算法中會自動標(biāo)記為0和1
算法預(yù)測完畢后,如果想看召回率,需要注意對所分的類別給出名字,但給名字之前需要先貼標(biāo)簽。見上圖。否則方法不知道哪個是良性,哪個是惡性。貼標(biāo)簽的時候順序需對應(yīng)好。
一般情況下,哪個類別的樣本少,就按照哪個來去判定。比如惡性的少,就以“判斷屬于惡性的概率是多少”來去判斷
5.邏輯回歸總結(jié)
應(yīng)用:廣告點擊率預(yù)測、是否患病等二分類問題
優(yōu)點:適合需要得到一個分類概率的場景
缺點:當(dāng)特征空間很大時,邏輯回歸的性能不是很好 (看硬件能力)
二、非監(jiān)督學(xué)習(xí)
非監(jiān)督學(xué)習(xí)就是,不給出正確答案。也就是說數(shù)據(jù)中沒有目標(biāo)值,只有特征值。
1.k-means聚類算法原理
假設(shè)聚類的類別為3類,流程如下:
①隨機在數(shù)據(jù)中抽取三個樣本,作為類別的三個中心點
②計算剩余的點分別道三個中心點的距離,從中選出距離最近的點作為自己的標(biāo)記。形成三個族群
③分別計算這三個族群的平均值,把三個平均值與之前的三個中心點進(jìn)行比較。如果相同,結(jié)束聚類,如果不同,把三個平均值作為新的聚類中心,重復(fù)第二步。
2.k-means API
sklearn.cluster.KMeans
通常情況下,聚類是做在分類之前。先把樣本進(jìn)行聚類,對其進(jìn)行標(biāo)記,接下來有新的樣本的時候,就可以按照聚類所給的標(biāo)準(zhǔn)進(jìn)行分類。
3.聚類性能評估
①性能評估原理
簡單來說,就是類中的每一個點,與“類內(nèi)的點”的距離,以及“類外的點”的距離。距離類內(nèi)的點,越近越好。而距離類外的點,越遠(yuǎn)越好。
如果sc_i 小于0,說明a_i 的平均距離大于最近的其他簇。 聚類效果不好
如果sc_i 越大,說明a_i 的平均距離小于最近的其他簇。 聚類效果好
輪廓系數(shù)的值是介于 [-1,1] ,越趨近于1代表內(nèi)聚度和分離度都相對較優(yōu)
②性能評估API
sklearn.metrics.silhouette_score
聚類算法容易收斂到局部最優(yōu),可通過多次聚類解決。
以上就是python機器基礎(chǔ)邏輯回歸與非監(jiān)督學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于python機器學(xué)習(xí)邏輯回歸與非監(jiān)督的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Async IO在Python中進(jìn)行異步編程的步驟詳解
許多程序員都熟悉編寫順序(同步)代碼,在異步世界中,事件的發(fā)生獨立于主程序流程,異步編程范例有助于并發(fā)執(zhí)行這些任務(wù),并確保您可以克服等待時間并更有效地使用資源,本文給大家介紹了使用Async IO在Python中進(jìn)行異步編程,需要的朋友可以參考下2023-11-11Python深度學(xué)習(xí)pytorch卷積神經(jīng)網(wǎng)絡(luò)LeNet
這篇文章主要為大家講解了Python深度學(xué)習(xí)中的pytorch卷積神經(jīng)網(wǎng)絡(luò)LeNet的示例解析,有需要的朋友可以借鑒參考下希望能夠有所幫助2021-10-10利用python GDAL庫讀寫geotiff格式的遙感影像方法
今天小編就為大家分享一篇利用python GDAL庫讀寫geotiff格式的遙感影像方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python實現(xiàn)可視化CSV文件中的數(shù)據(jù)
CSV文件包含許多記錄,數(shù)據(jù)分布在各行和各列中,在這篇文章中,小編主要為大家詳細(xì)介紹了Python如何實現(xiàn)可視化CSV文件中的數(shù)據(jù),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11