数据挖掘--基于KMeans算法的客户价值分析

本文介绍了如何运用KMeans算法进行客户价值分析,以电信运营商的公众客户为研究对象,旨在划分客户群体,优化资费套餐和营销策略。通过层次聚类确定合适的类别数,然后应用KMeans进行聚类,分析得出不同类别的客户特征,如商务人士、非商务夜猫子、低端消费者和交际型客户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据下载链接:
链接:https://pan.baidu.com/s/1EFiYAceEkZsnBkVNjTlH_A
提取码:v164

1、客户价值分析:
客户价值分析就是一个客户分群问题,以客户为中心,从客户需求出发,搞清楚客户需要什么,他们有怎样的一个特征,需要什么样的产品,然后设计相应的产品满足客户的需求。进行客户价值分析,可以避免商家闭门造车以及主管臆断客户的需求。

项目背景为某电信运营商,该运营商需要以客户为中心,按照客户的需求,在对客户的特点了解上推出不同的资费套餐和营销手段,目的是争取更多新客户,降低客户流失率,降低服务成本,提高业务收入,增加ARPU值(average revenue per user每个用户的平均收益,一般以月为单位),精准的市场营销策略制定。

2、为什么使用聚类模型:
对于电信运营商而言根据过往运营经验,可以大概知道客户类型,但是随着数据量越来越大的时候必须要是用数据挖掘方法对数据做更精准的分析,并得到定量的分析结果。同时由于客户数量很多,且消费行为复杂,人工很难事先对客户打标签,得到训练数据。

3、项目需求:
本项目的目标客户是公众客户(分为公众客户、商业客户即公司、大客户),因而只对公众客户进行分群。初步的目标是中高端用户、中端用户、离网趋势用户、其他需求用户。但这是经验而言,最终结果需要看模型的运行结果,不能主观臆断。

4、项目的输出:
(1)通过聚类,将公众客户合理地分为多个类别。
(2)聚类完成后,分组观察每个类别的具体情况。分组对数据的各方面做一个观察,包括年龄,性别以及消费情况等等。

5、聚类模型方法步骤:
先用层次聚类逐步聚拢的方式筛选出距离最远的比较合适的k类别数(簇),用dendrogram(scipy.cluster.hierachy.linkage层次聚类,scipy.cluster.hierarchy.dendrogram画图)作图,子树的高度表示它两个后代相互之间的距离,确定k之后放入kmeans模型进行聚类。

6、代码实现:

(1)数据概况:脱敏数据。
custinfo(客户信息表):
CustomerID为用户表示,以及各个表之间的联系;
Gender 性别
Age 年龄
LOS用户一个月内上网时长
Tariff 用户使用套餐服务的代码
Handset 手机型号(脱敏)
在这里插入图片描述

custcall(客户打电话消费情况表):
CustomerID为用户表示,以及各个表之间的联系;
Peak_calls 高峰拨打频次,对应month的月份数
Peak_mins 高峰分钟数
OffPeak_calls 低峰期拨打频次
OffPeak_mins 低峰期拨打分钟
weekend_calls 周末拨打频次
weekend_mins 周末拨打分钟数
International_mins 国际童话分钟
Nat_call_cost 套餐额外费用
month 月份
在这里插入图片描述

tariff(资费套餐表):
话费类型
固定费用
免费时长
高峰时期单价
非高峰时期单价
周末单价
国际长途单价
在这里插入图片描述

***特征提取:
这个项目暂不考虑年龄,性别,通话套餐类型,手机品牌等因素。不相关的特征先去掉。

import pandas as pd
custinfo = pd.read_csv('./custinfo.csv')
custcall = pd.read_csv('./custcall.csv')

#时间跨度长可以考虑到消费者消费的稳定情况,
#根据每个用户id统计每个用户的数据平均值
#其中每个用户均有六条数据,在这里对这些数据做平均
custcall2 = custcall.groupby(custcall['Customer_ID']).mean()
custcall3 = custcall2.drop('month',1)

data = pd.merge(custinfo,custcall3,left_on='Customer_ID',right_index=True)
data.index = data['Customer_ID']
data = data.drop('Customer_ID',1)
data.head()

Gender	Age	L_O_S	Tariff	Handset	Peak_calls	Peak_mins	OffPeak_calls	OffPeak_mins	Weekend_calls	Weekend_mins	International_mins	Nat_call_cost
Customer_ID													
K100130	1	45	46.566667	CAT 50	SOP20	12.166667	10.558619	5.166667	4.467108	0.166667	0.507626	4.369472	0.0
K100150	1	30	26.900000	CAT 50	SOP20	9.000000	16.000000	1.500000	5.800000	2.333333	3.800000	8.114904	0.0
K100180	1	37	27.966667	CAT 50	SOP10	9.500000	6.986259	5.333333	3.637815	1.000000	1.998042	3.582837	0.0
K100270	1	44	29.833333	CAT 50	SOP20	4.166667	6.998276	3.500000	2.410889	0.166667	1.238929	1.578545	0.0
K100290	1	27	20.066667	CAT 50	SOP20	9.500000	15.000000	1.000000	7.600000	3.333333	6.416667	1.754841	0.0

用describe做统计.

import matplotlib.pyplot as plt
des = data.describe()
des
	Gender	Age	L_O_S	Peak_calls	Peak_mins	OffPeak_calls	OffPeak_mins	Weekend_calls	Weekend_mins	International_mins	Nat_call_cost
count	18550.000000	18550.000000	18550.000000	18550.000000	18550.000000	18550.000000	18550.000000	18550.000000	18550.000000	18550.000000	18550.000000
mean	0.482102	31.506253	33.710032	39.756397	118.768764	17.356514	51.603952	2.790836	8.356949	28.292598	2.944807
std	0.499693	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值