机器学习:基于逻辑回归对优惠券使用情况预测分析
创始人
2025-05-30 04:33:51
0

在这里插入图片描述

机器学习:基于逻辑回归对优惠券使用情况预测分析

作者:i阿极

作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页

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

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


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

文章目录

  • 机器学习:基于逻辑回归对优惠券使用情况预测分析
  • 1、实验目的
  • 2、实验原理
  • 3、实验环境
  • 4、数据预处理
  • 5、查看特征值于目标值之间的相关关系
  • 6、选取特征值
  • 7、进行编码后目标值于特征值的相关关系
  • 8、查看类别型变量的所有类别及类别分布概率情况
  • 9、模型建立
  • 10、模型评估
  • 总结


1、实验目的

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
在这个信息爆炸的时代,如何高效处理数据并利用数据推动决策显得尤为重要,这便是人们通常所说的“数据分析”。与数据分析相伴而生的机器学习(Machine Learning),有些人可能会感到陌生,然而说到战胜了众多人类围棋高手的智能机器人AlphaGo,想必大多数人都有所耳闻。AlphaGo背后的原理支撑就是机器学习,它通过模拟人类的学习行为,不停地分析海量的围棋数据,发现数据背后的规律,从而在已有条件下做出最为理性的决断,这个过程充满了机器美学。

2、实验原理

逻辑回归模型虽然名字中有回归两字,其本质却是分类模型。

分类模型与回归模型的区别在于其预测的变量不是连续的,而是离散的一些类别,以最常见的二分类模型为例,分类模型可以预测一个人是否会违约、客户是否会流失、肿瘤是属于良性肿瘤还是恶性肿瘤等

逻辑回归模型的算法原理中同样涉及了之前线性回归模型中学习到的线性回归方程:
在这里插入图片描述

上面这个方程是预测连续变量的,其取值范围属为负无穷到正无穷,而逻辑回归模型是用来预测类别的,比如它预测某物品是属于A类还是B类,它本质预测的是属于A类或者B类的概率,而概率的取值范围是0-1,因此我们不能直接用线性回归方程来预测概率。

需要到用到下图所示的Sigmoid函数,该函数可以将取值为(-∞, +∞)的数转换到(0,1)之间,例如倘若y=3,那个通过Sigmoid函数转换后,f(y)就变成了1/(1+e^-3)=0.95了,这就可以作为一个概率值使用了。
在这里插入图片描述

在这里插入图片描述

可以通过如下代码绘制Sigmoid函数:

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(-6, 6)  
y = 1.0 / (1.0 + np.exp(-x))  plt.plot(x,y) 
plt.show()  

通过linspace()函数生成-6到6的等差数列,默认50个数.
Sigmoid函数计算公式,exp()函数表示指数函数

在这里插入图片描述

如果对Sigmoid函数还是感到有点困惑,则可以参考下图的一个推导过程,其中y就是之前提到的线性回归方程,其范围是(-∞, +∞),那么指数函数的范围便是(0, +∞),再做一次变换,的范围就变成(0, 1)了,然后分子分母同除以就获得了我们上面提到的Sigmoid函数了。

逻辑回归模型本质就是将线性回归模型通过Sigmoid()函数进行了一个非线性转换得到一个介于0到1之间的概率值,对于二分类问题(分类0和1)而言,其预测分类为1(或者说二分类中数值较大的分类)的概率如下图所示:
在这里插入图片描述

因为概率和为1,则分类为0(或说二分类中数值较小的那个分类)的概率为1-P:
在这里插入图片描述

3、实验环境

Python 3.9
Anaconda
Jupyter Notebook

4、数据预处理

4.1数据说明

ID记录编码
age年龄
job职业
marital婚姻状态
default花呗是否有违约
returned是否有过退货
loan是否使用花呗结账
coupon_used_in_last6_month过去六个月使用的优惠券数量
coupon_used_in_last_month过去一个月使用的优惠券数量
coupon_ind该次活动中是否有使用优惠券

4.2导入数据

data = pd.read_csv('/home/mw/L2_Week3.csv')
data.head()

在这里插入图片描述

4.3查看数据形状

data.shape

