目录

1、分层聚类算法

2、方法

3、分析步骤

4、案例

1、分层聚类算法

层次聚类算法又称为树聚类算法,它根据数据之间的距离,透过一种层次架构方式,反复将数据

进行聚合,创建一个层次以分解给定的数据集。

2、方法

01 聚类方法

linkage=scipy.cluster.hierarchy.linkage(data,method='single')

data  训练样本

method 类距离的计算公式:

1、single l两个类之间最短距离的点的距离

2、complete 两个类之间最长距离的点的距离

3、centroid 两个所有点的中点的距离

02 层次聚类绘图

scipy.cluster.hierarchy.dendrogram(linkage)

linkage    层次聚类的结果

03 层次聚类分类方法

scipy.cluster.hierarchy.fcluster(linkage,n,criterion='maxclust')

linkage   层次聚类的结果

n         要聚类的个数

criterion 划分方法,使用maxclust,最大划分法

3、分析步骤

01 计算每两个点距离的平方

计算公式:也就是两个点距离的平方。

02 找出他们之间的最近距离进行合并

两点的均值作为新值,归为一类

03 重新计算新生成的这个类与各个旧类之间的相似度

04 重复胡2和3的步骤

4、案例

import pandas as pd

import matplotlib.pyplot as plt

data=pd.read_csv('D:\\DATA\\pycase\\7.1\\data.csv')

# 提取关键特征 data.columns

fColumns=[ '工作日上班时电话时长', '工作日下半时电话时长', '周末电话时长', '国际电话时长', '总电话时长',

'平均每次通话时长']

# 导入距离计算公式,并且进行训练数据

import scipy.cluster.hierarchy as hcluster

linkage=hcluster.linkage(

data[fColumns],

method='centroid')

# 查看层次聚类的结果

hcluster.dendrogram(linkage)

# 仅仅查看其中一部分的数据,这里查看12个数据

hcluster.dendrogram(

linkage,

truncate_mode='lastp',

p=12,

leaf_font_size=12.

)

# 进行层次聚类

pTarget=hcluster.fcluster(

linkage,3,

criterion='maxclust')

# 对样本量进行统计交叉

pd.crosstab(pTarget,pTarget)

# 通过PCA对数据进行降维

from sklearn.decomposition import PCA

pca_2=PCA(n_components=2)

data_pca=pca_2.fit_transform(data[fColumns])

# 转化为数据框

data_pca_2=pd.DataFrame(data_pca)

# 绘图

plt.scatter(

data_pca_2[0],

data_pca_2[1],

c=pTarget)

# 绘制每个数据特征的影响和表现

# 3 定义空的数据框

dMean=pd.DataFrame(columns=fColumns+['分类'])

data_gb=data[fColumns].groupby(pTarget)

i=0;

for g in data_gb.groups:

rMean=data_gb.get_group(g).mean()

rMean['分类']=g

dMean=dMean.append(rMean,ignore_index=True)

subData=data_gb.get_group(g)

for column in fColumns:

i=i+1

p=plt.subplot(3,5,i)

p.set_title(column)

p.set_ylabel(str(g)+"分类")

plt.hist(subData[column],bins=20)

# 绘制折线图data.columns

pTarget=pTarget-1 # 下面绘图从0开始绘制

r=data[['工作日上班时电话时长', '工作日下半时电话时长', '周末电话时长', '国际电话时长']]

r.index=data.客户编号

r['聚类类别']=pTarget

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

#有中文出现的情况,需要u'内容'

style=['ro-','go-','bo-']

fColumns2=[ '工作日上班时电话时长', '工作日下半时电话时长', '周末电话时长', '国际电话时长']

xlabels=fColumns2

# # %matplotlib qt 弹窗

k=3

for i in range(k): #注意作图、做出不同样式

plt.figure()

tmp=r[r[u'聚类类别']==i].iloc[:,:4] # 提取每一类

for j in range(len(tmp)):

plt.plot(range(1,5),tmp.iloc[j],style[i])

plt.xticks(range(1,5),xlabels,rotation=20) #坐标标签

plt.subplots_adjust(bottom=0.15) # 调整底部

plt.savefig(u'%s%s,png'%('D:\\DATA\\pycase\\7.1\\scipy',i)) #保存图片

