python数据分析-聚类分析(转载)

Python018

python数据分析-聚类分析(转载),第1张

聚类分析是一类将数据所对应的研究对象进行分类的统计方法。这一类方法的共同特点是,事先不知道类别的个数与结构;进行分析的数据是表明对象之间的相似性或相异性的数据,将这些数据看成对对象“距离”远近的一种度量,将距离近的对象归入一类,不同类对象之间的距离较远。

[if !supportLineBreakNewLine]

[endif]

聚类分析根据对象的不同分为Q型聚类分析和R型聚类分析,其中,Q型聚类是指对样本的聚类,R型聚类是指对变量的聚类。本节主要介绍Q型聚类。

一、距离和相似系数

1.1 、距离 在聚类过程中,相距较近的样本点倾向于归为一类,相距较远的样本点应归属于不同的类。最常用的是Minkowski距离。当各变量的单位不同或变异性相差很大时,不应直接采用Minkowski距离,而应先对各变量的数据做标准化处理,然后用标准化后的数据计算距离。使用SciPy库spatial模块下的distance子模块可以计算距离,使用该子模块下的pdist函数可以计算n维空间中观测值之间的距离,其语法格式如下:

获取更多知识,前往前往我的wx ————公z号 (程式解说)

原文来自 https:// https://mp.weixin.qq.com/s/ZB1V8NZHJLfKFgIJgiRxOw

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

K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。

通常,人们根据样本间的某种距离或者相似性来定义聚类,即把相似的(或距离近的)样本聚为同一类,而把不相似的(或距离远的)样本归在其他类。

所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。

k-means算法是一种很常见的聚类算法,它的基本思想是:通过迭代寻找k个聚类的一种划分方案,使得用这k个聚类的均值来代表相应各类样本时所得的总体误差最小。

看起来还不错

分析一个公司的客户分类,这样可以对不同的客户使用不同的商业策略,或是电子商务中分析商品相似度,归类商品,从而可以使用一些不同的销售策略,等等。