在这里插入图片描述

一共有25317行,10列数据

4.4查看数据是否为空值

data.isnull().sum()

在这里插入图片描述

4.5coupon_ind为要预测的目标值,查看目标值的分布情况

data['coupon_ind'].value_counts(1)

在这里插入图片描述

5、查看特征值于目标值之间的相关关系

sns.heatmap(data.corr()[['coupon_ind']])

在这里插入图片描述

6、选取特征值

6.1选取特征值

X = data.iloc[:,0:9]
X.head()

在这里插入图片描述
6.2将类别型变量进行哑变量处理

marital = pd.get_dummies(X['marital'])
job = pd.get_dummies(X['job'])
default = pd.get_dummies(X['default'])
returned = pd.get_dummies(X['returned'])
loan = pd.get_dummies(X['loan'])

6.3将处理好的哑变量于原来的数据按列连接

XX = pd.concat([X,job,marital,default,returned,loan],axis=1)

7、进行编码后目标值于特征值的相关关系

XXX = pd.concat([XX,data['coupon_ind']],axis=1)
sns.heatmap(XXX.corr()[['coupon_ind']])

在这里插入图片描述

8、查看类别型变量的所有类别及类别分布概率情况

X['job'].unique()

在这里插入图片描述

X['marital'].unique()

在这里插入图片描述

X['default'].unique()

在这里插入图片描述

X['returned'].unique()

在这里插入图片描述

X['loan'].unique()

在这里插入图片描述
将未进行独热编码的特征删除

x = [2,3,4,5,6]
XX.drop(XX.columns[x], axis=1, inplace=True)

9、模型建立

9.1划分训练集和测试集

XX_train,XX_test,Y_train,Y_test = train_test_split(XX,data['coupon_ind'],train_size=0.75)

9.2训练逻辑回归模型,这里由于目标值样本不均衡,采用加权的方式建立模型

model = LogisticRegression(C=1e4,random_state=100,class_weight='balanced')
model.fit(XX_train, Y_train)

9.3查看训练集的概率

prob = model.predict_proba(XX_train)
pd.DataFrame(prob).apply(lambda x:round(x,4))

在这里插入图片描述

10、模型评估

10.1查看预测结果的准确率、召回率、f1-score

pred = model.predict(XX_test)
print(classification_report(Y_test,pred,labels=[1,0],target_names=['是','否']))

在这里插入图片描述
10.2混淆矩阵及可视化

confusion = confusion_matrix(Y_test,pred)
confusion

在这里插入图片描述

plt.matshow(confusion,cmap=plt.cm.Blues, alpha=0.8)
plt.title('混淆矩阵')
plt.colorbar() 
plt.ylabel('预测')
plt.xlabel('实际')
plt.show()

在这里插入图片描述
10.3计算ROC曲线AUC值并可视化

from sklearn.metrics import roc_curve,auc
fpr,tpr,threshold = roc_curve(Y_test,pred)
roc_auc = auc(fpr,tpr)
print('ROC曲线AUC值:',roc_auc)

在这里插入图片描述

plt.figure(figsize=(6, 5))
# 绘制ROC曲线。
plt.plot(fpr, tpr, label="ROC")
# 绘制(0, 0)与(1, 1)两个点的连线,该曲线(直线)为随机猜测的效果。
plt.plot([0,1], [0,1], lw=2, ls="--", label="随机猜测")
# 绘制(0, 0), (0, 1), (1, 1)三点的连线(两条线),这两条线构成完美的roc曲线(auc的值为1)。
plt.plot([0, 0, 1], [0, 1, 1], lw=2, ls="-.", label="完美预测")
plt.xlim(-0.01, 1.02)
plt.ylim(-0.01, 1.02)
plt.xticks(np.arange(0, 1.1, 0.1))
plt.yticks(np.arange(0, 1.1, 0.1))
plt.xlabel('False Positive Rate(FPR)', fontsize=13)
plt.ylabel('True Positive Rate(TPR)', fontsize=13)
plt.grid()
plt.title(f"ROC曲线-AUC值为{auc(fpr, tpr):.5f}", fontsize=14)
plt.legend()
plt.show()

在这里插入图片描述


