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)練集和測試集(70%和 30%)。
建立邏輯回歸模型
分別用 LogisticRegression 建模。
結(jié)果比對
(1)輸出測試集前 5 個樣本的預(yù)測結(jié)果。
(2)計算模型在測試集上的分類準(zhǔn)確率(=正確分類樣本數(shù)/測試集總樣本數(shù))
(3)從測試集中找出模型不能正確預(yù)測的樣本。
(4)對參數(shù) penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對比它們在測試集上的預(yù)測性能(計算 score)。

拆分特征值和目標(biāo)數(shù)據(jù)前面已經(jīng)可知,預(yù)測和模型得分結(jié)果也是直接使用模型的方法,下面主要是要測試準(zhǔn)確率和找出不能正確預(yù)測的樣本,以及不同的懲罰下的模型得分,主要運用到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]:
#計算模型在測試集上的分類準(zhǔn)確率(=正確分類樣本數(shù)/測試集總樣本數(shù))
accuracy = list(train_accu).count(True)/len(list(y_train))
print("準(zhǔn)確率為"+"%f"%float(accuracy*100)+"%")
# In[28]:
#從測試集中找出模型不能正確預(yù)測的樣本。
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]:
#對參數(shù) penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對比它們在測試集上的預(yù)測性能(計算 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]:
#對參數(shù) penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對比它們在測試集上的預(yù)測性能(計算 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的版本問題,要是忽略,就升級更新一下版本就好了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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python獲取當(dāng)前用戶的主目錄路徑方法(推薦)
下面小編就為大家?guī)硪黄猵ython獲取當(dāng)前用戶的主目錄路徑方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法
這篇文章主要介紹了Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Python簡單實現(xiàn)子網(wǎng)掩碼轉(zhuǎn)換的方法
這篇文章主要介紹了Python簡單實現(xiàn)子網(wǎng)掩碼轉(zhuǎn)換的方法,涉及Python字符串相關(guān)操作技巧,需要的朋友可以參考下2016-04-04
使用matplotlib.pyplot繪制多個圖片和圖表實現(xiàn)方式
這篇文章主要介紹了使用matplotlib.pyplot繪制多個圖片和圖表的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
pycharm 使用tab跳出正在編輯的括號(){}{}等問題
這篇文章主要介紹了pycharm 使用tab跳出正在編輯的括號(){}{}等問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

