《人工智能基础与应用第5章 物以类聚:发现新簇群课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《人工智能基础与应用第5章 物以类聚:发现新簇群课后习题参考答案.docx(6页珍藏版)》请在第一文库网上搜索。
1、第5章物以类聚:发现新簇群课后习题答案一、考考你1 .关于聚类说法正确是一D。A.聚类样本一定要有标签B.应该将所有特征数据作为聚类依据C聚类的k值可以随意指定D.聚类质心就是各簇群特征的平均值2 .下列C聚类性能评价指标在-1,11之间,值越接近1说明聚类效果越好。A.CH分数B.戴维森堡丁指数DBIC.轮廓系数D.inertia3 .k-means模型的_A_参数能保证聚类结果复现。A.random_stateB.initC.maxjterD.a1gorithm4 .衡量聚类效果好坏的主要依据是D。A.各类之间的界限明显B.各样本离各自质心之和最小C.类别之间的协方差越大越好D.同类样本紧
2、促,不同类样本相距远5 .关于RFM模型的应用,说法错误的是3。A.R、F、M是区分客户的三个重要指标B.这三个指标是基于原始数据统计出来的C.在具体场景应用RFM模型时,可以添加其它指标D.训练模型前样本不进行标准化处理也是可以的二、亮一亮1在案例1中用k均值算法对莺尾花进行聚类时,有哪些办法能帮你找到最优的k值?参考答案:(1)尽可能多的获得莺尾花的特征数据进行初步分析,基于特征数据确定种类的有效值作为k的数值。(2)在运行k-means聚类中根据聚类结果对比分析确定最优的k值。2.在案例2的电商用户分类过程中,求各类客户样本的均值有何意义?请举例说明。参考答案:由于聚类前对原始数据进行了
3、标准化处理,所以需要聚类后对质心进行反标准化转换,得到原始均值,方便观察聚类结果和对业务场景的解释。三、帮帮我1. Who1esa1ecustomersdata.csv文件保存有批发商客户数据,前5行数据如下图5.20所示。数据集各属性函数如下。Channe1RegionFreshMi1kGroceryFrozenDetergents-PaperDe1icassen02312669965675612142674133812370579810956817623293177622363538808768424053516784431313265119642216404507178842322615
4、54107198391517775185图5.20批发商客户数据 Channe1:客户渠道,1指酒店类,2指零售类。QRegion:客户所在地区,1指里斯本,2指波尔图,3指其它地区。 Fresh:在新鲜产品上的支出。令Mi1k:在乳制品上的支出。 Grocery:在杂货上的支出。令Frozen:在冷冻产品上的支出。 Detergents_Paper:在清洁剂(纸)上的支出。令De1icassen:在熟食上的支出。请运用k-means聚类算法将这400名批发商客户进行聚类,并试图解释聚类结果。提示:聚类时只考虑后6个特征,因为这6个特征代表客户的进货能力。参考答案:#数据预处理#1.处理异常值
5、在处理异常值之前,先来通过箱线图看看异常值.importseabornassnsimportpandasaspdimportmatp1o(1ib.pyp1otaspitdf=pd.read_csv(rda(aWho1esa1ecustomersdata.csv,sep=,)defget_boxp1ot(data,start,end):fig,ax=p1t.subp1ots(1,end-start,figsize=(24,4)foriinrange(start,end):sns.boxp1ot(y=data(data.co1umnsi,data=data,ax=axi-start)get-box
6、p1ot(df,2,8)解释:可以看到以上6个连续型变量均有异常值,由于k-means算法对异常值较敏感,因此选择剔除它。importnumpyasnpdefdrop_out1ier(data,start,end):foriinrange(start,end):fie1d=data.co1umnsiQ1=np.quanti1e(datae1d,0.25)Q3=np.quanti1e(datafie1d,0.75)deta=(Q3-Q1)*1.5data=data(datafie1d=Q1-deta)&(datafie1d=Q3+deta)returndatade1_df=drop_out1ie
7、r(df,2,8)Print(原有样本容量:0,剔除后样本容量:1).format(df.shape0,de1_df.shapeO)get_boxp1ot(de1_df,2,8)原有样本容量:440.掰除后样本容量:318#2.变量离散化、归一化de1_dfChanne1=de1_df.ChanneI.astype(str)de1_dfRegion=de1_df.Region.astype(str)de1_df=pd.get_dummies(de1_df)foriinrange(6):fie1d=de1_df.co1umnside1_dffie1d=de1_dffie1d.app1y(1amb
8、dax:(x-de1_dffie1d.mean()/de1_df1fie1d.mean()#3.迭代评估聚类的k值fromsk1earn.c1usterimportKMeansK=ranged,10)sse=forkinK:km=KMeans(n_c1usters=k,random-state=10)km.fit(de1_df)sse.append(km.inertia_)p1t.figure(figsize=(8,6)pIt.p1ot(K,sse,-o,a!pha=0.7)p1t.x1abe1(K)p1t.yIabeI(SSE)p1t.show()根据肘部法则,选择K=2,也就是说将客户分成
9、两群.#4.客户分群frompandas.p1ottingimportpara11e1_coordinates#训练模型km=KMeans(n_c1usters=2,random-state=10)centers=km.c1uster_centers_1abe1s=km.1abe1s_customer=pd.DataFrame(,0,:centers0,1:centers1).Tcustomer.co1umns=de1_df.keys()df-median=pd.DataFrame(2:de1_df.median()J).Tcustomer=pd.concat(customer,dmedian
10、)customercategory1=customer,CUSIOmeJ2,median#绘制图像p1t.figure(figsize=(12,6)para11e1_coordinates(customer,category,co1or=(red,b1ue,b1ack)p1t.xticks(rotation=15)从6种产品每年消费支出来看,客户群1在冷冻产品上最高,在洗涤剂和纸制品上最低,而客户群2则在冷冻产品上最低,在洗涤剂和纸制品上最高,且客户群2在6种产品的消费支出均高于中位数水平,因此客户群2为重要客户,客户群1则是一般客户。#5.最终分群结果,将聚类后的标签加入数据集de1-dfc
11、ategory,=Iabe1sde1dfcategory,=np.where(de1_df.category=0,customer-,customer_2,)customer=pd.DataFrame(0,:centersO,1:centers1).Tcustomercategory1=customer_1_center,Hcus1omer_2_centercustomer.co1umns=de1_df.keys()de1_df=pd.concat(de1_df,customer)#对6类产品每年消费水平进行绘制图像df1new=de1_dfFresh,Mi1k,Grocery,Frozen1,Detergen1s-Paper,De1icassen,categoryp1t.figure(figsize=(18,6)para11e1_coordinates(d1new,category,co1or=(red,b1ue,rMagenta,Roya1Biue1)p1t.xticks(rotation=15)p1t.show()通过上图可以看到,最终的聚类效果较理想,其中客户群1(般客户)在图上表现较为密集,代表其数量多,而客户群2(重要客户)在图上则较稀疏,数量较少。