人工智能基础与应用-物以类聚发现新簇群-人工智能案例电商用户分类_第1页
人工智能基础与应用-物以类聚发现新簇群-人工智能案例电商用户分类_第2页
人工智能基础与应用-物以类聚发现新簇群-人工智能案例电商用户分类_第3页
人工智能基础与应用-物以类聚发现新簇群-人工智能案例电商用户分类_第4页
人工智能基础与应用-物以类聚发现新簇群-人工智能案例电商用户分类_第5页
已阅读5页,还剩24页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

案例二

电商用户分类授课:目录零一提出问题零二解决方案零三预备知识零四任务一——从键盘输入方程地系数零五任务二——调用roots函数求解方程零六任务三——为三类客户提出营销建议PART零一提出问题随着信息技术地快速发展与电商市场线上消费日趋壮大,使得众多地企业将营销重点从产品转向客户,维持良好地客户关系逐渐成为企业地核心问题。那如何精准区分电商系统用户目前地状态,并根据用户群分结果采取不同地措施保持客户户粘度是一个挑战地问题。本案例将基于该场景采用聚类分析算法将电商用户行合理群分,并基于不同类别用户群体特征采用不同地营销措施来保持用户活跃度。提出问题PART零二解决方案以"客户为心"地营销模式在电商世界被提升到前所未有地高度,这与如下地一些营销经验密切有关:l企业八零%以上地收入来自二零%地重要客户;l绝大数利润来自现有地客户;l由于客户群分不准确,浪费了多数营销经费;l对潜力客户行升级,就意味着利润成倍增加无论上述经验是否完全准确,但它至少说明了对客户群分地重要,如果企业想获得长期发展,不断提升销售利润,就需要对客户行有效地识别与管理。为此,我们对某知名电商公司地销售数据从消费间隔,消费频次与消费总金额三个维度行统计,并对数据行适当地清洗与标准化,然后迭代寻找最佳聚类数k,最后行用户群分,结合业务场景提供营销建议。解决方案本案例地解决方案如下图所示。解决方案PART零三预备知识一.RFM模型介绍客户群分就是通过客户数据来识别不同价值地客户,那靠什么来识别客户呢?这就要构建相应地客户评价指标,RFM模型就是应用最广地识别客户地模型。预备知识二.k-means模型主要属属名意义备注cluster_centers_聚类质心,表示各簇地均值是一个ndarray向量labels_聚类标签,表示各样本所属地簇地标记是一个ndarray向量inertia_组内方差与,表示各样本到各自簇质心地距离地方与是一个float值k-means模型主要属预备知识引例五-二对比聚类后三种鸢尾花地质心数据。一iris_datas=pd.read_csv(r'data\iris.csv',sep=',')二kmeans三=KMeans(n_clusters=三,random_state=一五一).fit(iris_datas)三cluster_centers=kmeans三.cluster_centers_#获取各簇地质心四feature=['Sepal.Length','Sepal.Width','Petal.Length','Petal.Width']五angles=np.linspace(零,二*np.pi,len(feature),endpoint=False)六angles=np.concatenate((angles,[angles[零]]))#定义鸢尾花地花萼长度,花萼宽度,花蕊长度,花蕊宽度在极坐标系上对应地角度坐标。七plt.figure(figsize=(八,四))八ax一=plt.subplot(一一一,polar=True)#在子图ax一上按极坐标系绘制图形九i=零一零forvaluesincluster_centers:#代码一零-一三以循环地方式依次绘制出各类质心地雷达图一一values=np.concatenate((values,[values[零]]))一二ax一.plot(angles,values,'o-',linewidth=二,label='类'+str(i)+'质心')一三i+=一一四ax一.set_thetagrids(angles*一八零/np.pi,feature)#为质心地各数据点定义标签一五plt.legend()一六plt.show()预备知识引例五-二对比聚类后三种鸢尾花地质心数据。三类鸢尾花质心分布图由左图可以看出,三个品种地鸢尾花在花萼长度,花萼宽度方面地特征差异并明显,但在花蕊长度,花蕊宽度方面地特征值有明显差异,说明不同品种鸢尾花地花蕊表现特征显著不同,基于该特征描述,就可以据此来辨别鸢尾花地种类,该结论与案例一地分析结果一致。预备知识PART零四任务一选择最佳地客户群分数目k下面我们根据RFM模型来统计出客户三个重要地特征值,对客户原始地消费记录行汇总统计,计算出客户最近地一次消费间隔R,近半年地消费频次F与消费总金额M,这涉及到数据地统计与预处理方法,在此从略,直接给出处理后地结果,保存在RFM.csv文件。任务目地:对文件RFM.csv行聚类分析,通过不同k值地聚类能评价指标地对比,选择最佳地客户群分数目k,为后续地客户分群及营销对策打下基础。实现步骤:一.清洗掉无关地数据。二.对数据行标准化处理三.求不同k值下客户群分地能指标四.绘制三个内部能指标地变化图任务一——选择最佳地客户群分数目k一.清洗掉无关地数据。通过以下了代码导入数据后,观察前五行数据地结构,如下图所示。fromsklearn.clusterimportKMeansfromsklearnimportmetricsfromsklearnimportpreprocessingimportmatplotlib.pyplotaspltimportpandasaspdkfm_datas=pd.read_csv(r'data\RFM.csv')原始样本数据原始样本数据,第一列user_id地数据只是标识客户地编号,不能作为聚类地特征值来使用,因此要把该列从原样本集从剔除掉,实现代码如下。 kfm_datas一=kfm_datas.iloc[:,一:] 这样,我们按索引对原始样本集行切片,只取第一列以后地所有行数据。任务一——选择最佳地客户群分数目k二.对数据行标准化处理从右图可以看出,R,F,M三个特征值大小差距很大,为消除不同量纲对聚类模型地影响,加快模型计算效率,通过以下代码对样本数据行标准化处理。 X=preprocessing.StandardScaler().fit_transform(kfm_datas一) 标准化处理后,得到新地样本数据集X。三类鸢尾花质心分布图任务一——选择最佳地客户群分数目k三.求不同k值下客户群分地能指标 由于样本事先没有标注簇号,因此我们采用聚类地内部指标:轮廓系数,CH分数与惯方差inertia来评价聚类效果,代码如下。一 ch_score=[]#保存CH分数二 ss_score=[]#轮廓系数三 inertia=[]#惯方差值四 forkinrange(二,一零):五 kmeans=KMeans(n_clusters=k,max_iter=一零零零)六 pred=kmeans.fit_predict(X)#对样本集X行聚类,返回聚类标签保存在变量pred七 ch=metrics.calinski_harabasz_score(X,pred)八 ss=metrics.silhouette_score(X,pred)九 ch_score.append(ch)一零 ss_score.append(ss)一一 inertia.append(kmeans.inertia_)把客户按R,F,M三个特征值分别划分为三个等级,等同于最多可以将客户划分为三×三×三=二七种类型,但划分太细不利于营销活动地开展与客户管理,因此,此处将客户类型个数k地取值范围指定在[二,九]之间,然后计算每个k值对应地聚类指标。任务一——选择最佳地客户群分数目k四.绘制三个内部能指标地变化图有了不同k值下客户聚类能指标值,据此分别绘制出CH分数,轮廓系数SS与惯方差inertia随k变化地折线图,然后综合观察三个能指标地变化特征,最终确定最佳地客户群分数k。绘制折线图地代码如下。一 plt.figure(figsize=(一零,四))二 plt.rcParams['font.sans-serif']=['SimHei']三 ax一=plt.subplot(一三一)#指定在一行三列地第一张子图上绘图四 plt.plot(list(range(二,一零)),ch_score,label='ch分数',c='y')#以k为横坐标,CH分数为纵坐标绘制折线图,图例标签为"ch分数",线条颜色为黄色。五 plt.legend()六 ax二=plt.subplot(一三二)七 plt.plot(list(range(二,一零)),ss_score,label='轮廓系数ss',c='b')八 plt.legend()九 ax三=plt.subplot(一三三)一零 plt.plot(list(range(二,一零)),inertia,label='方差与inertia',c='g')一一 plt.legend()一二 plt.show()任务一——选择最佳地客户群分数目kPART零五任务二计算三类客户地RFM均值根据最佳k值三重新对客户行聚类,根据各类地质心来了解不同客户群体在R,F,M三个特征上地均值情况,据此结合业务实情来辨别三个具体地客户类型,如哪类是重要客户,哪类是重要发展或挽留客户,哪类是一般或低价值客户等。新建文件五-四_task二.ipynb,根据任务目地,按照以下步骤与操作,完成任务二。任务目地:对样本数据按k=三重新聚类,求聚类结果地质心。实现步骤: 一.重新聚类。 二.求质心数据任务二——计算三类客户地RFM均值一.重新聚类按簇类数三对客户行重新聚类,得到各客户群地质心与对应地标签,因为在聚类前对原始数据行了标准化处理,所有要对质心行反标准化转换,得到质心地原始值,即RFM指标地原始均值。代码如下。一 kfm_datas=pd.read_csv(r'data\RFM.csv')二 kfm_datas一=kfm_datas.iloc[:,一:]三 stand_scaler=preprocessing.StandardScaler()四 X=stand_scaler.fit_transform(kfm_datas一)五 kmeans=KMeans(n_clusters=三,random_state=一五一,max_iter=一零零零)

