机器学习实战19-利用机器学习模型与算法实现销售数据的归因分析与图形生成

news2024/11/27 0:18:05

大家好,我是微学AI,今天给大家介绍一下机器学习实战19-利用机器学习模型与算法实现销售数据的归因分析与图形生成。 归因分析是数据分析中的一个重要环节,它主要用于确定不同因素对特定结果(如销售额、转化率等)的贡献程度。在Python中,可以通过多种方式实现归因分析,包括使用现成的库和编写自定义函数。

文章目录

  • 一、归因分析的基本概念
    • 归因分析的方法
  • 二、归因分析的实现步骤
    • 归因分析步骤
    • Python操作
    • 代码实现
    • 归因分析结果描述
  • 三、Python中的其他归因分析库推荐

一、归因分析的基本概念

归因分析的目的是识别哪些因素对结果产生了显著影响。在市场营销领域,例如,可以通过归因分析来确定哪些广告渠道或营销活动对销售增长贡献最大。在医学研究中,可以通过归因分析来确定哪些因素对疾病发病率有显著影响。

归因分析的方法

在Python中,可以使用多种方法进行归因分析,包括:
风险比率(Risk Ratios):比较不同因素下的成功或失败的比例,以确定哪个因素的影响更大。
概率比率(Rate Ratios):类似于风险比率,但考虑了事件发生的总体概率。
机会比率(Odds Ratios):比较不同因素下事件发生的机会,通常用于替代风险比率和概率比率。
线性回归:通过构建线性模型来预测结果,并分析不同因素的系数大小来确定它们的贡献程度。
逻辑回归:适用于二分类问题,通过构建逻辑模型来预测结果,并分析不同因素的系数大小来确定它们的贡献程度。

二、归因分析的实现步骤

归因分析步骤

  1. 数据准备:首先,需要收集相关的数据,这些数据应该包括可能的因素(指标)以及结果。
  2. 指标贡献度计算:可以使用统计方法或机器学习模型来计算各个指标对结果的贡献度。例如,可以使用线性回归模型中的系数大小来表示每个指标的贡献度。
  3. 异常波动检测:可以通过设置阈值、使用统计测试(如假设检验)或机器学习模型(如孤立森林、LOF等)来检测指标的异常波动。
  4. 结果解释与决策:根据计算出的贡献度和异常波动检测结果,可以解释各指标对结果的影响,并据此做出决策。
    接下来,我将使用样例数据来演示如何进行这些步骤。假设我们有以下数据集:
  • date:日期
  • sales:销售额(结果变量)
  • ad_spend:广告费用(指标1)
  • discount:折扣率(指标2)
  • holiday:是否节假日(指标3,0表示非节假日,1表示节假日)

Python操作

  1. 数据准备:创建样例数据集。
  2. 指标贡献度计算:使用线性回归模型计算ad_spenddiscountholidaysales的贡献度。
  3. 异常波动检测:使用IQR方法检测ad_spenddiscountholiday的异常波动。
  4. 结果解释与决策:根据模型结果解释各指标的影响,并给出决策建议。

代码实现

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

#plt 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']

# 创建样例数据集
np.random.seed(0)
dates = pd.date_range('2023-01-01', periods=100)
sales = np.random.normal(1000, 200, 100)  # 销售额
ad_spend = np.random.normal(500, 100, 100)  # 广告费用
discount = np.random.normal(0.1, 0.05, 100)  # 折扣率
holiday = np.random.choice([0, 1], 100)  # 是否节假日

# 将数据合并为DataFrame
data = pd.DataFrame({
    'date': dates,
    'sales': sales,
    'ad_spend': ad_spend,
    'discount': discount,
    'holiday': holiday
})

# 设置图形大小和分辨率
plt.figure(figsize=(14, 7), dpi=100)

# 绘制三条曲线
plt.plot(data['date'], data['sales'], label='Sales', color='blue')
plt.plot(data['date'], data['ad_spend'], label='Ad Spend', color='green')

# 添加标题和标签
plt.title('Sales,ad_spend 随时间的变化趋势')
plt.xlabel('Date')
plt.ylabel('Amount ')
plt.legend()

# 优化x轴日期显示,避免重叠
plt.xticks(rotation=45)

