python機(jī)器基礎(chǔ)邏輯回歸與非監(jiān)督學(xué)習(xí)
一、邏輯回歸
1.模型的保存與加載
模型訓(xùn)練好之后,可以直接保存,需要用到j(luò)oblib庫(kù)。保存的時(shí)候是pkl格式,二進(jìn)制,通過(guò)dump方法保存。加載的時(shí)候通過(guò)load方法即可。
安裝joblib:conda install joblib
保存:joblib.dump(rf, 'test.pkl')
加載:estimator = joblib.load('模型路徑')
加載后直接將測(cè)試集代入即可進(jìn)行預(yù)測(cè)。
2.邏輯回歸原理
邏輯回歸是一種分類(lèi)算法,但該分類(lèi)的標(biāo)準(zhǔn),是通過(guò)h(x)輸入后,使用sigmoid函數(shù)進(jìn)行轉(zhuǎn)換,同時(shí)根據(jù)閾值,就能夠針對(duì)不同的h(x)值,輸出0-1之間的數(shù)。我們將這個(gè)0-1之間的輸出,認(rèn)為是概率。假設(shè)閾值是0.5,那么,大于0.5的我們認(rèn)為是1,否則認(rèn)為是0。邏輯回歸適用于二分類(lèi)問(wèn)題。
①邏輯回歸的輸入

可以看出,輸入還是線(xiàn)性回歸的模型,里面還是有權(quán)重w,以及特征值x,我們的目標(biāo)依舊是找出最合適的w。
②sigmoid函數(shù)
該函數(shù)圖像如下:

該函數(shù)公式如下:

z就是回歸的結(jié)果h(x),通過(guò)sigmoid函數(shù)的轉(zhuǎn)化,無(wú)論z是什么值,輸出都是在0-1之間。那么我們需要選擇最合適的權(quán)重w,使得輸出的概率及所得結(jié)果,能夠盡可能地貼近訓(xùn)練集的目標(biāo)值。因此,邏輯回歸也有一個(gè)損失函數(shù),稱(chēng)為對(duì)數(shù)似然損失函數(shù)。將其最小化,便可求得目標(biāo)w。
③邏輯回歸的損失函數(shù)

損失函數(shù)在y=1和0的時(shí)候的函數(shù)圖像如下:


由上圖可看出,若真實(shí)值類(lèi)別是1,則h(x)給出的輸出,越接近于1,損失函數(shù)越小,反之越大。當(dāng)y=0時(shí)同理。所以可據(jù)此,當(dāng)損失函數(shù)最小的時(shí)候,我們的目標(biāo)就找到了。
④邏輯回歸特點(diǎn)
邏輯回歸也是通過(guò)梯度下降進(jìn)行的求解。對(duì)于均方誤差來(lái)說(shuō),只有一個(gè)最小值,不存在局部最低點(diǎn);但對(duì)于對(duì)數(shù)似然損失,可能會(huì)出現(xiàn)多個(gè)局部最小值,目前沒(méi)有一個(gè)能完全解決局部最小值問(wèn)題的方法。因此,我們只能通過(guò)多次隨機(jī)初始化,以及調(diào)整學(xué)習(xí)率的方法來(lái)盡量避免。不過(guò),即使最后的結(jié)果是局部最優(yōu)解,依舊是一個(gè)不錯(cuò)的模型。
3.邏輯回歸API
sklearn.linear_model.LogisticRegression

其中penalty是正則化方式,C是懲罰力度。
4.邏輯回歸案例
①案例概述
給定的數(shù)據(jù)中,是通過(guò)多個(gè)特征,綜合判斷腫瘤是否為惡性。
②具體流程
由于算法的流程基本一致,重點(diǎn)都在于數(shù)據(jù)和特征的處理,因此本文中不再詳細(xì)闡述,代碼如下:

