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

在这里插入图片描述

拆分特征值和目标数据前面已经可知,预测和模型得分结果也是直接使用模型的方法,下面主要是要测试准确率和找出不能正确预测的样本,以及不同的惩罚下的模型得分,主要运用到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))
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
逻辑回归是一种二分类模型,它通过将输入特征与其对应的权重进行加权求和,并通过一个逻辑函数(如sigmoid函数)来预测输入样本的概率分布。Python中有很多常用的机器学习包可以实现逻辑回归,如Scikit-learn和Statsmodels。 1. Scikit-learn包中的逻辑回归模型是非常常用和简单的。可以使用LinearRegression类来实现逻辑回归。首先,可以使用fit方法将训练数据拟合到模型中,然后使用predict方法来预测新的样本。此外,Scikit-learn还提供了一些评估指标来评估模型的性能,如准确率、精确率、召回率等。 2. Statsmodels包中的逻辑回归模型也是很常用的。可以使用sm.Logit函数来创建一个逻辑回归模型对象,然后使用fit方法拟合数据,并使用predict方法来进行预测。Statsmodels还可以输出拟合结果的摘要统计信息,以及模型的显著性检验等。 无论选择哪个包,逻辑回归模型的使用步骤主要包括数据预处理、模型拟合和模型评估。在数据预处理阶段,需要对数据进行特征选择、缺失值处理和数据标准化等操作。在模型拟合阶段,需要选择合适的参数和超参数,并将训练数据拟合到模型中。在模型评估阶段,可以使用交叉验证或留出法来评估模型的性能,并选择最佳模型。 总的来说,逻辑回归是一种简单而有效的二分类模型,在Python中可以使用Scikit-learn和Statsmodels等常用包来实现。正确地使用逻辑回归模型可以帮助我们解决许多实际问题,如垃圾邮件过滤、信用评分等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值