《机器学习项目开发实战》-课件 11. 项目四 - 任务三_第1页
《机器学习项目开发实战》-课件 11. 项目四 - 任务三_第2页
《机器学习项目开发实战》-课件 11. 项目四 - 任务三_第3页
《机器学习项目开发实战》-课件 11. 项目四 - 任务三_第4页
《机器学习项目开发实战》-课件 11. 项目四 - 任务三_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

无监督学习项目实战-客户市场细分K-means聚类分析CONTENTSOrderNow01任务描述02知识储备03任务实施04任务评价/01任务描述任务描述任务:客户市场细分本次任务要求团队深入调研客户市场细分的实际应用背景,理解本项目对商场、企业捕捉客户需求,实现精准营销的重要性。在此过程中,明确项目的具体需求、目标,并收集整理客户市场行为数据,配置好分析环境,为后续数据分析做好数据准备。/02知识储备K-means工作原理K=41.确定K值2.初始化质心3.分配数据点4.更新质心K-means优缺点简单易懂好实现,原理直观,代码量少,新手能快速上手,大数据友好,计算效率高,扩展性强优点初始值敏感,异常值影响大,适用性差缺点K-means++

VSK-means对比维度K-means算法K-means++算法核心思想随机初始化簇中心,通过迭代重新分配数据点和更新中心,最小化簇内平方和。优化初始簇中心选择,基于距离加权概率选择中心,使初始中心更均匀分布,减少局部最优风险。初始中心选择随机选取K个数据点作为初始簇中心,可能导致中心聚集或偏离真实分布。第一个中心随机选,后续中心按数据点到已有中心的距离概率选择,距离越远选中概率越高。聚类质量聚类结果对初始值敏感,可能因初始中心选择导致簇内紧凑度低、簇间分离度差。簇内平方和降低30%-35%,簇内紧凑度更高,簇间分离度更好,聚类质量更稳定。对数据分布的假设假设簇为球形分布,对非球形簇的处理效果不佳。同样假设簇为球形分布,但通过优化初始中心缓解了部分因分布不规则导致的问题。计算复杂度时间复杂度为O(n×k×i),其中n为样本数,k为簇数,i为迭代次数。初始中心选择阶段时间复杂度为O(n×k),整体复杂度仍为O(n×k×i),但i显著减少。优势1.实现简单,代码量少;

2.计算效率高,适合大规模数据;

3.对凸形分布数据效果好。1.初始化策略更智能,减少对初始值的敏感;

2.聚类结果更稳定,质量更高;

3.收敛速度更快,节省计算资源。劣势1.对初始中心敏感,易陷入局部最优;

2.K值需预设,依赖经验或后续评估;

3.对非球形簇和异常值处理差。1.实现复杂度略高于K-means;

2.仍需预设K值;

3.对极端非球形分布数据效果有限。K值选择随着K增加,组内平方和(WCSS)会下降,但下降速度会从快变慢,像手臂的“肘部”一样出现拐点,拐点对应的K就是最优解。轮廓系数轮廓系数范围在-1到1之间,越接近1说明聚类效果越好。类平均直径簇内距离会减小。绘制不同K值下的平均直径变化图,当K值达到某个点后,进一步增加K值带来的簇内紧密度提升不显著,这个点就是最佳K值。/03任务实施肘部法data_Standard=data[['AnnualIncome(k$)','SpendingScore(1-100)']].apply(lambdax:(x-x.mean())/np.std(x))1fromsklearn.model_selectionimporttrain_test_split2wcss=[]3foriinrange(1,11):4kmeans=KMeans(n_clusters=i,init='k-means++',max_iter=300,n_init=10,random_state=0)5kmeans.fit(data_Standard)6wcss.append(kmeans.inertia_)数据标准化计算WCSS肘部法1plt.plot(range(1,11),wcss)2plt.title('TheElbowMethod')3plt.xlabel('Numberofclusters')4plt.ylabel('WCSS')5plt.show()绘制肘部图轮廓系数1fromsklearn.metricsimportsilhouette_score2K=range(2,11)3score=[]4forkinK:5kmeans=KMeans(n_clusters=k,init='k-means++’)6kmeans.fit(data_Standard)7score.append(silhouette_score(data_Standard,kmeans.labels_,metric='euclidean'))计算轮廓系数轮廓系数1plt.plot(K,score,'r*-')2plt.xlabel('k')3plt.ylabel('SilhouetteCoefficient')4plt.title('SilhouetteCoefficienttoDetermineK')5plt.show()绘制轮廓系数图类平均直径1fromscipy.spatial.distanceimporteuclidean2defcluster_diameter(cluster):3iflen(cluster)<2:4return05max_distance=06foriinrange(len(cluster)):7forjinrange(i+1,len(cluster)):8distance=euclidean(cluster.iloc[i],cluster.iloc[j])9ifdistance>max_distance:10max_distance=distance11returnmax_distance计算簇直径类平均直径1defaverage_diameter(data,labels):2unique_labels=set(labels)3diameters=[]4forlabelinunique_labels:5cluster=data.iloc[labels==label]6diameter=cluster_diameter(cluster)7diameters.append(diameter)8returnnp.mean(diameters)计算类平均直径类平均直径1average_diams=[]2forkinrange(1,11):3kmeans=KMeans(n_clusters=k,init='k-means++',max_iter=300,n_init=10,random_state=0)4kmeans.fit(data_Standard)5labels=kmeans.labels_6avg_diam=average_diameter(data_Standard,labels)7average_diams.append(avg_diam)计算不同K值类平均直径1plt.plot(range(1,11),average_diams)2plt.title('AverageClusterDiametertoDetermineK')3plt.xlabel('k')4plt.ylabel('AverageClusterDiameter')5plt.show()绘制类平均直径图聚类1KM=KMeans(n_clusters=5,init='k-means++',max_iter=300,n_init=10,random_state=0).fit(data_Standard)2data_Standard['KM_result']=KM.labels_3data_Standard.groupby('KM_result').size()1frompandas.plottingimportscatter_matrix2colors=np.array(['red','green','blue','yellow','grey'])3scatter_matrix(data,s=100,alp

温馨提示

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

评论

0/150

提交评论