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!
推薦閱讀:
- 基於numpy實現邏輯回歸
- Python機器學習工具scikit-learn的使用筆記
- python基於numpy的線性回歸
- 人工智能-Python實現多項式回歸
- Python集成學習之Blending算法詳解