专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

基于Kmeans聚类算法进行客户人群分析

  本文分享自华为云社区《基于Kmeans聚类算法进行客户人群分析云社区华为云》,作者:HWCloudAI。实验目标掌握如何通过机器学习算法进行用户群体分析;掌握如何使用pandas载入、查阅数据;掌握如何调节Kmeans算法的参数,来控制不同的聚类中心。案例内容介绍
  在本案例中,我们使用人工智能技术的聚类算法去分析超市购物中心客户的一些基本数据,把客户分成不同的群体,供营销团队参考并相应地制定营销策略。
  俗话说,物以类聚,人以群分,聚类算法其实就是将一些具有相同内在规律或属性的样本划分到一个类别中,算法的更多理论知识可参考此视频。
  我们使用的数据集是超市用户会员卡的基本数据以及根据购物行为得出的消费指数,总共有5个字段,解释如下:CustomerID:客户IDGender:性别Age:年龄AnnualIncome(k):年收入SpendingScore(1100):消费指数注意事项如果你是第一次使用JupyterLab,请查看《ModelAtrsJupyterLab使用指导》了解使用方法;如果你在使用JupyterLab过程中碰到报错,请参考《ModelAtrsJupyterLab常见问题解决办法》尝试解决问题。实验步骤1。准备源代码和数据
  这步准备案例所需的源代码和数据,相关资源已经保存在OBS中,我们通过ModelArtsSDK将资源下载到本地,并解压到当前目录下。解压后,当前目录包含data和src两个目录,分别存有数据集和源代码。importosfrommodelarts。sessionimportSessionifnotos。path。exists(kmeanscustomersegmentation):sessionSession()session。downloaddata(bucketpathmodelartslabsbj4v2courseaiinaction2021machinelearningkmeanscustomersegmentationkmeanscustomersegmentation。zip,path。kmeanscustomersegmentation。zip)使用tar命令解压资源包os。system(unzip。kmeanscustomersegmentation。zip)Successfullydownloadfilemodelartslabsbj4courseaiinaction2021machinelearningkmeanscustomersegmentationkmeanscustomersegmentation。zipfromOBStolocal。kmeanscustomersegmentation。zip2。导入工具库
  matplotlib和seaborn是Python绘图工具,pandas和numpy是矩阵运算工具。
  此段代码只是引入Python包,无回显(代码执行输出)。!pipinstallnumpy1。16。0importnumpyasnplinearalgebraimportpandasaspddataprocessing,CSVfileIO(e。g。pd。readcsv)importmatplotlib。pyplotaspltimportseabornassnsfromsklearn。clusterimportKMeansimportwarningsimportoswarnings。filterwarnings(ignore)Requirementalreadysatisfied:numpy1。16。0inhomemauseranaconda3envsXGBoostSklearnlibpython3。6sitepackages〔33mYouareusingpipversion9。0。1,howeverversion21。1。3isavailable。Youshouldconsiderupgradingviathepipinstallupgradepipcommand。〔0m3。数据读取
  使用pandas。readexcel(filepath)方法读取notebook中的数据文件。filepath:数据文件路径dfpd。readcsv(。kmeanscustomersegmentationdataMallCustomers。csv)4。展示样本数据
  执行这段代码可以看到数据集的5个样本数据df。head()
  执行这段代码可以看到数据集的维度df。shape(200,5)5。展示各个字段的统计值信息
  调用pandas。DataFrame。describe方法,可以看到各个特征的统计信息,包括样本数、均值、标准差、最小值、14分位数、12分位数、34分位数和最大值。df。describe()
  6。展示各个字段的数据类型
  pandas。DataFrame。dtypes()方法可以展示各个字段的类型信息。
  可以看到每个字段的类型信息。df。dtypesCustomerIDint64GenderobjectAgeint64AnnualIncome(k)int64SpendingScore(1100)int64dtype:object
  查看是否有数据缺失,如果有,则需要填补。
  实验中使用的这份数据很完善,没有任何一个属性的值为null,因此统计下来,null值的数量都是0df。isnull()。sum()CustomerID0Gender0Age0AnnualIncome(k)0SpendingScore(1100)0dtype:int647。展示主要属性的数量分布
  这段代码使用matplotlib绘制了数据中三个主要属性的统计直方图,包含年龄、收入、消费指数。
  可以看到三张统计直方图,形状都与正态分布类似,说明数据量足够,数据抽样的分布也比较理想。plt。style。use(fivethirtyeight)plt。figure(1,figsize(15,6))n0forxin〔Age,AnnualIncome(k),SpendingScore(1100)〕:n1plt。subplot(1,3,n)plt。subplotsadjust(hspace0。5,wspace0。5)sns。distplot(df〔x〕,bins20)plt。title(Distplotof{}。format(x))plt。show()
  8。展示男、女客户数量的分布
  这段代码使用matplotlib绘制条状图,展示男、女样本数量的分布。
  可以看到一张条状图。plt。figure(1,figsize(15,5))sns。countplot(yGender,datadf)plt。show()
  9。观察不同属性之间的关系
  展示任意两个属性之间的统计关系图。
  此段代码执行后,会有9张统计图,展示了任意两个属性之间的统计关系。plt。figure(1,figsize(15,7))n0forxin〔Age,AnnualIncome(k),SpendingScore(1100)〕:foryin〔Age,AnnualIncome(k),SpendingScore(1100)〕:n1plt。subplot(3,3,n)plt。subplotsadjust(hspace0。5,wspace0。5)sns。regplot(xx,yy,datadf)plt。ylabel(y。split()〔0〕y。split()〔1〕iflen(y。split())1elsey)plt。show()
  此段代码执行后,会有1张统计图,以性别为参照,展示了年龄和收入之间的对应统计关系plt。figure(1,figsize(15,6))forgenderin〔Male,Female〕:plt。scatter(xAge,yAnnualIncome(k),datadf〔df〔Gender〕gender〕,s200,alpha0。5,labelgender)plt。xlabel(Age),plt。ylabel(AnnualIncome(k))plt。title(AgevsAnnualIncomew。r。tGender)plt。legend()plt。show()
  此段代码执行后,会有1张统计图,以性别为参照,展示了收入和消费指数之间的对应统计关系plt。figure(1,figsize(15,6))forgenderin〔Male,Female〕:plt。scatter(xAnnualIncome(k),ySpendingScore(1100),datadf〔df〔Gender〕gender〕,s200,alpha0。5,labelgender)plt。xlabel(AnnualIncome(k)),plt。ylabel(SpendingScore(1100))plt。title(AnnualIncomevsSpendingScorew。r。tGender)plt。legend()plt。show()
  10。观察不同性别的客户的数据分布
  观察不同性别的客户的数据,在年龄、年收入、消费指数上的分布。
  此段代码执行后,会有六幅boxplot图像。plt。figure(1,figsize(15,7))n0forcolsin〔Age,AnnualIncome(k),SpendingScore(1100)〕:n1plt。subplot(1,3,n)plt。subplotsadjust(hspace0。5,wspace0。5)sns。violinplot(xcols,yGender,datadf,paletteBlues)sns。swarmplot(xcols,yGender,datadf)plt。ylabel(Genderifn1else)plt。title(BoxplotsSwarmplotsifn2else)plt。show()
  11。使用Kmeans对数据进行聚类
  根据年龄和消费指数进行聚类和区分客户。
  我们使用110个聚类中心进行聚类。(此段代码无输出)AgeandspendingScoreX1df〔〔Age,SpendingScore(1100)〕〕。iloc〔:,:〕。valuesinertia〔〕forninrange(1,11):algorithm(KMeans(nclustersn,initkmeans,ninit10,maxiter300,tol0。0001,randomstate111,algorithmelkan))algorithm。fit(X1)inertia。append(algorithm。inertia)
  观察10次聚类的inertias,并以如下折线图进行统计。
  inertias是KMeans模型对象的属性,它作为没有真实分类结果标签下的非监督式评估指标。表示样本到最近的聚类中心的距离总和。值越小越好,越小表示样本在类间的分布越集中。
  可以看到,当聚类中心大于等于4之后,inertias的变化幅度显著缩小了。plt。figure(1,figsize(15,6))plt。plot(np。arange(1,11),inertia,o)plt。plot(np。arange(1,11),inertia,,alpha0。5)plt。xlabel(NumberofClusters),plt。ylabel(Inertia)plt。show()
  我们使用4个聚类中心再次进行聚类。(此段代码无输出)algorithm(KMeans(nclusters4,initkmeans,ninit10,maxiter300,tol0。0001,randomstate111,algorithmelkan))algorithm。fit(X1)labels1algorithm。labelscentroids1algorithm。clustercenters
  我们把4个聚类中心的聚类结果,以下图进行展示。横坐标是年龄,纵坐标是消费指数,4个红点为4个聚类中心,4块不同颜色区域就是4个不同的用户群体。h0。02xmin,xmaxX1〔:,0〕。min()1,X1〔:,0〕。max()1ymin,ymaxX1〔:,1〕。min()1,X1〔:,1〕。max()1xx,yynp。meshgrid(np。arange(xmin,xmax,h),np。arange(ymin,ymax,h))Zalgorithm。predict(np。c〔xx。ravel(),yy。ravel()〕)plt。figure(1,figsize(15,7))plt。clf()ZZ。reshape(xx。shape)plt。imshow(Z,interpolationnearest,extent(xx。min(),xx。max(),yy。min(),yy。max()),cmapplt。cm。Pastel2,aspectauto,originlower)plt。scatter(xAge,ySpendingScore(1100),datadf,clabels1,s200)plt。scatter(xcentroids1〔:,0〕,ycentroids1〔:,1〕,s300,cred,alpha0。5)plt。ylabel(SpendingScore(1100)),plt。xlabel(Age)plt。show()
  根据年收入和消费指数进行聚类和区分客户。
  我们使用110个聚类中心进行聚类。(此段代码无输出)AnnualIncomeandspendingScoreX2df〔〔AnnualIncome(k),SpendingScore(1100)〕〕。iloc〔:,:〕。valuesinertia〔〕forninrange(1,11):algorithm(KMeans(nclustersn,initkmeans,ninit10,maxiter300,tol0。0001,randomstate111,algorithmelkan))algorithm。fit(X2)inertia。append(algorithm。inertia)
  观察10次聚类的inertias,并以如下折线图进行统计。
  可以看到,当聚类中心大于等于5之后,inertias的变化幅度显著缩小了。plt。figure(1,figsize(15,6))plt。plot(np。arange(1,11),inertia,o)plt。plot(np。arange(1,11),inertia,,alpha0。5)plt。xlabel(NumberofClusters),plt。ylabel(Inertia)plt。show()
  我们使用5个聚类中心再次进行聚类。(此段代码无输出)algorithm(KMeans(nclusters5,initkmeans,ninit10,maxiter300,tol0。0001,randomstate111,algorithmelkan))algorithm。fit(X2)labels2algorithm。labelscentroids2algorithm。clustercenters
  我们把5个聚类中心的聚类结果,以下图进行展示。横坐标是年收入,纵坐标是消费指数,5个红点为5个聚类中心,5块不同颜色区域就是5个不同的用户群体。h0。02xmin,xmaxX2〔:,0〕。min()1,X2〔:,0〕。max()1ymin,ymaxX2〔:,1〕。min()1,X2〔:,1〕。max()1xx,yynp。meshgrid(np。arange(xmin,xmax,h),np。arange(ymin,ymax,h))Z2algorithm。predict(np。c〔xx。ravel(),yy。ravel()〕)plt。figure(1,figsize(15,7))plt。clf()Z2Z2。reshape(xx。shape)plt。imshow(Z2,interpolationnearest,extent(xx。min(),xx。max(),yy。min(),yy。max()),cmapplt。cm。Pastel2,aspectauto,originlower)plt。scatter(xAnnualIncome(k),ySpendingScore(1100),datadf,clabels2,s200)plt。scatter(xcentroids2〔:,0〕,ycentroids2〔:,1〕,s300,cred,alpha0。5)plt。ylabel(SpendingScore(1100)),plt。xlabel(AnnualIncome(k))figplt。gcf()ifnotos。path。exists(results):os。mkdir(results)创建本地保存路径plt。savefig(resultsclusters。png)保存结果文件至本地plt。show()
  至此,本案例完成。
  点击下方,第一时间了解华为云新鲜技术
  华为云博客大数据博客AI博客云计算博客开发者中心华为云

