聚类算法之K均值算法(k-means)的Python实现

Python017

聚类算法之K均值算法(k-means)的Python实现,第1张

聚类分析。我们先从二维空间说起,比如一个组织中的雇佣关系存在四种模式,x轴和y轴分别代表着企业对员工提供的诱因与企业对员工期望的贡献。两个坐标轴划分出了四种雇佣关系,企业对员工提供的诱因与企业对员工期望的贡献两个指标共同可以反映一个企业的员工——组织关系,但在实践中,大量调查结果汇总起来的散点图会因为回答的差异,显现得有一些散乱。这时候,我们可以在每个象限中,对测量的指标在每个维度进行打分,对两个维度的得分进行计算均值,得到点M(xbar,ybar),我们可以根据其他点距离点M的几何距离d,在一个自定义L的范围内归类我们问卷调查中得到的回答,对这个L范围内的点归为一类。其他情境下,比如更多维的情况下,一个研究问题需要用多个指标以整体的方式出现,共同代表研究问题的特征,我们可以使用Kmeans聚类来进行数据的划分。Kmeans的思想是,将数据划分为指定的k个簇,簇的中心点由各个簇样本均值计算所得。对于指定的k个簇,簇内样本越相似,聚类效果越好。他的思想和OLS很相近,目的是簇内样本的离差平方和J达到最小。关于最佳k值的确定,因为随着簇数量增加,簇中样本量越来越少,簇内离差平方和J也会越来越小,J的拐点,簇内离差平方和突然减小的点,就是J对各个子簇中心求导为0的点,就是最佳的k值。对于一些我们可以直观分辨种类的情况,这里我引用了一个关于鸢尾花种类的数据