# 显示图形
plt.tight_layout()  # 自动调整子图参数, 使之填充整个图像区域
plt.show()


# 线性回归模型计算贡献度
model = LinearRegression()
model.fit(data[['ad_spend', 'discount', 'holiday']], data['sales'])
contributions = model.coef_

# 异常波动检测
def detect_anomalies(data):
    Q1 = data.quantile(0.25)
    Q3 = data.quantile(0.75)
    IQR = Q3 - Q1
    anomalies = data[~((data >= Q1 - 1.5 * IQR) & (data <= Q3 + 1.5 * IQR))]
    return anomalies

anomalies = {
    'ad_spend': detect_anomalies(data['ad_spend']),
    'discount': detect_anomalies(data['discount']),
    'holiday': detect_anomalies(data['holiday'])
}

print(contributions)
print(anomalies)

# 使用matplotlib创建散点图
plt.figure(figsize=(10, 6))

# 区分节假日和非节假日
holiday_data = data[data['holiday'] == 1]
non_holiday_data = data[data['holiday'] == 0]

# 绘制散点图
plt.scatter(non_holiday_data['ad_spend'], non_holiday_data['sales'], c='blue', label='非节假日')
plt.scatter(holiday_data['ad_spend'], holiday_data['sales'], c='red', label='节假日')

# 添加标题和标签
plt.title('销售额与广告费用的关系')
plt.xlabel('广告费用')
plt.ylabel('销售额')
plt.legend()

# 显示图表
plt.show()

在这里插入图片描述

结果如下:
(array([2.12758894e-01, 3.02799610e+02, 5.86271391e+00]),
{‘ad_spend’: Series([], Name: ad_spend, dtype: float64),
‘discount’: 18 0.212965
71 -0.038630
92 0.215196
Name: discount, dtype: float64,
‘holiday’: Series([], Name: holiday, dtype: int64)})
在这里插入图片描述

归因分析结果描述

根据线性回归模型的结果,我们可以看到各指标对销售额(sales)的贡献度如下:

广告费用(ad_spend)的贡献度为 0.213 0.213 0.213(即每增加1单位的广告费用,销售额平均增加0.213单位)。
折扣率(discount)的贡献度为 302.8 302.8 302.8(即折扣率每增加1%,销售额平均增加302.8单位)。
是否节假日(holiday)的贡献度为 5.863 5.863 5.863(即如果是节假日,销售额平均增加5.863单位)。

对于异常波动检测,我们使用了IQR方法(四分位距),结果显示:
广告费用(ad_spend)和是否节假日(holiday)没有检测到异常波动。
折扣率(discount)在三个日期(索引为18、71和92)检测到了异常波动。

根据这些结果,我们可以解释各指标对销售额的影响,并据此做出决策。例如,增加广告费用和折扣率可能会提高销售额,尤其是在节假日。同时,需要注意折扣率的异常波动,这可能需要进一步的分析来理解其背后的原因。

三、Python中的其他归因分析库推荐

除了statsmodels和scikit-learn,Python生态中还有其他一些库可以用于进行归因分析。以下是一些较为知名的库:

PyMC:PyMC是一个用于贝叶斯统计建模和推断的Python库。它提供了大量的统计模型、采样器和可视化工具,可以帮助用户进行贝叶斯推断和概率编程。

Gensim:Gensim是一个用于主题建模、文档索引和大型文本数据集分析的Python库。它使用无监督学习算法来发现文本数据中的模式和结构。Gensim还提供了相似性搜索和文本生成等功能。

Orange:Orange是一个用于数据挖掘和可视化的Python库。它提供了大量内置的数据分析工具,如分类、聚类、回归和可视化等。Orange还提供了一个交互式的界面,使用户可以轻松地探索和分析数据。

PyMVPA:PyMVPA是一个用于多变量分析的Python库。它提供了大量的多变量分析算法,如主成分分析和独立成分分析等。PyMVPA还提供了数据预处理和特征选择等功能。

Theano:Theano是一个用于高性能数值计算的Python库。它使用符号式编程来定义和优化计算图,并支持GPU加速。Theano可以用于深度学习和机器学习等领域。

PyLearn:PyLearn是一个基于Theano的机器学习库。它提供了一个简洁的API来定义和训练神经网络,并支持多种神经网络架构。PyLearn还提供了数据预处理和模型评估等功能。

