Python垃圾郵件的邏輯回歸分類示例詳解

 加載垃圾郵件數據集spambase.csv(數據集基本信息:樣本數: 4601,特征數量: 57, 類別:

1 為垃圾郵件,0 為非垃圾郵件),閱讀並理解數據。

按以下要求處理數據集

(1)分離出僅含特征列的部分作為 X 和僅含目標列的部分作為 Y。

(2)將數據集拆分成訓練集和測試集(70%和 30%)。

建立邏輯回歸模型

分別用 LogisticRegression 建模。

結果比對

(1)輸出測試集前 5 個樣本的預測結果。

(2)計算模型在測試集上的分類準確率(=正確分類樣本數/測試集總樣本數)

(3)從測試集中找出模型不能正確預測的樣本。

(4)對參數 penalty 分別取‘l1′, ‘l2′, ‘elasticnet’, ‘none’,對比它們在測試集上的預測性能(計算 score)。

拆分特征值和目標數據前面已經可知,預測和模型得分結果也是直接使用模型的方法,下面主要是要測試準確率和找出不能正確預測的樣本,以及不同的懲罰下的模型得分,主要運用到Numpy模塊和列表list的函數,代碼如下:

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]:


#計算模型在測試集上的分類準確率(=正確分類樣本數/測試集總樣本數)
accuracy = list(train_accu).count(True)/len(list(y_train))
print("準確率為"+"%f"%float(accuracy*100)+"%")


# In[28]:


#從測試集中找出模型不能正確預測的樣本。
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]:


#對參數 penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對比它們在測試集上的預測性能(計算 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]:


#對參數 penalty 分別取‘l1', ‘l2', ‘elasticnet', ‘none',對比它們在測試集上的預測性能(計算 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)
#模型建立產生一些參數的問題一般都是sklearn的版本問題,要是忽略,就升級更新一下版本就好瞭solver指定penalty參數的范圍
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))

總結

到此這篇關於Python垃圾郵件的邏輯回歸分類的文章就介紹到這瞭,更多相關Python垃圾郵件分類內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: