机器学习:基于逻辑回归对超市销售活动预测分析

news2025/1/18 3:20:05

在这里插入图片描述

系列文章目录

作者:i阿极

作者简介:Python领域新星作者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


订阅专栏案例:机器学习
机器学习:基于逻辑回归对某银行客户违约预测分析
机器学习:学习k-近邻(KNN)模型建立、使用和评价
机器学习:基于支持向量机(SVM)进行人脸识别预测
决策树算法分析天气、周末和促销活动对销量的影响
机器学习:线性回归分析女性身高与体重之间的关系
机器学习:基于主成分分析(PCA)对数据降维
机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
机器学习:学习KMeans算法,了解模型创建、使用模型及模型评价
机器学习:基于神经网络对用户评论情感分析预测
机器学习:朴素贝叶斯模型算法原理(含实战案例)
机器学习:逻辑回归模型算法原理(附案例实战)
机器学习:基于逻辑回归对优惠券使用情况预测分析

文章目录

  • 系列文章目录
  • 1、实验背景
  • 2、实验数据说明
  • 3、实验环境
  • 4、实验内容
  • 5、实验步骤
    • 5.1导入数据
    • 5.2数据探索
    • 5.3处理非数值型变量
    • 5.4构造模型


1、实验背景

一家超级市场正在计划年终促销。他们想推出一个新的优惠——黄金会员资格,所有购买的产品都有20%的折扣,只需499美元,其他日子里是999美元。该优惠政策将只对现有客户有效,目前他们正计划通过电话进行宣传。
管理层认为,降低活动成本的最好方法是建立一个预测模型,首先将可能购买该优惠的客户进行分类。

2、实验数据说明

数据信息是在去年的活动中收集的,以下为数据描述:

字段说明
Id每个客户的独特ID
Year_Birth客户的年龄
Education顾客的教育水平
Marital_Status客户的婚姻状况
Income客户的家庭年收入
Kidhome客户家庭中小孩的数量
Teenhome客户家庭中的青少年人数
Dt_Customer客户在公司注册的日期
Recency自上次购买以来的天数
MntWines在过去的两年中,购买葡萄酒产品的金额
MntFruits在过去的2年里,购买水果产品的消费金额
MntMeatProducts在过去的两年中,花在肉类产品上的金额
MntFishProducts在过去的两年中,花在鱼类产品上的金额
MntSweetProducts在过去两年中,花在甜食产品上的金额
MntGoldProds在过去的两年中,购买黄金产品的消费金额
NumDealsPurchases使用折扣购买的数量
NumWebPurchases通过公司网站购买的数量
NumCatalogPurchases使用目录购买的数量(购买货物通过邮件发送)。
NumStorePurchases直接在商店购买的数量
NumWebVisitsMonth上个月访问公司网站的次数
Response目标变量 - 如果客户在上一次活动中接受了报价,则为1,否则为0
Complain如果客户在过去两年中投诉,则为1

3、实验环境

Python 3.9

Anaconda

Jupyter Notebook

4、实验内容

使用逻辑回归对超市销售活动预测分析

5、实验步骤

5.1导入数据

import pandas as pd
import numpy as np
data = pd.read_csv("/home/mw/superstore_data.csv")
data.head()

在这里插入图片描述

5.2数据探索

查看数据数量

data.shape

在这里插入图片描述

有2240行,22个特征值

查看基本信息

data.info()

在这里插入图片描述

发现Income列有缺失值,接下来需要对缺失值进行处理

观察Income列缺失的行

income_missing = data[data.Income.isnull()]
income_missing

在这里插入图片描述

从他们的Year_Birth中发现,很多都是1960年之前的人,很有可能退休了(2023-65=1958)

before = income_missing[income_missing.Year_Birth < 1961]
after = income_missing[income_missing.Year_Birth > 1961]
import matplotlib.pyplot as plt
plt.bar(['before 1961','after 1961'],[len(before),len(after)])
plt.show()

在这里插入图片描述

对于可能退休的人(小于1961)我们用0填充,其他的用平均值

data.loc[(data['Year_Birth'] < 1961) & (data['Income'].isnull())] =data.loc[(data['Year_Birth'] < 1961) & (data['Income'].isnull())].fillna(0)
data.Income = data.Income.fillna(data.Income.mean())
data.isnull().sum()

在这里插入图片描述

对于可能退休的人(小于1961)我们用0填充,其他的用平均值,已经没有缺失值。

5.3处理非数值型变量

查看类型为object的列

non_num_cols = [cols for cols in data.columns if data[cols].dtype == 'object']
non_num_cols

在这里插入图片描述

首先我们将Dt_Customer转化为日期格式

data['Dt_Customer'] = pd.to_datetime(data['Dt_Customer'])

处理类别变量,先来看看有几种类别

data.Education.value_counts()

在这里插入图片描述

data.Marital_Status.value_counts()

在这里插入图片描述

因为alone、YOLO、Abusurd样本数很少,所以本次分析将 alone、YOLO、Abusurd 统一归为 Single。

data.Marital_Status = data.Marital_Status.replace(['Alone','YOLO','Absurd'],'Single')
data.Marital_Status.value_counts()

在这里插入图片描述


Marital_Status = pd.get_dummies(data.Marital_Status,prefix='Marital_Status')
data = data.drop('Marital_Status',axis=1).join(Marital_Status)

同理应用于教育状况

Education = pd.get_dummies(data.Education,prefix='Education')
data = data.drop('Education',axis=1).join(Education)
data

在这里插入图片描述

再来看看处理之后的特征值

data.info()

在这里插入图片描述

5.4构造模型

划分训练集和测试集

from sklearn.model_selection import train_test_split
y = data.Response  #目标变量
X = data.drop('Response',axis=1)
train_x,val_x,train_y,val_y = train_test_split(X,y,train_size=0.8,test_size=0.2,random_state=0)

用统计的方法看看相关性

cor = data.corr()
features = cor[(cor['Response'] < -0.1) | (cor['Response'] > 0.1)] .index.drop('Response')

模型搭建

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr.fit(train_x[features],train_y)

验证

prey = lr.predict(val_x[features])
from sklearn.metrics import accuracy_score
accuracy_score(val_y,prey)

在这里插入图片描述
开始预测

predictions = lr.predict(data[features])
results = pd.DataFrame(data={'Id':data.Id,'Response':predictions})
results[:15]

在这里插入图片描述


📢文章下方有交流学习区!一起学习进步!💪💪💪
📢创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linxu学习之进程

文章目录进程程序和进程产生进程销毁进程多进程高并发设计孤儿僵尸守护进程孤儿进程&#xff1a;守护进程(重点)僵尸进程&#xff1a;进程 程序和进程 操作系统可以运行多个程序&#xff0c;那他是如何运行的&#xff1f;实际上&#xff0c;CPU的执行是很快的&#xff0c;而待…

《随便测测》WEB接口测试平台

编写用例的船新版本&#xff0c;从未有过的顺滑体验背景在保证用例运行稳定、高效、准确的前提下以降低测试人员编写用例的时间为目的&#xff0c;减少编写用例的复杂度&#xff0c;达到提升效率的目的。解决问题因被测系统业务流程长&#xff0c;接口多&#xff08;多的一个场…

【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

文章目录1. keytool VS openssl2. X.509 VS PKCS2.1 PKCS2.2 X.5092.2.1 证书编码格式2.2.1.1 DER 证书编码格式二进制2.2.1.2 文本格式 pem2.2.2 文件后缀名3. 常见Web服务软件及证书格式参考相关文章&#xff1a;//-----------Java SSL begin----------------------【ssl认证…

【云原生】k8s集群命令行工具kubectl之集群管理命令

kubectl集群管理命令详解一、准备工作1.1、Replication Controller1.2、Deployment1.3、DaemonSet1.4、查看创建的svc和pod1.5、kubectl 命令自动补全设置二、集群管理命令2.1、top2.2、cordon2.3、uncordon2.4、drain2.5、taint2.5.1、污点设置。2.5.2、容忍度使用一、准备工作…

Scala之函数式编程

目录 函数和方法的区别&#xff1a; 参数默认值&#xff1a; 函数至简原则---能省则省&#xff1a; 至简原则细节 匿名函数的化简&#xff1a; 匿名函数至简原则&#xff1a; 高阶函数&#xff1a; 高阶函数的三种用法&#xff1a; &#xff08;1&#xff09;函数可以作…

【K8S系列】深入解析Pod对象(二)

目录 序言 1.Volume 简单介绍 2 Projected Volume 介绍 2.1 Secret 2.1.1 yaml讲解 2.1.2 创建Pod 2.2 Downward API 2.2.1 yaml示例 2.2.2 Downward API 支持字段 3 投票 序言 任何一件事情&#xff0c;只要坚持六个月以上&#xff0c;你都可以看到质的飞跃。 在…

SqlServer实用系统视图,你了解多少?

SqlServer实用系统视图&#xff0c;你了解多少&#xff1f;前言master..spt_valuessysdatabasessysprocesses一套组合拳sysobjectssys.all_objectssyscolumnssystypessyscommentssysindexes结束语前言 在使用任何数据库软件的时候&#xff0c;该软件都会提供一些可能不是那么公…

小规模容器编排使用Docker Swarm不香么,用个锤子的kubernetes