Hebel:Hebel是一个使用GPU加速的神经网络库。它使用纯Python编写,并提供了一个简洁的API来定义和训练神经网络。Hebel还支持自定义层和激活函数等功能。

Neurolab:Neurolab是一个基于神经网络的Python库。它提供了一个易于使用的API来实现各种神经网络架构,包括递归神经网络和长短期记忆网络等。Neurolab还支持多种优化算法和自定义层等功能。

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

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

相关文章

Nuxt.js 深入浅出:目录结构与文件组织详解

title: Nuxt.js 深入浅出&#xff1a;目录结构与文件组织详解 date: 2024/6/18 updated: 2024/6/18 author: cmdragon excerpt: 摘要&#xff1a;本文详述了Nuxt.js框架中关键目录与配置文件的作用及使用方法&#xff0c;包括布局设定、页面结构管理、插件集成、静态资源处理…

Linux安装并配置Java

1、Linux操作系统安装Java 1.1、下载Java JDK解压包 官方提供的网址&#xff1a; 选择Linux版本 下载列表选择最后一项&#xff0c;通过解压方式安装 倒数第二项是以rpm方式进行安装&#xff0c;另一篇安装MySQL时就是用到rpm方法。 1.2、解压JDK tar -zxvf jdk-8u411-lin…

建筑幕墙甲级设计资质:申请条件与评分标准

建筑幕墙甲级设计资质的申请条件与评分标准可以清晰归纳如下&#xff1a; 申请条件 一、企业基本情况 独立企业法人资格&#xff1a;企业需具有独立企业法人资格。注册资本&#xff1a;注册资本不少于300万元人民币。 二、技术人员条件 主要技术负责人或总工程师&#xff…

1688新品爆款筛选技巧,电商小白也能秒变选品达人

不管是做淘宝、拼多多、抖音、小红书、京东等国内电商平台的商家&#xff0c;可能都有去1688选品的需求。电商环境越来越卷&#xff0c;为了迎合市场和消费者&#xff0c;商家必须不断推陈出新&#xff0c;挖掘潜力新品。 所以有的商友表示想选1688上所有带新品标识的品&#…

Hi3861 OpenHarmony嵌入式应用入门--轮询按键

本篇介绍使用轮询方式读取gpio状态来判断按键状态。 原理图如下 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_idx id, hi_gpi…

ollama部署本地大模型

文章目录 一、Ollama1.ollama简介2.安装流程&#xff08;1&#xff09;官网下载ollama&#xff08;2&#xff09;选择特定的大模型版本下载安装&#xff08;3&#xff09;测试 二、spring项目集成Ollama的大模型1.环境信息2.配置文件&#xff08;1&#xff09;application.yml&…

shell命令(进程管理和用户管理)

一、进程处理相关命令 1、进程的概念 进程的概念主要有两点&#xff1a; 进程是一个实体。每一个进程都有它自己的地址空间&#xff0c;一般情况下&#xff0c;包括文本区域&#xff08; text region &#xff09;、数据区域&#xff08; data region &#xff09;和堆栈&am…

基于Spark3.3.4版本,实现Standalone 模式高可用集群部署

目录 一、环境描述 二、部署Spark 节点 2.1 下载资源包 2.2 解压 2.3 配置 2.3.1 配置环境变量 2.3.2 修改workers配置文件 2.3.3 修改spark.env.sh文件 2.3.4 修改spark-defaults.conf 2.4 分发 2.5 启动服务 2.5.1 启动zookeeper 2.5.2 启动hdfs 2.5.3 启动spar…

视频融合平台LntonCVS视频监控汇聚平台:构建多元接入与智能管理的安防新生态

一、视频融合平台概述 视频融合平台支持多种协议和设备类型的接入&#xff0c;包括GB28181、Onvif、RTSP、RTMP、海康SDK、Ehome、大华SDK、宇视SDK等。它能够统一整合和管理来自不同品牌、不同协议的视频资源&#xff0c;构建视频数据资源池&#xff0c;并通过视频资源目录为…

zemax默认函数评价设定规则