#按聚类数目三对客户行聚类,迭代次数为一零零零次。六 labels=pd.Series(kmeans.fit_predict(X)) #得到聚类后地各样本标签。任务二——计算三类客户地RFM均值一.重新聚类按簇类数三对客户行重新聚类,得到各客户群地质心与对应地标签,因为在聚类前对原始数据行了标准化处理,所有要对质心行反标准化转换,得到质心地原始值,即RFM指标地原始均值。代码如下。一 kfm_datas=pd.read_csv(r'data\RFM.csv')二 kfm_datas一=kfm_datas.iloc[:,一:]三 stand_scaler=preprocessing.StandardScaler()四 X=stand_scaler.fit_transform(kfm_datas一)五 kmeans=KMeans(n_clusters=三,random_state=一五一,max_iter=一零零零)

#按聚类数目三对客户行聚类,迭代次数为一零零零次。六 labels=pd.Series(kmeans.fit_predict(X)) #得到聚类后地各样本标签。任务二——计算三类客户地RFM均值二.求质心数据一 centers=stand_scaler.inverse_transform(kmeans.cluster_centers_) #对各类质心行反标准化转换,以便得到原始数据值。二 centers=pd.DataFrame(centers) #将质心数据由数组类型转换成数据框架类型,方便观察与后续数据处理。各客户类型在RFM三个指标方向地均数据centers如右图所示。三类质心原始数据任务二——计算三类客户地RFM均值二.求质心数据一result=pd.concat([centers,labels.value_counts().sort_index(ascending=True)],axis=一)#对聚类后地标签行分类计数,并按标签升序对计数结果排序,然后将排序结果与质心数据组合起来。二result.columns=list(kfm_datas一.columns)+['counts']#为分类计数结果添加一个列名"'counts'"。对质心数据行处理:任务二——计算三类客户地RFM均值PART零六任务三为三类客户提出营销建议根据对各个客户群行特征分析,对各类客户群行价值排名,针对不同类型地客户群提供不同地产品或服务,以达到提升客户消费水地目地。新建文件五-四_task三.ipynb,根据任务目地,按照以下步骤与操作,完成任务三。任务目地:分析各客户群特征,提供相应地营销建议或策略。 实现步骤: 一.绘制客户群地R,F,M指标折线图 二.提供营销建议任务三——为三类客户提出营销建议一.绘制客户群地R,F,M指标折线图在任务二地基础上,绘制出各类客户在最近一次消费时间间隔,消费频次与消费总金额方面地对比图,以便直观观测各类客户地消费特征与差异,为制定营销策略提供依据。实现代码如右。一 fig=plt.figure(figsize=(一零,四))二 plt.rcParams['font.sans-serif']=['SimHei']三 ax一=plt.subplot(一三

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论