总结

分类模型与回归模型的区别在于其预测的变量不是连续的,而是离散的一些类别,例如,最常见的二分类模型可以预测一个人是否会违约、客户是否会流失、肿瘤是良性还是恶性等。本章要学习的逻辑回归模型虽然名字中有“回归”二字,但其在本质上却是分类模型。

📢主页:博主个人首页
📢文章下方有交流学习区!一起学习进步!💪💪💪
📢创作不易,你的支持和鼓励是我创作的动力❗❗❗

相关内容

热门资讯

2025年LNG船拆解创纪录,... 2025年,LNG运输船拆解市场迎来爆发式增长,待拆解船成交量创下纪录——这凸显出在现货费率低迷的背...
中国押注电力无限的未来 文|小卢鱼 编辑|杨旭然 中国第99家央企中国雅江集团横空出世,序列号22,位于中国长江三峡集团有限...
多地消协发布上半年消费者投诉情... 7月以来,多地消协陆续发布了2025年上半年消费者投诉情况,从受理情况来看,消费欺诈、虚假宣传、预付...
7.28纯碱日评:纯碱市场交投... 纯碱市场分析 今日国内纯碱市场整体呈现稳中震荡走势,价格跌多涨少。截至目前,华北地区轻质纯碱价格在1...
国家税务总局:我国税收的调节分... 7月28日,国务院新闻办公室举行高质量完成“十四五”规划系列主题新闻发布会,介绍“十四五”时期税收改...
7.29黄金首现四连阴 交易有两个悲剧,一是万念俱灰,另一则是踌躇满志,美丽属于自信者,从容属于有备者,单边属于布局者,这本...
“吃药”行情再爆发,药ETF上... 7月29日早盘,A股“吃药”行情再爆发,制药、医疗联袂拉涨。 国内首只跟踪制药指数的药ETF(562...
上海谊众:7月28日融券卖出2... 证券之星消息,7月28日,上海谊众(688091)融资买入1424.3万元,融资偿还9642.78万...
凌晨重磅,又创新高! 【导读】标普500指数和纳斯达克指数双双创新高,英伟达市值突破4.3万亿美元 见习记者 储是 美东时...
贬值!人民币中间价单日调降48... 北京商报讯(记者 廖蒙)7月28日,中国人民银行授权中国外汇交易中心公布,当日银行间外汇市场人民币汇...
ETF盘中资讯|“吃药”行情再... 7月29日早盘,A股“吃药”行情再爆发,制药、医疗联袂拉涨。 国内首只跟踪制药指数的药ETF(562...
拓山重工连续5涨停后现&quo... 7月29日,拓山重工股价出现剧烈波动。该股以涨停价开盘,延续此前连续涨停态势。开盘后不久,股价突然出...
雷军:只有懂车、爱车,才能造好... 近日,在小米赛道体验日上,微博认证为小米公司新媒体总监的“神得强Steven”发微博称,参加小米赛道...
豪掷95亿!歌尔股份,继续加码... 文|侃见财经 伴随着苹果高增长不再,消费电子巨头们加速逃离苹果产业链已然是大势所趋。 不过,歌尔股...
智慧医疗新革命:DeepSee... 免责声明 本文引用的参考文献搜集于互联网,非原创,如有侵权请联系小编删除! 请勿将该文章用于任何商业...
A股,三大利好来袭! 多则利好消息引发市场关注! 近日,高盛将未来12个月MSCI中国指数的目标从85上调至90。同时,高...
和讯投顾王帅:沪指再创新高,不... 不要去追热点,抓好5个方向就可以了。和讯投顾王帅表示,今天的创业板又继续新高,但是对于沪指来说是反复...
三友科技:7月28日融资买入1... 证券之星消息,7月28日,三友科技(834475)融资买入116.81万元,融资偿还45.95万元,...
原创 特... 据报道,美国对韩国加征25%关税的最后期限近在眼前。与此同时,华盛顿正加紧向首尔施压,要求其将《美韩...
荣联科技跌0.75%,成交额1... 来源:新浪证券-红岸工作室 7月28日,荣联科技跌0.75%,成交额1.47亿元,换手率2.78%,...