--转自挑衅冰雪 矩形阵列&#xff1a; 系统波前不能使用像差系数表示&#xff0c;系统中包含非圆形通光孔径的情况&#xff08;如矩形&#xff0c;椭圆&#xff09;。 高斯求积&#xff1a; 具有环形光瞳和旋转对称系统 矩形阵列评价函数操作数要远大于高斯求积 可先用高斯…

【HarmonyOS NEXT】设置组件不同状态下的样式

属性 名称 参数类型 描述 stateStyles StateStyles 设置组件不同状态的样式。 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 StateStyles接口说明 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。只支持通用属性。 状态名称 类型 必…

智能名片小程序源码系统 销售名片+企业商城 前后端分离+源代码包+搭建部署教程

系统概述 在当今数字化快速发展的时代&#xff0c;传统的商务交流方式逐渐显露出其局限性。为了满足企业和个人更加高效、便捷地展示和推广自身的需求&#xff0c;智能名片小程序源码系统应运而生。这一系统的开发旨在为用户提供一个集销售名片和企业商城于一体的综合性平台&a…

迷你小风扇哪个品牌好?迷你小风扇前十名公开揭晓!

随着夏日的炎热袭来&#xff0c;迷你小风扇成为了许多人随身携带的清凉利器。无论是在办公室、户外活动&#xff0c;还是在旅行途中&#xff0c;迷你小风扇都以其小巧便携、强劲风力和持久续航的优势&#xff0c;迅速俘获了大批用户的喜爱。然而&#xff0c;市面上迷你小风扇品…

RabbitMQ 相关概念

引言 什么是消息中间件 消息是指在应用间传送的数据&#xff0c;包含文本字符串、JSON等。消息队列中间件&#xff08;MQ&#xff09;指利用高效可靠的消息传递机制进行平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型…

11.6.k8s实战-节点扩缩容

目录 一&#xff0c;需求描述 二、集群缩容-节点下线 1&#xff0c;节点下线案例说明 2&#xff0c;查看现有节点 3&#xff0c;查看所有名称空间下的pod ​编辑4&#xff0c;驱逐下线节点的pod 5&#xff0c;驱逐后再次查看pod 6&#xff0c;驱逐pod后再次查看节点信息…

了解Java的LinkedBlockingQueue

了解Java的LinkedBlockingQueue LinkedBlockingQueue是一个基于链接节点的有界阻塞队列。它实现了BlockingQueue接口&#xff0c;可以在多线程环境中安全地进行插入、移除和检查操作。LinkedBlockingQueue的容量可以在创建时指定&#xff0c;如果未指定&#xff0c;则默认容量…

为什么动态代理接口中可以不加@Mapper注解

为什么动态代理接口中可以不加Mapper注解 如下图&#xff1a; 我们上面的UserMapper上面没有加Mapper注解&#xff0c;按道理来说UserMapper这个类应该是注入不到IOC容器里面的&#xff0c;但是为什么我们程序的运行效果仍然是正常的呢&#xff1f;这是因为你的启动类上加了m…

机械产品数字样机通用要求

以下参&#xff1a;国家标准 GB/T26100-2010《 机械产品数字样机通用要求》 数字样机 (Digital Mock-Up,DMU) 对机械产品整机或具有独立功能的子系统的数字化描述&#xff0c;这种描述不仅反映了产品对象的几何属性&#xff0c;还至少在某一领域反映了产品对象的功能和性能。…

建筑工地通常那种考勤机好用?

建筑工地通常那种考勤机好用&#xff1f; 大量从乡村前往城市的务工者&#xff0c;所从事的多为建筑工程类行业&#xff0c;此种行业对学历与技能的要求不高&#xff0c;而工资水平倒也尚可&#xff0c;正因如此才吸引了众多劳动者。那要怎样管好工地上的项目呢&#xff1f;首要…

雷军-2022.8小米创业思考-10-高效率模型:便宜有好货;产品好,价格厚道,公司盈利;爆品模式,分摊成本;资金库存快速周转;铁人三项,硬件,新零售,互联网

第十章 高效率模型 小米方法论 “铁人三项”的商业模式 完整的“小米模式”。这种模式有很多反直觉的地方&#xff0c;需要跟“便宜无好货”等很多固有观念做斗争。有些讽刺的是&#xff0c;小米模式天生就是为实现“便宜有好货”而奋斗。 效率是小米模式的基石&#xff0c…