文章目录一、Docker Swarm是什么&#xff1f;二、Swarmkit和Swarm Mode是什么&#xff1f;三、Docker Swarm的核心设计四、Docker Swarm安装部署4.1、初始化Swarm节点14.2、新节点加入Swarm集群4.3、使用swarm部署服务4.4、swarm集群管理一、Docker Swarm是什么&#xff1f; D…

“QT 快速上手指南“ 之 计算器(二)组件,坐标,窗口

文章目录前言一、QT 基本组件用法介绍&#xff1a;1. QLabel &#xff1a;2. QPushButton :3. QLineEdit:二、坐标系统三、窗口部件的大小设置1. setSize( ) 函数&#xff1a;2. resize( )函数&#xff1a;3. setFixedSize( )函数:4. setFixedWidth( ) 和 setFixedHeight( )函数…

标准化归一化方法

一、经典机器学习的归一化算法 分别是0-1标准化&#xff08;Max-Min Normalization&#xff09;和Z-Score标准化。 1.1 0-1标准化方法 每一列中的元素减去当前列的最小值&#xff0c;再除以该列的极差。 不过在深度学习领域&#xff0c;我们更希望输入模型的数据是Zero-Ce…

使用Serv-U搭建FTP服务器并公网访问【内网穿透】

文章目录1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置4. 公网访问测试5. 结语1. 前言 科技日益发展的今天&#xff0c;移动电子设备似乎成了我们生活的主角&#xff0c;智能手机…

这些IT行业趋势,将改变2023

上一周&#xff0c;你被"AI"刷屏了吗&#xff1f; 打开任何一家科技媒体&#xff0c;人工智能都是不变的热门话题。周初大家还在用ChatGPT写论文、查资料、写代码&#xff0c;到周末的时候大家已经开始用GPT-4图像识别来做饭、Microsoft 365 Copilot 来写PPT了。 GP…

【周末闲谈】AI的旅途

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录系列目录前言AIAI的开端第一个AI程序AI的寒冬关于AI的思考末尾前言…

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台

憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台学习前言什么是HRNetV2模型代码下载HRNetV2实现思路一、预测部分1、主干网络介绍a、Section-1b、Section-2c、Section-3d、Section-42、特征整合部分3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS…

【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)

导语 滴一一学生卡&#x1f64c; 结伴上车的学生仔子们 用笑声打破车厢的沉默 大人眼里的晚高峰 是给放学后快乐&#x1f600;时光的加时 下车的学生匆匆起身带起 一阵熟悉的栀子香于&#x1f493; 是关于校园的记忆 开始零零散散地闪现 放学后集合的秘密基地/跟着城…

Half-UNet:用于医学图像分割的简化U-Net架构

Half-UNet简化了编码器和解码器&#xff0c;还使用了Ghost模块(GhostNet)。并重新设计的体系结构&#xff0c;把通道数进行统一。 论文动机 编码器的不同类型的架构图&#xff0c;编码器(A-C)的结构分别来源于U-Net的编码器、解码器和全的Unet结构。 下面是上图的一些结果指标…

4.2学习周报

文章目录前言文献阅读摘要介绍时间序列预测目前存在的问题时间序列预测方法分类未来方向时间序列预测总结前言 本周阅读文献《Forecast Methods for Time Series Data: A Survey》&#xff0c;本文主要对目前时间序列数据建模方法进行分类&#xff0c;主要分为了三类&#xff…

Linux->文件系统磁盘文件管理

目录 1 磁盘结构 2 逻辑抽象管理磁盘 2.1 逻辑抽象 2.2 管理磁盘 2.3 补充知识 3 软硬连接 1 磁盘结构 本篇的学习需要建立在大家在脑海中有一副磁盘的结构才能进行下去&#xff0c;所以我会以图解的方式为大家简单讲解一下&#xff0c;注&#xff1a;博主对这一部分并不是…

深度学习实战——卷积神经网络/CNN实践(LeNet、Resnet)

忆如完整项目/代码详见github&#xff1a;https://github.com/yiru1225&#xff08;转载标明出处 勿白嫖 star for projects thanks&#xff09; 系列文章目录 本系列博客重点在深度学习相关实践&#xff08;有问题欢迎在评论区讨论指出&#xff0c;或直接私信联系我&#xf…

详细介绍别人电脑访问到自己电脑运行的项目

文章目录 让别人远程访问你的代码网站项目或临时演示你的项目给客户的方式详解 引言一、创建一个你想要别人访问的项目二、明确你想要将这个网站或者项目存放的地方 终端分类服务器设备WEB服务器三、部署我们的网页 本地部署流程进入浏览器输入网址访问获取本机的IP地址&#…