3K-meansclusterK-均值聚类21学习目标理解有监督学习和无监督学习的概念和区别掌握直方图的应用和绘制理解K-均值聚类的原理树立数字化思维课程导入Part01导入与预备知识思考二分别按照性别和兴趣爱好对同学进行分组,可以怎么分组?这两种属性在分组过程中有何不同?课前思考思考一性别和兴趣爱好的填写方式有何不同?为什么会出现这种不同?训练数据无标记信息例如:根据苹果大小、口味、颜色等特征,区分产地种类(事先不知,无标记)聚类训练数据有标记信息例如:已知老用户体征信息和性别(标记信息),根据新用户的体征信息预测性别分类、回归有监督学习无监督学习概念理解商场客户分析Part02案例分析某商场尝试对会员客户进行分析,了解不同类型的客户特征,以便针对不同的会员客户类型制定不同的营销策略,实现精准营销背 景问题一客户基本信息分析,包括客户年龄、年收入、消费积分的分布情况;年龄、年收入与消费积分之间的关系等问题二利用K-均值模型进行聚类分析,对客户进行聚类问题三对聚类结果进行雷达图的可视化分析,探索每类客户的特征了解数据Customer_IDAgeAnnual_IncomeSpending_Score1191539221158132016642316775311740Customer_IDAgeAnnual_IncomeSpending_Score1191539221158132016642316775311740客户数据示例字段说明Customer_ID顾客IDAge年龄Annual_Income年收入(万元)Spending_Score消费积分,范围1-100客户基本信息分析,包括客户年龄、年收入、消费积分的分布情况;年龄、年收入与消费积分之间的关系等。
问题一分析问题一年龄、年收入与消费积分之间的关系:对于变量之间的关系,利用散点图分析客户年龄、年收入、消费积分的分布情况:对于分布情况,利用直方图分析导入数据描述性统计分析查看数据概况,为后续分析作图做准备分布直方图探索客户年龄、年收入、消费积分的分布情况关系散点图分析年龄、年收入与消费积分之间的关系问题一思路分布直方图描述性统计分析导入数据年龄与消费积分关系年收入与消费积分关系关系散点图客户年龄分布图客户年收入分布图消费积分分布图Python中可以利用matplotlib.pyplot模块中的hist函数来绘制直方图对象hist()函数的格式如下:hist(x,bins=None,edgecolor,color)直方图绘制参数说明x数据bins直方图每组端点坐标edgecolor边缘颜色color填充颜色K-均值聚类Part03算法原理利用K-均值模型进行聚类分析,对客户进行聚类问题二分析问题二本案例需要对客户进行聚类,了解不同类型的客户特征由于客户没有已知的分类类型,即分类标签,所以这是一个无监督学习的问题,对于此类问题,可以考虑用K-均值聚类的方法将客户按相似性分为不同的类别聚类:“物以类聚,人以群分”。
聚类就是根据相似度进行样本分类的一种方法,让同类别中的样本有较高的相似度,让不同类别间的样本有较低的相似度,从而将样本分成不同的类别K 均值聚类K-均值算法(K-Means),采用距离作为相似性的度量,即如果两个对象的距离越近,则认为两个对象的相似度越大同簇中样本间距离较近不同簇中样本间距离较远K 均值聚类原始数据随机选取3个点作为初始聚类中心点(质心)计算所有点到3个中心点的距离,将每个点分配到离它最近的中心点所在簇以每个簇的样本坐标平均值作为新的中心点10个点聚类为3类的算法示例过程K 均值聚类以每个簇的样本坐标平均值作为新的中心点计算所有点到3个新的中心点的距离,将每个点重新分配到离它最近的中心点所在簇重复的步骤,直到所有样本所属簇不再发生变化时,聚类结束聚类结果演示网址K 均值演示演示网址二维码:推荐横屏讨论一采用“离中心最远”的质心选择方式,添加不同的数量的质心,得到的聚类效果相同吗?你们认为添加几个质心是恰当的?讨论二采用“随机”的质心选择方式,多运行几次,看看结果是否相同?选择“高斯混合”数据 K-均值对K值的设置敏感 不同的K值,聚类结果不同参考CH指数确定K值CH指数越大代表着簇自身越紧密,簇与簇之间越分散,即更优的聚类结果。
结合图形观察 K值的选择CH指数最大值,K值为6K值取3 K-均值对初始中心点位置敏感第一种初始中心点第二种初始中心点聚类结果聚类结果 初始中心点位置不同,聚类结果可能不同Python中sklearn.cluster模块下的KMeans()函数可以实现K-均值聚类,调用格式如下:KMeans(n_clusters=8,random_state=None,)K-均值聚类的Python实现参数名称说明n_clusters聚类簇数Krandom_state决定初始化中心点的随机种子方法作用fit(x)训练模型,计算K-均值聚类predict(x)预测数据集X中每个样本点所属簇fit_predict(x)训练集模型并预测每个样本点所属簇配套方法:Python中sklearn.metrics模块下的calinski_harabasz_score()函数可以计算CH指数,调用格式如下:calinski_harabasz_score(聚类的数据集,聚类标签)CH指数的Python实现。