Python 垃圾邮件的逻辑回归分类

加载垃圾邮件数据集spambase.csv(数据集基本信息:样本数: 4601,特征数量: 57, 类别:
1 为垃圾邮件,0 为非垃圾邮件),阅读并理解数据。

  1. 按以下要求处理数据集
    (1)分离出仅含特征列的部分作为 X 和仅含目标列的部分作为 Y。
    (2)将数据集拆分成训练集和测试集(70%和 30%)。
  2. 建立逻辑回归模型
    分别用 LogisticRegression 建模。
  3. 结果比对
    (1)输出测试集前 5 个样本的预测结果。
    (2)计算模型在测试集上的分类准确率(=正确分类样本数/测试集总样本数)
    (3)从测试集中找出模型不能正确预测的样本。
    (4)对参数 penalty 分别取’l1′, ‘l2’, ‘elasticnet’, ‘none’,对比它们在测试集上的预测性
    能(计算 score)。

Python 垃圾邮件的逻辑回归分类

拆分特征值和目标数据前面已经可知,预测和模型得分结果也是直接使用模型的方法,下面主要是要测试准确率和找出不能正确预测的样本,以及不同的惩罚下的模型得分,主要运用到Numpy模块和列表list的函数,代码如下:

y_train_pred = model.predict(x_train)

train_accu = np.equal(y_train,y_train_pred)
print(y_train.shape,y_train_pred.shape)

accuracy = list(train_accu).count(True)/len(list(y_train))
print("准确率为"+"%f"%float(accuracy*100)+"%")

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

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))

model2 = LogisticRegression(multi_class='ovr',penalty='l2',max_iter=10000).fit(x_train, y_train)
print("penalty='l2'"+'的得分:', model2.score(x_test, y_test))

model4 = LogisticRegression(multi_class='ovr',penalty='elasticnet',max_iter=10000,solver='saga',l1_ratio=0).fit(x_train, y_train)

print("penalty='elasticnet'"+'的得分:', model4.score(x_test, y_test))

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))

Original: https://blog.csdn.net/missionnn/article/details/121575688
Author: 可乐土豆泥
Title: Python 垃圾邮件的逻辑回归分类

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/663315/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球