注意:
邏輯回歸的目標(biāo)值不是0和1,而是2和4,但不需要進(jìn)行處理,算法中會(huì)自動(dòng)標(biāo)記為0和1
算法預(yù)測(cè)完畢后,如果想看召回率,需要注意對(duì)所分的類(lèi)別給出名字,但給名字之前需要先貼標(biāo)簽。見(jiàn)上圖。否則方法不知道哪個(gè)是良性,哪個(gè)是惡性。貼標(biāo)簽的時(shí)候順序需對(duì)應(yīng)好。
一般情況下,哪個(gè)類(lèi)別的樣本少,就按照哪個(gè)來(lái)去判定。比如惡性的少,就以“判斷屬于惡性的概率是多少”來(lái)去判斷
5.邏輯回歸總結(jié)
應(yīng)用:廣告點(diǎn)擊率預(yù)測(cè)、是否患病等二分類(lèi)問(wèn)題
優(yōu)點(diǎn):適合需要得到一個(gè)分類(lèi)概率的場(chǎng)景
缺點(diǎn):當(dāng)特征空間很大時(shí),邏輯回歸的性能不是很好 (看硬件能力)
二、非監(jiān)督學(xué)習(xí)
非監(jiān)督學(xué)習(xí)就是,不給出正確答案。也就是說(shuō)數(shù)據(jù)中沒(méi)有目標(biāo)值,只有特征值。
1.k-means聚類(lèi)算法原理
假設(shè)聚類(lèi)的類(lèi)別為3類(lèi),流程如下:
①隨機(jī)在數(shù)據(jù)中抽取三個(gè)樣本,作為類(lèi)別的三個(gè)中心點(diǎn)
②計(jì)算剩余的點(diǎn)分別道三個(gè)中心點(diǎn)的距離,從中選出距離最近的點(diǎn)作為自己的標(biāo)記。形成三個(gè)族群
③分別計(jì)算這三個(gè)族群的平均值,把三個(gè)平均值與之前的三個(gè)中心點(diǎn)進(jìn)行比較。如果相同,結(jié)束聚類(lèi),如果不同,把三個(gè)平均值作為新的聚類(lèi)中心,重復(fù)第二步。
2.k-means API
sklearn.cluster.KMeans

通常情況下,聚類(lèi)是做在分類(lèi)之前。先把樣本進(jìn)行聚類(lèi),對(duì)其進(jìn)行標(biāo)記,接下來(lái)有新的樣本的時(shí)候,就可以按照聚類(lèi)所給的標(biāo)準(zhǔn)進(jìn)行分類(lèi)。
3.聚類(lèi)性能評(píng)估
①性能評(píng)估原理
簡(jiǎn)單來(lái)說(shuō),就是類(lèi)中的每一個(gè)點(diǎn),與“類(lèi)內(nèi)的點(diǎn)”的距離,以及“類(lèi)外的點(diǎn)”的距離。距離類(lèi)內(nèi)的點(diǎn),越近越好。而距離類(lèi)外的點(diǎn),越遠(yuǎn)越好。

如果sc_i 小于0,說(shuō)明a_i 的平均距離大于最近的其他簇。 聚類(lèi)效果不好
如果sc_i 越大,說(shuō)明a_i 的平均距離小于最近的其他簇。 聚類(lèi)效果好
輪廓系數(shù)的值是介于 [-1,1] ,越趨近于1代表內(nèi)聚度和分離度都相對(duì)較優(yōu)
②性能評(píng)估API
sklearn.metrics.silhouette_score

聚類(lèi)算法容易收斂到局部最優(yōu),可通過(guò)多次聚類(lèi)解決。
以上就是python機(jī)器基礎(chǔ)邏輯回歸與非監(jiān)督學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于python機(jī)器學(xué)習(xí)邏輯回歸與非監(jiān)督的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python7個(gè)爬蟲(chóng)小案例詳解(附源碼)中篇
這篇文章主要介紹了Python7個(gè)爬蟲(chóng)小案例詳解(附源碼)中篇,本文章內(nèi)容詳細(xì),通過(guò)案例可以更好的理解爬蟲(chóng)的相關(guān)知識(shí),七個(gè)例子分為了三部分,本次為中篇,共有二道題,需要的朋友可以參考下2023-01-01
python實(shí)現(xiàn)簡(jiǎn)單的udp發(fā)送和接收
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單的udp發(fā)送和接收方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
使用PyQt實(shí)現(xiàn)簡(jiǎn)易文本編輯器
這篇文章主要為大家詳細(xì)介紹了如何使用PyQt5框架構(gòu)建一個(gè)簡(jiǎn)單的文本編輯器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
python分批定量讀取文件內(nèi)容,輸出到不同文件中的方法
今天小編就為大家分享一篇python分批定量讀取文件內(nèi)容,輸出到不同文件中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
PyQt5+serial模塊實(shí)現(xiàn)一個(gè)串口小工具
這篇文章主要為大家詳細(xì)介紹了如何利用PyQt5和serial模塊實(shí)現(xiàn)一個(gè)簡(jiǎn)單的串口小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-01-01
Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換
這篇文章主要介紹了Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
python在linux環(huán)境下安裝skimage的示例代碼
這篇文章主要介紹了python在linux環(huán)境下安裝skimage,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
pandas刪除某行或某列數(shù)據(jù)的實(shí)現(xiàn)示例
本文主要介紹了pandas刪除某行或某列數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08

