python做谱聚类 python中聚类分析_python聚类分析


前面讲到的线性回归和逻辑回归的数据样本都是确定了Y值的,通俗一点来讲就是:从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。

所以线性回归和逻辑回归都是监督学习

今天要讲的聚类分析是无监督学习,无监督学习就是:输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。

具体区别可以参考:

CSDN-专业IT技术社区-登录blog.csdn.net



下面分享一个聚类分析模型对摩拜单车用户进行分类的案例

数据链接:


https://pan.baidu.com/s/1WGJY-MEE13yj4MEpGJAryApan.baidu.com

提取码:9jpj

问题:基于所给数据,利用Python数据进行聚类分析,对摩拜单车的使用者进行分群。


python做谱聚类 python中聚类分析_线性回归_02


Step1.数据预处理


python做谱聚类 python中聚类分析_聚类_03


1.删除对业务分析没有实际作用的变量

2.删除空值

3.删除与实际情况不符的异常值,例如过大的年龄

4.将类别型变量转换成数字型变量


python做谱聚类 python中聚类分析_聚类_04


1.unique()查询有多少个起始站,发现有许多个,如果是少数说不定有业务意义,如果有很多个的话就删除,另外‘Unnamed:0’(可能是骑行旅程编号),用户ID,自行车编码,起始站名和和编码,终点站名和编码都是对业务分析没有实际作用的变量,可以删除。


python做谱聚类 python中聚类分析_聚类_05


2.


python做谱聚类 python中聚类分析_python做谱聚类_06


空值占比很小,可以删除,得到没有空值的数据

3.


python做谱聚类 python中聚类分析_python聚类分析_07


先用describe对数据进行一个描述统计,因为describe()只能针对数据型变量进行统计,所以这边只会显示birthyear,需要改变其他变量的数据类型。


python做谱聚类 python中聚类分析_聚类_08


tripduration中1,090,这种类型没法直接转变成数据型变量,我们可以先用replace函数把“,”去掉然后再转。


python做谱聚类 python中聚类分析_线性回归_09


python做谱聚类 python中聚类分析_数据_10


age可以直接转,usertype,gender都是类别型变量。


python做谱聚类 python中聚类分析_数据_11


tripduration单位是米,一般最大值比75%位数大三四倍就是异常值,我们这里可以看下超过5000的记录数,年龄可以降到80.


python做谱聚类 python中聚类分析_python聚类分析_12


python做谱聚类 python中聚类分析_python做谱聚类_13


发现骑行距离超过5000米的记录只有25个,可以删除。


python做谱聚类 python中聚类分析_python聚类分析_14


将起始终止时间转换成datatime数据类型,将剩余的类别型变量转换成数据型变量(get_dummies)


python做谱聚类 python中聚类分析_python做谱聚类_15


到这里数据清理完毕。

步骤二:数据标准化

找出合适的特征变量存入X中,并将数据进行标准化。

起始终止时间之差可以得到‘timeduration’,birthyear和age对应关系取其一,usertype和gender是各一对,取其一。得到如下特征变量。


python做谱聚类 python中聚类分析_python聚类分析_16


查看相关性,发现timeduration和tripduration强相关(0.93),选其一。


python做谱聚类 python中聚类分析_聚类_17


将数据存入X,并进行数据标准化。

步骤三:建立聚类模型

1.尝试不同分类的模型拟合

2.分析单变量维度的分群结果

3.使用轮廓系数评估模型效果

4.优化模型


python做谱聚类 python中聚类分析_数据_18


python做谱聚类 python中聚类分析_python做谱聚类_19


先尝试分为3类

对‘gender_male’和'usertype_Subscriber'进行可视化(X,Y都挑0,1变量,比较好观察),理论上有4种结合可能,可视化的结果也很明显得展现了3种类别,分在4个角,说明这两个是比较好的特征变量。

第0组类型是customer,性别都有;

第1组类型是Subscriber,性别为男;

第2组类型是Subscriber,性别为女;


python做谱聚类 python中聚类分析_python做谱聚类_20


groupby同样可以得出一样的结果


python做谱聚类 python中聚类分析_线性回归_21


当聚类个数为3个时,评估模型的效果,轮廓系数为0.47(评分越高,个体与群的距离越近,模型效果越好)

利用“肘”方法找出最佳聚类个数


python做谱聚类 python中聚类分析_python聚类分析_22


快速下降趋于平缓下降的转折点是聚类最好的情况,图中为5时。

步骤四:导出聚类结果,做出业务解读


python做谱聚类 python中聚类分析_线性回归_23


查看5中分群的各自占比,1群最多,012群都是有相当数量的群体,34群只占很小一部分。


python做谱聚类 python中聚类分析_python做谱聚类_24


可以查看一下导出的EXCEL中的内容,如上图

第一列是群组,重点关注每一列的数据,找出绝对值最大的数,如果人群在某个特征变量上数据的绝对值比较大,就说明这个人群在这个特征上有较明显的区分度。

0群是较年长的用户,占比18.7%

1群是男性,会员,年轻,骑行时间短的用户,占比48.3%,是摩拜的核心用户群

2群是女性用户,占比19.8%

3群是非订阅用户,占比3.5%

4群是骑行时间较长的用户,占比9.8%

业务建议:

优先满足核心用户群,1群,猜测该类人群广泛分布于校园,或者刚出校园的年轻工作者,可以在校园中推广骑行活动,通过该群体人数规模大的优势进行品牌宣传扩大品牌影响力。