与宁德时代深度绑定的西典新能一荣俱荣,一损易损IPO观察得益于新能源汽车行业的快速发展,资本市场诞生了诸如亿纬锂能宁德时代这样的大白马股。而随着行业的逐渐成熟,一些产业链上的中小企业也纷纷竞逐资本市场。1月13日,苏州西典新能源电气股份满江红真是岳飞写的么?满江红是由张艺谋执导,沈腾易烊千玺张译雷佳音岳云鹏王佳怡领衔主演,潘斌龙余皑磊主演,郭京飞欧豪友情出演,魏翔张弛黄炎特别出演,许静雅蒋鹏宇林博洋飞凡任思诺陈永胜出演的悬疑喜剧电影。强化产业链福建打造经济增长新引擎央视网消息(新闻联播)新的一年,福建加快实施创新驱动发展战略,构建现代化产业体系,打造实体经济增长新引擎,推进高质量发展迈上新台阶。春节后开工首日,福建一批重大项目开工签约,并确定观点大众集团CFO2026年后,电动汽车将给大众带来丰厚回报文懂车帝原创魏微懂车帝原创行业1月30日,据外媒报道,大众汽车集团首席财务官ArnoAntlitz近日在采访中表示,大众集团未来两到三年内,在软件和电动汽车技术方面的投资将达到峰值开展消防安全检查助力企业复工复产春节过后,各企业生产经营单位陆续复工复产。为切实加强企业消防安全管理,防止消防安全事故发生,近日,全市各级消防部门深入辖区企业九小场所进行帮扶指导,助力企业安全复工复产。连日来,全狂飙演员手机真相了!华为手机是工作,苹果手机是生活?不知道看了电视剧狂飙没有,最近很火,演员班底也都是老戏骨有张颂文张译,李健,高叶,贾冰,李一桐,石兆琪,张志坚,演技在线5星演技,不过作为科技圈职业病犯了,就像挖掘他们用的什么手机官方回应多辆油车占充电位停车被掰车牌网友凭啥不能停?1月29日,江苏南京,有网友发视频称一停车场内,多辆油车占用电车充电位停车被掰车牌。视频中可见,多辆汽车在充电桩处停放,车牌均被人掰弯。对此,当地派出所工作人员回应已收到相关问题反撒贝宁一家四口罕见露面,带外国妻子参加庙会,穿着朴素显低调近日,有许多网友在社交平台上晒出在武汉园博园园区偶遇央视知名主持人撒贝宁一家四口的画面,就连该园区的官方账号也是晒出撒贝宁一家人逛庙会的画面,并且还配文称欢迎撒老师!一时间引来众多当李娜与孙俪同穿西装,终于明白运动员和演员的差别,和年龄无关对于现代女性而言,西装是衣柜当中必不可少的一款服饰。相对于充满女人味的裙装而言,西装或者是西装套装,呈现出来的气场更加强大,更加符合职场女性的气场。以往大家对于传统的西装,可能存在网友在临朐县发现了两个疑似化石图片提供等待(上图是在临朐县山旺镇附近的山上拍的。众所周知,山旺有化石地质公园,在那个地方发现这种东西并不奇怪,这个图案是在青石上,这就很有意思了。)第二个类似海螺的化石是在临朐县谭嗣同行刑前,妻子哭着说我们还没有孩子,他的回答让人佩服中国为国流血第一士。梁启超称谭嗣同众所周知,甲午中日战争过后民族危机逐渐加重,在此情况下出现了一批主张维新变法救亡图存的爱国人士,而谭嗣同就是其中一位主要代表。他是戊戌六君子之一,
飙上热搜!茅台大规模招人,长跑进4分30秒才算合格!人均年薪13万中国基金报记者文景今日,茅台大规模招聘人均年薪13万冲上热搜。据悉,这是2022年贵州茅台第二次大规模招聘。除了人均年薪约13万,此次招聘更吸入眼球的还有长跑进4分30秒的体能测试弘扬工匠精神,推动制造业高质量发展来源新华日报原标题弘扬工匠精神,推动制造业高质量发展习近平总书记强调我国经济要靠实体经济作支撑,这就需要大量专业技术人才,需要大批大国工匠。匠心聚,百业兴。当今世界,综合国力的竞争男科医生教你如何在家自测精子质量男性精子质量,一直是检测男性生育力的标准,尤其是对想要宝宝的男性来讲,了解自己的精子质量非常重要。那么如何判断男性的精子质量是好是坏呢?除了来生殖科进行专业的精液检查,其实男同胞们曾国藩古之成大事者,规模远大与综观密微,二者阙一不可曾国藩古之成大事者,规模远大与综观密微,二者阙一不可。规模远大与综观密微的内核是什么呢?是一个战术的一体两面。决战点都是彼竭我盈,故克之以我越多时间对敌越少时间我党喜欢打歼灭战。为理财市场新观察丨今年前6个月绿色债券发行规模同比几近翻倍未来有望保持高速发展央广网北京7月4日消息(记者唐婧)据中央广播电视总台经济之声天下财经报道,今年以来,我国绿色债券市场快速发展,上半年绿色债券发行规模合计约4000亿元,和去年上半年同期相比,增长911年小伙被武汉大学录取,上学4年后蒙了,学校没录取你啊执笔李白兔2011年高考结束后,张鹏收到了武汉大学的录取通知书,通知书上说他被该校金融专业录取了,让他于当年9月15号到18号去学校报到入学。这武汉大学,可是一所了不得的高校,直属两场比赛狂进187球!非洲4队涉嫌踢假球遭调查有人认罪有人扮无辜当地时间7月5日,根据BBC的报道,塞拉利昂足协对两场比赛展开了调查。这两场比赛总共产生了187粒进球,几乎震惊了全世界。很显然,这两场比赛有着很大的假球嫌疑。这两场第二级别联赛的雪糕刺客冲上热搜!平价食品变成刺客,背后藏着怎样的本质?继雪糕刺客冲上热搜后,网友们开始接力分享自己的被刺经历。网传,上海一女子逛商场时,遭遇到各种意想不到的刺客6颗话梅128元2个桃子92元等,真是让人防不胜防。要说现在的雪糕刺客话梅夏日必看电影榜推荐五大必看电影1。肖申克的救赎假如你被判终生监禁,你会不会绝望至死这部电影给了你答案,自由有两种一种是肉体的自由,一种是灵魂的自由,我们更需要灵魂的自由。监狱里的人们哭着喊着想要自由7月已定档的6部电视剧,部部精彩好看,看看有没有你期待的剧?随着梦华录的大结局,大家又开始寻找下一部新的电视剧,到了7月,也有许多新的电视剧即将上映,不如一起来看看有哪些电视剧已经定档了?星汉灿烂定档7。5这是由吴磊赵露思领衔主演,郭涛曾黎同样演村妇,把巩俐和赵丽颖放在一起看,差别就出来了幸福到万家最近可太火了。据灯塔数据,这部剧不仅仅首播收视冲顶,其市占率更是比排名二三位电视剧之和还多。赵丽颖的何幸福,刘威的村支书,都在社媒上掀起了热烈讨论。其实幸福到万家,本身就
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网