Python垃圾郵件的邏輯回歸分類示例詳解
?加載垃圾郵件數(shù)據(jù)集spambase.csv(數(shù)據(jù)集基本信息:樣本數(shù): 4601,特征數(shù)量: 57, 類別:
1 為垃圾郵件,0 為非垃圾郵件),閱讀并理解數(shù)據(jù)。
按以下要求處理數(shù)據(jù)集
(1)分離出僅含特征列的部分作為 X 和僅含目標(biāo)列的部分作為 Y。
(2)將數(shù)據(jù)集拆分成訓(xùn)練集和測(cè)試集(70%和 30%)。
建立邏輯回歸模型
分別用 LogisticRegression 建模。
結(jié)果比對(duì)
(1)輸出測(cè)試集前 5 個(gè)樣本的預(yù)測(cè)結(jié)果。
(2)計(jì)算模型在測(cè)試集上的分類準(zhǔn)確率(=正確分類樣本數(shù)/測(cè)試集總樣本數(shù))
(3)從測(cè)試集中找出模型不能正確預(yù)測(cè)的樣本。
(4)對(duì)參數(shù) penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對(duì)比它們?cè)跍y(cè)試集上的預(yù)測(cè)性能(計(jì)算 score)。
拆分特征值和目標(biāo)數(shù)據(jù)前面已經(jīng)可知,預(yù)測(cè)和模型得分結(jié)果也是直接使用模型的方法,下面主要是要測(cè)試準(zhǔn)確率和找出不能正確預(yù)測(cè)的樣本,以及不同的懲罰下的模型得分,主要運(yùn)用到Numpy模塊和列表list的函數(shù),代碼如下:
y_train_pred = model.predict(x_train) # In[26]: train_accu = np.equal(y_train,y_train_pred) print(y_train.shape,y_train_pred.shape) # In[27]: #計(jì)算模型在測(cè)試集上的分類準(zhǔn)確率(=正確分類樣本數(shù)/測(cè)試集總樣本數(shù)) accuracy = list(train_accu).count(True)/len(list(y_train)) print("準(zhǔn)確率為"+"%f"%float(accuracy*100)+"%") # In[28]: #從測(cè)試集中找出模型不能正確預(yù)測(cè)的樣本。 test_accu = list(np.equal(y_pred,y_test)) i = 0 len_test = len(test_accu) False_index = [] [False_index.append(i) for i in range(0,len_test) if test_accu[i]==False] print(x_test[False_index]) # In[29]: #對(duì)參數(shù) penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對(duì)比它們?cè)跍y(cè)試集上的預(yù)測(cè)性能(計(jì)算 score)。 model2 = LogisticRegression(multi_class='ovr',penalty='l1',max_iter=10000,solver='saga').fit(x_train, y_train) print("penalty='l1'"+'的得分:', model2.score(x_test, y_test)) # In[33]: #對(duì)參數(shù) penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對(duì)比它們?cè)跍y(cè)試集上的預(yù)測(cè)性能(計(jì)算 score)。 model2 = LogisticRegression(multi_class='ovr',penalty='l2',max_iter=10000).fit(x_train, y_train) print("penalty='l2'"+'的得分:', model2.score(x_test, y_test)) # In[31]: model4 = LogisticRegression(multi_class='ovr',penalty='elasticnet',max_iter=10000,solver='saga',l1_ratio=0).fit(x_train, y_train) #模型建立產(chǎn)生一些參數(shù)的問題一般都是sklearn的版本問題,要是忽略,就升級(jí)更新一下版本就好了solver指定penalty參數(shù)的范圍 print("penalty='elasticnet'"+'的得分:', model4.score(x_test, y_test)) # In[32]: model5 = LogisticRegression(multi_class='ovr',penalty='none',max_iter=10000,solver='lbfgs').fit(x_train, y_train) print("penalty='none'"+'的得分:', model5.score(x_test, y_test))
總結(jié)
到此這篇關(guān)于Python垃圾郵件的邏輯回歸分類的文章就介紹到這了,更多相關(guān)Python垃圾郵件分類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python獲取當(dāng)前用戶的主目錄路徑方法(推薦)
下面小編就為大家?guī)硪黄猵ython獲取當(dāng)前用戶的主目錄路徑方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法
這篇文章主要介紹了Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03python實(shí)現(xiàn)隨機(jī)密碼字典生成器示例
這篇文章主要介紹了python實(shí)現(xiàn)隨機(jī)密碼字典生成器示例,需要的朋友可以參考下2014-04-04基于Python實(shí)現(xiàn)帕累托圖的示例詳解
帕累托圖是一種特殊的直方圖, 在項(xiàng)目管理知識(shí)體系中屬于質(zhì)量管理的工具。本文為大家整理了Python實(shí)現(xiàn)帕累托圖的方法,需要的可以參考一下2023-03-03Python簡單實(shí)現(xiàn)子網(wǎng)掩碼轉(zhuǎn)換的方法
這篇文章主要介紹了Python簡單實(shí)現(xiàn)子網(wǎng)掩碼轉(zhuǎn)換的方法,涉及Python字符串相關(guān)操作技巧,需要的朋友可以參考下2016-04-04基于Python實(shí)現(xiàn)倒計(jì)時(shí)工具
這篇文章主要為大家詳細(xì)介紹了基于Python實(shí)現(xiàn)倒計(jì)時(shí)工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08使用matplotlib.pyplot繪制多個(gè)圖片和圖表實(shí)現(xiàn)方式
這篇文章主要介紹了使用matplotlib.pyplot繪制多個(gè)圖片和圖表的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08pycharm 使用tab跳出正在編輯的括號(hào)(){}{}等問題
這篇文章主要介紹了pycharm 使用tab跳出正在編輯的括號(hào)(){}{}等問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02