# -*- coding: utf-8 -*-
'''
Created on 2018年1月25日
@author: Jason.F
@summary: 无监督聚类学习-层次聚类(hierarchical clustering),自下向上的凝聚和自顶向下的分裂两种方法。
'''
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial.distance import pdist,squareform
from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import dendrogram
from sklearn.cluster import AgglomerativeClustering
np.random.seed(123)
variables = ['X','Y','Z']
labels=['ID_0','ID_1','ID_2','ID_3','ID_4']
X=np.random.random_sample([5,3])*10
#层次聚类树
df = pd.DataFrame(X,columns=variables,index=labels)
print (df)
#计算距离关联矩阵,两两样本间的欧式距离
#row_dist = pd.DataFrame(squareform(pdist(df,metric='euclidean')),columns=labels,index=labels)
#print (row_dist)
#print (help(linkage))
row_clusters = linkage(pdist(df,metric='euclidean'),method='complete')#使用抽秘籍距离矩阵
#row_clusters = linkage(df.values,method='complete',metric='euclidean')
print (pd.DataFrame(row_clusters,columns=['row label1','row label2','distance','no. of items in clust.'],index=['cluster %d'%(i+1) for i in range(row_clusters.shape[0])]))
#层次聚类树
row_dendr = dendrogram(row_clusters,labels=labels)
plt.tight_layout()
plt.ylabel('Euclidean distance')
plt.show()
#层次聚类热度图
fig =plt.figure(figsize=(8,8))
axd =fig.add_axes([0.09,0.1,0.2,0.6])
row_dendr = dendrogram(row_clusters,orientation='right')
df_rowclust = df.ix[row_dendr['leaves'][::-1]]
axm = fig.add_axes([0.23,0.1,0.6,0.6])
cax = axm.matshow(df_rowclust,interpolation='nearest',cmap='hot_r')
axd.set_xticks([])
axd.set_yticks([])
for i in axd.spines.values():i.set_visible(False)
fig.colorbar(cax)
axm.set_xticklabels(['']+list(df_rowclust.columns))
axm.set_yticklabels(['']+list(df_rowclust.index))
plt.show()#凝聚层次聚类,应用对层次聚类树剪枝
ac=AgglomerativeClustering(n_clusters=2,affinity='euclidean',linkage='complete')
labels = ac.fit_predict(X)
print ('cluster labels:%s'%labels)

结果:

             X         Y         Z
ID_0  6.964692  2.861393  2.268515
ID_1  5.513148  7.194690  4.231065
ID_2  9.807642  6.848297  4.809319
ID_3  3.921175  3.431780  7.290497
ID_4  4.385722  0.596779  3.980443row label1  row label2  distance  no. of items in clust.
cluster 1         0.0         4.0  3.835396                     2.0
cluster 2         1.0         2.0  4.347073                     2.0
cluster 3         3.0         5.0  5.899885                     3.0
cluster 4         6.0         7.0  8.316594                     5.0
cluster labels:[0 1 1 0 0]

【Python-ML】SKlearn库层次聚类凝聚AgglomerativeClustering模型相关推荐

  1. 【Python-ML】SKlearn库密度聚类DBSCAN模型

    # -*- coding: utf-8 -*- ''' Created on 2018年1月25日 @author: Jason.F @summary: 无监督聚类学习-基于密度 空间的聚类算法(De ...

  2. Python安装sklearn库时出现异常:ERROR: Could not install packages due to an EnvironmentError: [Errno 2]

    文章目录 一.问题描述 二.问题解决 一.问题描述 今天在学习python机器学习时,需要安装python的sklearn库,在安装的过程中出现了以下错误 上CSDN上找了好多文章,都没办法解决问题 ...

  3. 【火炉炼AI】机器学习023-使用层次聚类算法构建模型

    [火炉炼AI]机器学习023-使用层次聚类算法构建模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotli ...

  4. python使用sklearn中的make_classification函数生成分类模型(classification)需要的仿真数据、使用pandas查看生成数据的特征数据、目标数据

    python使用sklearn中的make_classification函数生成分类模型(classification)需要的仿真数据.使用pandas查看生成数据的特征数据(features).目标 ...

  5. Python使用sklearn和statsmodels构建多元线性回归模型(Multiple Linear Regression)并解读

    Python使用sklearn和statsmodels构建多元线性回归模型(Multiple Linear Regression)并解读 #仿真数据集(预测股票指数) 这里的目标是根据两个宏观经济变量 ...

  6. 【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

    文章目录 基本原理 绘图层次 定义距离 基本原理 和Birch聚类相似,层次聚类也是一种依赖树结构实现的聚类方法,其核心概念是相似度.根据相似度,可以将所有样本组织起来,从而构建一棵层次聚类树. 其中 ...

  7. 每天进步一点点《ML - Sklearn库简单学习》

    一:Sklearn介绍 Sklearn是一个强大的机器学习库,基于python的.官方文档(http://scikit-learn.org/stable/ ).如下列举部分的使用场景. 由图中,可以看 ...

  8. 用Python的sklearn库进行PCA(主成分分析)

    在python的sklearn的库里面集成很多机器学习算法的库,其中也包括主成分分析的方法. 1.PCA算法的原理: PCA主要是用来数据降维,将高纬度的特征映射到低维度的特征,加快机器学习的速度.比 ...

  9. ID3决策树 Python实现 + sklearn库决策树模型的应用

    本文介绍机器学习中决策树算法的python实现过程 共介绍两类方法: (1)亲手实习Python ID3决策树经典算法 (2)利用sklearn库实现决策树算法 关于决策树的原理,指路:机器学习 第四 ...

最新文章

  1. python hibernate_将Java/MVC/Hibernate webapp移植到Python
  2. 在Angular应用里使用Redux
  3. 升级tomcat7.0之后的问题
  4. WordPress 数据库操作WPDB对象($wpdb)用法详解
  5. 2019中国企业500强榜单发布:涉及76个行业
  6. 大数据_Spark_VS_Hadoop_框架---Spark工作笔记0002
  7. [SQL]UNPIVOT 多個欄位
  8. 调用百度音频,文字转音频
  9. Android仿人人客户端(v5.7.1)——采用ViewGroup做父容器,实现左侧滑动菜单(三)...
  10. Shell脚本的模块化和脚本复用
  11. 【VMCloud云平台】SCAP(二)
  12. 小记-一些问题的解决方法
  13. oracle 递归用法,oracle递归用法
  14. Prometheus+Grafana监控系统
  15. easyphp(xctf)
  16. html文件上传协议,模拟HTML表单上传文件(RFC 1867)
  17. java+桌球小游戏图片_Java桌球小游戏
  18. JSP编译指令-page
  19. 人工智能一词,正在被“夸克们”玩坏
  20. 巧用 Redis Hyperloglog,轻松统计 UV 数据

热门文章

  1. python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用
  2. python 输出字符串编码_Python print 字符串编码问题
  3. Linux性能监测工具Nmon介绍及其使用
  4. Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化
  5. python if __name__ == '__main__'
  6. 圣杯布局简单结构代码!
  7. 深入浅出 Java Concurrency (33): 线程池 part 6 线程池的实现及原理 (1)[转]
  8. linux查找文件或字符串的命令
  9. omnet++ : could not be resolved 或error: coreexception 的解决
  10. Flash/Flex学习笔记(53):利用FMS快速创建一个文本聊天室