人工智能数据挖掘 课件 项目6-RFM客户细分_第1页
人工智能数据挖掘 课件 项目6-RFM客户细分_第2页
人工智能数据挖掘 课件 项目6-RFM客户细分_第3页
人工智能数据挖掘 课件 项目6-RFM客户细分_第4页
人工智能数据挖掘 课件 项目6-RFM客户细分_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

数据挖掘课程教学课件项目6RFM客户细分基于RFM模型识别客户价值分层,支撑精细化运营与营销决策RFM客户细分数据集准备RFM建模客户细分课程导航任务6.1数据集简介及准备任务6.2数据观察任务6.3缺失值处理任务6.4数据准备任务6.1构建模型项目6_RFM客户细分2项目描述假设我是一家公司的市场分析师,我负责研究和理解我们的客户群体。最近,我注意到公司的客户保留率在下降,同时新客户的获取成本在上升。这引起了我的关注,因为这可能意味着我们需要优化我们的客户关系管理策略和市场营销策略。为了解决这个问题,我决定利用数据挖掘技术来分析客户数据。我已经获得了一份名为《在线顾客销售数据》的数据集,其中包含了我们公司过去一段时间的客户购买数据。通过深入分析这些数据,我希望能够理解我们的客户群体的行为和需求,并提出相应的改进措施。在解决问题的过程中,RFM模型主要关注以下挑战。项目6_RFM客户细分3项目实施数据收集和准备。收集销售数据、库存数据和物流配送数据,包括订单数量、产品库存量、配送时间等信息。对数据进行清洗和预处理,处理缺失值、异常值等。数据分析。对收集到的数据进行探索性数据分析(EDA),包括统计描述、可视化分析等,以了解数据的特征和分布。项目6_RFM客户细分4项目目标了解统计型数据挖掘的概念与应用理解聚类算法,如K-means、层次聚类、DBSCAN等,以及它们在RFM客户细分中的应用。掌握利用聚类技术分析客户消费数据,如最近一次消费时间、消费频率、消费金额等,以建立客户细分模型。能够通过数据分析,优化客户关系管理策略,实现客户价值最大化,提升客户满意度和忠诚度。项目6_RFM客户细分5企业岗位要求岗位:客户分析师要求:能够收集、整理和分析客户消费数据。熟练掌握聚类算法,如K-means、层次聚类、DBSCAN等,能够运用这些算法进行数据建模和分析。具备数据清洗和预处理的能力,能够处理数据中的缺失值、异常值等问题。项目6_RFM客户细分6思政目标通过学习RFM客户细分,学生将深入理解客户行为数据分析与企业发展的紧密联系,培养对数据驱动决策和企业增长的责任感和使命感,同时增强团队合作和社会责任意识,助力他们成为具备数据分析能力、社会责任感和创新能力的新时代商业分析师。项目6_RFM客户细分7知识链接.统计型数据统计型数据是通过统计方法收集和整理得到的数据,它反映了事物的数量特征和规律。统计型数据可以分为以下几类。定类数据(NominalData)。定类数据是用于区分事物类别或属性的数据,其中类别之间没有固定的顺序或等级关系。既能区分类别,又能比较大小的数值数据,如评级、等级、名次等。这些数据通常是以标签或名称的形式表示的,没有数值含义。如性别(男、女)、颜色(红、蓝、绿)、产品类型(电子产品、服装、食品)等都是定类数据。项目6_RFM客户细分8任务6.1数据集简介及准备本任务使用UCI机器学习库中的“OnlineRetail”即“在线零售数据集”数据集,这个数据集包含2010年12月1日至2011年12月9日英国一家线上零售商的交易记录。;每条记录代表一笔交易,包含多个变量。项目6_RFM客户细分9任务6.1数据集简介及准备(1/2)本任务使用UCI机器学习库中的“OnlineRetail”即“在线零售数据集”数据集,这个数据集包含2010年12月1日至2011年12月9日英国一家线上零售商的交易记录。每条记录代表一笔交易,包含多个变量。这个数据集对于进行数据分析和机器学习实践非常有帮助,因为它包含了丰富的交易信息,可以用于多种分析目的,比如顾客行为分析、销售趋势预测、客户细分、库存管理等。数据集的特点:多样性:包含了多种类型的数据,如客户信息、产品信息、交易详情等。项目6_RFM客户细分10任务6.1数据集简介及准备(2/2)实际应用:数据反映了真实的购买行为,适合用来模拟和预测真实世界的零售业务场景。多用途:可以用于监督学习(如预测交易是否成功)、无监督学习(如市场细分)、时间序列分析等。步骤1:下载数据首先进入Kaggle官方网站,通过搜索关键词“onlineretail”即可找到该数据集,进入数据集页面后,单击“Download”按钮,即可下载。解压后,可得到“OnlineRetail.csv”文件,如图6.1所示。项目6_RFM客户细分11任务6.1数据集简介及准备图示补充该页用于课堂中对界面截图、流程结果或图表进行补充说明,适合教师边展示边讲解。项目6_RFM客户细分12任务6.2数据观察步骤1:运行notebook,编写代码;【例6.1】导入基础库项目6_RFM客户细分13任务6.2数据观察(1/6)步骤1:运行notebook,编写代码【例6.1】导入基础库\子图%matplotlibinline\忽略警告项目6_RFM客户细分14任务6.2数据观察(2/6)【例6.2】复制粘贴官方推荐的导入代码复制粘贴官方推荐的导入数据代码,并适当修改。\fetchdatasetproductivitypredictionofgarmentemployees=fetchucirepo(id=352)\data(aspandasdataframes)项目6_RFM客户细分15任务6.2数据观察(3/6)X=productivitypredictionofgarmentemployees.data.featuresy=productivitypredictionofgarmentemployees.data.targets\metadatametadata=productivitypredictionofgarmentemployees.metadata\variableinformation项目6_RFM客户细分16任务6.2数据观察(4/6)variables=productivitypredictionofgarmentemployees.variables然后分别打印输出各变量,X表示特征数据,结果如图6.2所示。变量解读:.InvoiceNo:发票编号,唯一的六位数整数,表示一笔交易。如果编号以字母‘C’开头,则表示该交易是一张退货单。.StockCode:产品代码,唯一的五位数整数,表示某种产品。项目6_RFM客户细分17任务6.2数据观察(5/6).Description:产品描述,产品的简要描述或名称。.Quantity:数量,产品在每次交易中的购买数量。数量为正值表示购买,负值表示退货。.InvoiceDate:发票日期和时间,交易发生的日期和时间。.UnitPrice:单价,每个产品的单价,单位为英镑。.CustomerID:客户编号,唯一的五位数整数,表示客户。该值为空的记录表示没有记录客户信息。项目6_RFM客户细分18任务6.2数据观察(6/6).Country:国家,客户所在的国家名称。通过这些变量,数据分析人员可以进行各种分析,比如计算总销售额、分析客户购买行为、进行市场细分等。例如,可以计算每个产品的销售总额,分析不同国家的销售趋势,或者通过客户ID进行客户分群(如RFM分析)。项目6_RFM客户细分19任务6.2数据观察图示补充该页用于课堂中对界面截图、流程结果或图表进行补充说明,适合教师边展示边讲解。项目6_RFM客户细分20任务6.3缺失值处理虽然在打印variables变量时提示所有列都没有缺失值,但是还是需要通过pandas来进一步确认。;【例6.3】统计缺失值个数项目6_RFM客户细分21任务6.3缺失值处理(1/6)虽然在打印variables变量时提示所有列都没有缺失值,但是还是需要通过pandas来进一步确认。【例6.3】统计缺失值个数||||-------------|----------------|||MissingValues||InvoiceNo|0|项目6_RFM客户细分22任务6.3缺失值处理(2/6)|StockCode|0||Description|1454||Quantity|0|||||-------------|----------------|||MissingValues|项目6_RFM客户细分23任务6.3缺失值处理(3/6)|InvoiceDate|0||UnitPrice|0||CustomerID|135080||Country|0|该表格显示了数据集各个字段中缺失值的,其中“Description”字段有1454个缺失值,“CustomerID”字段有135080个缺失值。【例6.4】统计缺失值比例项目6_RFM客户细分24任务6.3缺失值处理(4/6)||||-------------|----------------||字段|缺失值比例(%)||InvoiceNo|0.00||StockCode|0.00||Description|0.27|项目6_RFM客户细分25任务6.3缺失值处理(5/6)|Quantity|0.00||InvoiceDate|0.00||UnitPrice|0.00||CustomerID|24.93||Country|0.00|“Description”字段的数据有0.27%是缺失的。而“CustomerID”字段则有近四分之一,即24.93%的数据是缺失的。项目6_RFM客户细分26任务6.3缺失值处理(6/6)由于样本数量足够,所以我们采用简单处理的办法,直接将有缺失值的行删除。【例6.5】删除缺失值df=df.dropna()删除缺失值后重新打印数据形状为:(406829,8)。项目6_RFM客户细分27任务6.4数据准备步骤1:RFM数据准备;【例6.6】消费金额项目6_RFM客户细分28任务6.4数据准备(1/38)步骤1:RFM数据准备【例6.6】消费金额\新属性:消费金额\计算每个订单的消费金额,数量(Quantity)乘以单价(UnitPrice)\按照客户ID(CustomerID)分组,计算每个客户的总消费金额项目6_RFM客户细分29任务6.4数据准备(2/38)\重置索引rfmm=rfmm.resetindex()\显示头部数据rfmm.head()代码创建了一个新的属性消费金额。项目6_RFM客户细分30任务6.4数据准备(3/38)首先,它通过将每个订单的“Quantity”(数量)和“UnitPrice”(单价)相乘来计算每个订单的消费金额,并将结果存储在新的列“Amount”中。然后,按照“CustomerID”(客户ID)对数据进行分组,计算每个客户的总消费金额,并将结果存储在“rfmm”中。|||||-----|------------|---------|||CustomerID|Amount|项目6_RFM客户细分31任务6.4数据准备(4/38)|0|12346.0|0.00||1|12347.0|4310.00||2|12348.0|1797.24||3|12349.0|1757.55||4|12350.0|334.40|项目6_RFM客户细分32任务6.4数据准备(5/38)【例6.7】消费频率\新属性:消费频率rfmf=df.groupby('CustomerID')\['InvoiceNo'\].count()\对每个客户的购买次数进行统计rfmf=rfmf.resetindex()\重置索引rfmf.columns=\['CustomerID','Frequency'\]\重命名列项目6_RFM客户细分33任务6.4数据准备(6/38)rfmf.head()\显示头部数据这段代码的功能是计算每个客户的消费频率。具体操作如下。使用groupby('CustomerID')函数对DataFramedf进行分组,以客户ID为索引。对每个客户的购买次数进行统计,通过\['InvoiceNo'\].count()函数实现。使用resetindex()函数重置索引,使得'CustomerID'变成一个普通的列,而不是索引。项目6_RFM客户细分34任务6.4数据准备(7/38)通过columns=\['CustomerID','Frequency'\]重命名列,将列名更改为“CustomerID”和“'Frequency”。使用head()函数显示DataFrame的头部数据。|||||-----|------------|-----------|||CustomerID|Frequency|项目6_RFM客户细分35任务6.4数据准备(8/38)|0|12346.0|2||1|12347.0|182||2|12348.0|31||3|12349.0|73||4|12350.0|17|项目6_RFM客户细分36任务6.4数据准备(9/38)接下来,对以上两个表格进行合并。【例6.8】合并表格\合并两个数据表rfm=pd.merge(rfmm,rfmf,on='CustomerID',how='inner')rfm.head()项目6_RFM客户细分37任务6.4数据准备(10/38)这段代码是用来合并两个数据框rfmm和rfmf。merge函数通过“CustomerID”这一共同列将数据框合并。参数how='inner'指的是采用内连接的方式,即只保留两个数据框中“CustomerID”值相同的行。最后,使用head()函数显示合并后数据框的前几行。合并后,输出结果如表6.4所示。|||||项目6_RFM客户细分38任务6.4数据准备(11/38)|-----|------------|---------|-----------|||CustomerID|Amount|Frequency||0|12346.0|0.00|2||1|12347.0|4310.00|182||2|12348.0|1797.24|31|项目6_RFM客户细分39任务6.4数据准备(12/38)|3|12349.0|1757.55|73||4|12350.0|334.40|17|【例6.9】转换日期列\新属性:Recency\转换为正确的日期类型项目6_RFM客户细分40任务6.4数据准备(13/38)此段代码主要是用来创建一个新的属性“Recency”。它首先将“InvoiceDate”列的数据类型转换为日期时间格式。“pd.todatetime”是pandas库的一个函数,用于将字符串或其他类型的时间转换为时间戳格式。在这个函数中,“df\['InvoiceDate'\]”是要转换的列,“format="%m/%d/%Y%H:%M"”是原始数据的时间格式,这里的格式是“月/日/年小时:分钟”。转换后的时间戳数据会被赋值回“InvoiceDate”列,从而更新这一列的数据。【例6.10】添加差值“Diff”项目6_RFM客户细分41任务6.4数据准备(14/38)\计算最大日期,以了解最后的交易日期maxdate=max(df\['InvoiceDate'\])\计算最大日期和交易日期之间的差值df\['Diff'\]=maxdate-df\['InvoiceDate'\]这段代码主要用于计算数据集中每个交易日期到最后一个交易日期之间的差值。项目6_RFM客户细分42任务6.4数据准备(15/38)maxdate=max(df\['InvoiceDate'\]):这行代码找出InvoiceDate列(即交易日期)中的最大值,也就是最后的交易日期,然后将其赋值给变量maxdate。df\['Diff'\]=maxdate-df\['InvoiceDate'\]:这行代码计算每个交易日期到最后一个交易日期的差值,并将这个差值保存在新的Diff列中。【例6.11】添加差值“Diff”项目6_RFM客户细分43任务6.4数据准备(16/38)\计算最后一次交易日期以获取客户的最新程度rfmp=rfmp.resetindex()rfmp.head()从数据集中按照“CustomerID”分组,并找到每个客户的最新交易日期。这里的“Diff”是每笔交易日期与当前日期的差值,因此,min()函数的使用表示寻找最近的交易日期,输出结果如表6.5所示。项目6_RFM客户细分44任务6.4数据准备(17/38)|||||-----|------------|-------------------|||CustomerID|Diff||0|12346.0|325days02:33:00||1|12347.0|1days20:58:00|项目6_RFM客户细分45任务6.4数据准备(18/38)|2|12348.0|74days23:37:00||||||-----|------------|-------------------|||CustomerID|Diff||3|12349.0|18days02:59:00|项目6_RFM客户细分46任务6.4数据准备(19/38)|4|12350.0|309days20:49:00|从标准可以看到,已经正确计算了最近交易日期,由于Diff列是一个Datetime对象的day属性,还需要提取Diff中的天数。【例6.12】提取天数\提取'Diff'中的天数rfmp\['Diff'\]=rfmp\['Diff'\].dt.days项目6_RFM客户细分47任务6.4数据准备(20/38)rfmp.head()|||||-----|------------|------|||CustomerID|Diff||0|12346.0|325|项目6_RFM客户细分48任务6.4数据准备(21/38)|1|12347.0|1||2|12348.0|74||3|12349.0|18||4|12350.0|309|从表中可以看出,“Diff”列变为了整数类型。项目6_RFM客户细分49任务6.4数据准备(22/38)【例6.13】合并RFM\合并数据框以得到最终的RFM数据框rfm=pd.merge(rfm,rfmp,on='CustomerID',how='inner')rfm.columns=\['CustomerID','Amount','Frequency','Recency'\]rfm.head()项目6_RFM客户细分50任务6.4数据准备(23/38)通过合并两个数据框(dataframes),得到了最终的RFM(Recency,Frequency,Monetary)数据框。pd.merge()函数用于合并数据框。rfm=pd.merge(rfm,rfmp,on='CustomerID',how='inner'):用于将'rfm'和'rfmp'这两个数据框按照'CustomerID'进行内联接(innerjoin),即只保留两个数据框中'CustomerID'匹配的行。rfm.columns=\['CustomerID','Amount','Frequency','Recency'\]:用于重命名数据框'rfm'的列名。项目6_RFM客户细分51任务6.4数据准备(24/38)新的列名分别为'CustomerID','Amount','Frequency','Recency'。步骤2:异常值处理在进行数据挖掘时,异常值的检测通常有以下两种方式。描述性统计信息【例6.14】描述性统计信息项目6_RFM客户细分52任务6.4数据准备(25/38)\获取数值列的描述性统计信息numericstats=df.describe()numericstats使用describe()方法,会对数据集中的数值列进行统计,主要关注以下几个统计量。最小值(min):异常值通常会远低于正常范围的最小值。项目6_RFM客户细分53任务6.4数据准备(26/38)最大值(max):异常值通常会远高于正常范围的最大值。均值(mean)和中位数(50%):异常值可能会导致均值明显偏离中位数。标准差(std):异常值的存在可能会导致标准差较大,表示数据的离散程度增加。|||||||-------|--------------|---------------|-------------|-------------|项目6_RFM客户细分54任务6.4数据准备(27/38)||CustomerID|Amount|Frequency|Recency||count|4372.000000|4372.000000|4372.000000|4372.000000||mean|15299.677722|1898.459701|93.053294|91.047118||std|1722.390705|8219.345141|232.471608|100.765435||min|12346.000000|-4287.630000|1.000000|0.000000|项目6_RFM客户细分55任务6.4数据准备(28/38)|25%|13812.750000|293.362500|17.000000|16.000000||50%|15300.500000|648.075000|42.000000|49.000000||75%|16778.250000|1611.725000|102.000000|142.000000||max|18287.000000|279489.020000|7983.000000|373.000000|根据提供的统计结果,我们可以从以下几个方面分析异常值。项目6_RFM客户细分56任务6.4数据准备(29/38)消费金额(Amount):该列75%的数据小于或等于1611.72,而最大值却达到了279489.02,这可能也是一个异常值,需要进一步检查。消费频率(Frequency):这一列的最大值为7983,远大于75%的数据(102以下),这可能是一个异常值,可能是某些客户消费频率特别高。最近一次消费(Recency):这一列的最大值为373,远大于75%的数据(142以下),这可能是一个异常值,可能是某些客户长时间没有消费。总的来说,我们在消费金额、消费频率和最近一次消费三个属性中都发现了可能的异常值,需要进一步的检查和处理。【例6.14】异常值可视化分析项目6_RFM客户细分57任务6.4数据准备(30/38)\获取需要绘图的列parameters=rfm.columns\[1:\].tolist()\忽略第一列'CustomerID'\创建一个包含多个子图的画布\遍历每个参数,创建箱线图\显示图形项目6_RFM客户细分58任务6.4数据准备(31/38)通过sns的绘图库绘制了3个特征值的分布箱图,输出结果如下图6.5所示。通过绘图结果显示,和统计性描述性的结果基本一致。为了处理以上异常值(离群值),我们可以设置两个分位,然后将分位以外的值全部删除。【例6.15】删除离群值\为Amount删除(统计)离群值项目6_RFM客户细分59任务6.4数据准备(32/38)Q1=rfm.Amount.quantile(0.05)Q3=rfm.Amount.quantile(0.95)IQR=Q3-Q1\只保留在Q1-1.5IQR到Q3+1.5IQR范围内的值,删除离群值\为Recency删除(统计)离群值项目6_RFM客户细分60任务6.4数据准备(33/38)Q1=rfm.Recency.quantile(0.05)Q3=rfm.Recency.quantile(0.95)IQR=Q3-Q1\只保留在Q1-1.5IQR到Q3+1.5IQR范围内的值,删除离群值\为Frequency删除(统计)离群值项目6_RFM客户细分61任务6.4数据准备(34/38)Q1=rfm.Frequency.quantile(0.05)Q3=rfm.Frequency.quantile(0.95)IQR=Q3-Q1\只保留在Q1-1.5IQR到Q3+1.5IQR范围内的值,删除离群值此段Python代码主要用于删除RFM模型中的统计离群值。项目6_RFM客户细分62任务6.4数据准备(35/38)针对“Amount”(消费金额)列,计算其第一四分位数(Q1)和第三四分位数(Q3),以及四分位距(IQR)。然后,保留在Q1-1.5IQR到Q3+1.5IQR范围内的值,删除超出此范围的离群值。针对“Recency”(最近一次消费)列,同样计算其Q1、Q3和IQR,并删除超出Q1-1.5IQR到Q3+1.5IQR范围的离群值。对“Frequency”(消费频率)列执行相同的操作,删除其离群值。步骤3:数据标准化项目6_RFM客户细分63任务6.4数据准备(36/38)对数据进行标准化缩放。【例6.16】数据标准化\对特性进行缩放rfmdf=rfm.iloc\[:,1:\]\用iloc选择'Amount','Frequency','Recency'三列\实例化项目6_RFM客户细分64任务6.4数据准备(37/38)scaler=StandardScaler()\fittransformrfmdfscaled=scaler.fittransform(rfmdf)\对数据进行标准化处理rfmdfscaled.shape\显示处理后的数据形状数据标准化的主要目的是消除不同特征值之间的量纲影响,使得模型在进行学习的时候,不会因为特征值的绝对数值大小不同,而产生误导。项目6_RFM客户细分65任务6.4数据准备(38/38)通过标准化,可以使得不同的特征具有相同的尺度,便于进行比较和计算,提高模型的精度和稳定性。步骤4:导出RFM为EXCE文件【例6.17】导出RFM\导出RFM为Excel文件rfmdfscaled.toexcel("rfm.xlsx",index=False)项目6_RFM客户细分66任务6.1构建模型步骤1:新建Orange空白文件导入数据;打开Orange软件,新建一个空白的Orange文件,在工作拖入“File”组件。项目6_RFM客户细分67任务6.1构建模型(1/16)步骤1:新建Orange空白文件导入数据打开Orange软件,新建一个空白的Orange文件,在工作拖入“File”组件。双击打开组件对话框,选择在任务6.4中导入的“rfm.xlsx”文件。然后在下方的Columns中,由于第一列CustomerID是无关列,所以单击该行后面的“Role”,将“feature”修改为“meta”,如图6.6所示。步骤2:可视化数据观察在Orange中,可以用简单拖拽的方式进行数据观察。项目6_RFM客户细分68任务6.1构建模型(2/16)分别在组件列表的Visualize(可视化)类别中拖曳“分布图”、“箱线图”以及Data(数据)类别中的“统计特征”到工作流中,并于文件组件进行连接,如图6.7所示。首先来查看“Recency”特征分布图的情况,将分布图对话框中的”BinWidth”(箱体宽度)调整到最小0.1,以显示最全,如图6.8所示。“Recency”特征的分布有以下几个特点:总体分布:分布图显示数据是右偏的(正偏态分布),大部分数据集中在较低的值区域。随着特征值的增加,频率逐渐减少。项目6_RFM客户细分69任务6.1构建模型(3/16)频率分布:左侧有一个非常高的峰值,这表示有很多样本在“Recency”特征值接近于-1的区域。频率随着“Recency”值的增加而迅速下降,之后在较高的“Recency”值区域频率变得相对平稳,但仍保持较低水平。其他两个特征也与“Recency”特征类似,读者自行查看与分析即可。通过查看箱线图与特征统计,所有的值都在正常的范围之内,所以对于模型训练来说已经没有问题。步骤3:可视化K-Means聚类项目6_RFM客户细分70任务6.1构建模型(4/16)为了更好的理解K-Means算法,Orange的Educational(教育类)插件,提供了一个“Interactivek-Means”交互式k-Means的组件,可以直观清晰的查看以上的过程。首先,单击“选项”菜单下的“安装插件”,在插件列表中勾选“Educational”,然后选择安装。安装成功后“Educational”插件中的组件会显示在左侧的组件列表中。拖曳一个“Interactivek-Means”组件到工作流中,与文件连接后,双击打开该组件。项目6_RFM客户细分71任务6.1构建模型(5/16)可以发现,一开始指定了一个随机的“簇心”的位置,通过不断的单击按钮“ReassignMembeership”(重新分配成员),可以发现成员在不断的变换,“簇心”也在不断的更新,一直到“簇心”不变为止,K-Means聚类的过程也完成了。了解了K-Means的原理后,拖曳组件列表中“Unsupervised”(无监督的)类别下的“K均值”组件到工作流中,与“File”组件连接,双击打开后,在”K-均值”对话框中的“NumberofClusters”(聚类数量)选取中的“Fixed”数值输入框中可以输入一个固定值比如3,也可在“From…To”数值输入框中输入一个范围如从2-8。同步的,在右侧查看不同聚类数量的评分结果,如图6.10所示。单击“K-均值”组件对话框的输出按钮,可以查看聚类后的结果,如图6.11所示。项目6_RFM客户细分72任务6.1构建模型(6/16)“Cluster”列表示每个数据点所属的簇(组)。具体来说:簇标签:每个数据点会被分配一个整数标签,表示它属于哪个簇。例如,如果你设定K=3,那么“Cluster”列的值一般是0,1,2,分别表示三个不同的簇,在Orange中用C1、C2、C3表示。簇编号:这些整数标签是K-Means算法根据数据点与簇中心的距离分配的。每个数据点都会被分配到离它最近的那个簇中心。“Silhouette”列表示每个数据点的轮廓系数(SilhouetteCoefficient),用于评估聚类的质量。具体来说:项目6_RFM客户细分73任务6.1构建模型(7/16)轮廓系数的计算:a(i):对于某个数据点i,a(i)是该点到其所在簇中所有其他点的平均距离,即簇内距离。b(i):对于某个数据点i,b(i)是该点到最近的其他簇中所有点的平均距离,即簇间距离。轮廓系数s(i)的计算公式为:轮廓系数的取值范围:轮廓系数的值在-1到1之间。项目6_RFM客户细分74任务6.1构建模型(8/16)接近1:表示数据点被恰当地聚类,距离所在簇中心近,远离其他簇。接近0:表示数据点在两个簇的边界上,距离两簇的中心差不多。接近-1:表示数据点可能被错误地分配到了错误的簇。轮廓系数也可以通过可视化来查看,拖曳组件列表”Vasaulize”(可视化)类别中的“轮廓图”到流程图中,与“K-均值”组件进行连接,双击打开,即可可视化查看轮廓系数。如图6.12所示。项目6_RFM客户细分75任务6.1构建模型(9/16)步骤4:导出聚类结果拖曳组件列表“Data”(数据)类别中的“保存数据”到流程图中,与“K-均值”组件进行连接,双击打开,在弹出的”数据保存”对话框中,单击”Saveas”按钮,在列表中选择“xlsx”格式,即可导出类别到Excel文件中。将Excel文件与原rmf进行合并,即没有进行标准化之前的进行合并,可以在原始数据中查看聚类结果,然后再进行进一步的分析。还可以结合商品购买和聚类结果进行分析等等应用。例如。项目6_RFM客户细分76任务6.1构建模型(10/16)通过K-Means聚类将客户分为高价值客户、一般客户和低价值客户。高价值客户(购买频率高、消费金额大):针对他们提供VIP服务和个性化推荐。一般客户:定期推出促销活动,鼓励更多购买。低价值客户(购买频率低

温馨提示

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

评论

0/150

提交评论