python分层聚类集群合并_24、python分层聚类案例(scipy方法)相关推荐

  1. python搭建分布式集群_利用python的dask搭建分布式集群

    一.dask介绍 优势:dask内部自动实现了分布式调度.无需用户自行编写复杂的调度逻辑和程序:通过调用简单的方法就可以进行分布式计算.并支持部分模型的并行化处理:内部实现的分布式算法:xgboost ...

  2. 《Pyflink》Flink集群安装,Python+Flink调研

    Flink集群安装,Python+Flink调研 Flink集群部署 下载对应版本安装包:https://flink.apache.org/downloads.html 实验环境为hadoop2.7, ...

  3. Redis数据库搭建集群(集群概念、redis集群、搭建集群(配置机器1、2、创建集群、数据操作验证)、Python与redis集群交互)

    1. 集群的概念 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性和可缩放性. ...

  4. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  5. python操作redis集群_python操作redis集群

    strictRedis对象方法用于连接redis 指定主机地址,port与服务器连接,默认db是0,redis默认数据库有16个,在配置文件中指定database 16 上代码 1.对redis的单实 ...

  6. 本地Spark连接远程集群Hive(Scala/Python)

    精选30+云产品,助力企业轻松上云!>>> 点击蓝色"大数据每日哔哔"关注我 加个"星标",第一时间获取大数据架构,实战经验 摘要:本地Spa ...

  7. python 操作redis集群

    python 操作redis集群 一.连接redis集群 python的redis库是不支持集群操作的,推荐库:redis-py-cluster,一直在维护.还有一个rediscluster库,看Gi ...

  8. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  9. python搭建分布式集群_Spark完全分布式集群搭建【Spark2.4.4+Hadoop3.2.1】

    一.安装Linux 需要:3台CentOS7虚拟机 注意: 虚拟机的网络设置为NAT模式,NAT模式可以在断网的情况下连接上虚拟机而桥架模式不行! 二.设置静态IP 跳转目录到: 修改IP设置: 备注 ...

最新文章

  1. ORACLE百万记录SQL语句优化技巧
  2. Hadoop 在关机重启后,namenode启动报错
  3. Windows系统帮助中心程序的0day漏洞
  4. 红米手机停在机器人这里_iQOO Z1和红米K30 至尊纪念版,谁更值得选择?
  5. 无锁数据结构三:无锁数据结构的两大问题
  6. IOS UI开发基础之超级猜图完整版本-08
  7. 数据库设计方法学概述
  8. linux 安装rpm包时遇到error:Failed dependencies解法方法
  9. 【深度学习】CNN模型的可视化-1
  10. 步步为营VS 2008 + .NET 3.5(2) - VS 2008新特性之JavaScript Intellisense and Debugging
  11. 64位win10安装不了64位java(点了安装没反应)
  12. CAN协议要点及车辆CAN协议破解
  13. 俄亥俄大学计算机科学专业,北俄亥俄大学专业都有哪些呢?了解一下!
  14. 从普通大专到阿里只用了8个月,我是如何在迷茫期后面试阿里拿到Offer,定级阿里P7的?
  15. 新媒体下旅游目的地营销研究――以安徽省灵璧县为例
  16. C/C++蓝桥杯三升序列
  17. 立冬、小雪、凛冬将至:如何理解美国科技企业裁员潮?
  18. 机器学习系列(一)—— 绪言
  19. 2021年江苏高考生物成绩查询,2021年江苏省高考生物考试说明.docx
  20. CSM(Certified Scrum Master) 敏捷认证是什么?

热门文章

  1. WinDBg定位asp.net mvc项目异常崩溃源码位置
  2. 万字长文,带你彻底理解EF Core5的运行机制,让你成为团队中的EF Core专家
  3. .NET 云原生架构师训练营(模块二 基础巩固 REST RESTful)--学习笔记
  4. BeetleX之Websocket协议分析详解
  5. 一个有趣的问题, 你知道SqlDataAdapter中的Fill是怎么实现的吗
  6. Asp.Net Core Blazor之容器部署
  7. 【半译】两个gRPC的C#库:grpc-dotnet vs Grpc.Core
  8. ASP.NET Core分布式项目实战(第三方ClientCredential模式调用)--学习笔记
  9. dotnet Blazor 用 C# 控制界面行为
  10. 优秀的程序员是那种过单行线马路都要往两边看的人