资源简介
关于层次聚类(hierarchical clustering)的基本步骤:
1、假设每个样本为一类,计算每个类的距离,也就是相似度
2、把最近的两个合为一新类,这样类别数量就少了一个
3、重新新类与各个旧类(去了那两个合并的类)之间的相似度;
4、循环重复2和3直到所有样本点都归为一类
这个计算的过程,相当于重构一个二叉树,只是这个过程,是从树叶-->树枝-->树干的构建过程
本资源详细介绍层次聚类的算法
代码片段和文件信息
# -*- coding:utf-8 -*-
‘‘‘
关于聚类(Clustering)的基本步骤:
1、假设每个样本为一类,计算每个类的距离,也就是相似度
2、把最近的两个合为一新类,这样类别数量就少了一个
3、重新新类与各个旧类(去了那两个合并的类)之间的相似度;
4、循环重复2和3直到所有样本点都归为一类
这个计算的过程,相当于重构一个二叉树,只是这个过程,是从树叶-->树枝-->树干的构建过程
本例将以14张图片,做为样本,进行聚类,点击这里下载图片样本
当然,你也可以自己定义一个目录,程序会读取目录下所有JPG图片
如果你用了自己的图片,在代码中的一个数据的变化说明,就和使用的图片样本不同了,
同时,本文的主要目的是演示聚类(Clustering)的基本步骤,对于图片的相似度的算法并不完善,效果也并不是十分理想
不过如果你使用自己从手机中导入的生活照,不同的场景大致还是能分类出来的
‘‘‘
from PIL import ImageDrawImage
import numpy as np
import os
import sys
nodeList = []#用于存储所有的节点,包含图片节点,与聚类后的节点
distance = {}#用于存储所有每两个节点的距离,数据格式{(node1.idnode2.id):30.0(node2.idnode3.id):40.0}
class node:
def __init__(self data):
‘‘‘每个样本及样本合并后节点的类
data:接受两种格式,
1、当为字符(string)时,是图片的地址,同时也表示这个节点就是图片
2、合并后的类,传入
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 239491 2018-01-30 18:19 imageAndCode\afsdav.jpg
文件 111953 2018-01-30 18:35 imageAndCode\afvaf.jpg
文件 33660 2018-01-30 18:32 imageAndCode\avasdf.jpg
文件 426036 2018-01-30 18:34 imageAndCode\fasdfa.jpg
文件 90674 2018-01-30 18:28 imageAndCode\fasfasdf.jpg
文件 37241 2018-02-01 19:54 imageAndCode\hierarchicalResult.jpg
文件 58099 2018-01-30 18:34 imageAndCode\safvadf.jpg
文件 128845 2018-01-30 18:34 imageAndCode\vadasfs.jpg
文件 58790 2018-01-30 18:14 imageAndCode\vadfaf.jpg
文件 137147 2018-01-30 18:19 imageAndCode\vadsfasfwe.jpg
文件 134349 2018-01-30 18:32 imageAndCode\vafafasd.jpg
文件 181196 2018-01-30 18:20 imageAndCode\vafsdfasf.jpg
文件 153979 2018-01-30 18:28 imageAndCode\vasdafe.jpg
文件 178779 2018-01-30 18:19 imageAndCode\vasfadf.jpg
文件 29957 2018-01-30 18:33 imageAndCode\vaweb.jpg
文件 8344 2018-02-01 19:54 hierarchical.py
文件 120966 2018-02-01 20:09 hierarchicalResult2.jpg
文件 791 2018-02-01 20:15 说明.txt
目录 0 2018-02-01 20:18 imageAndCode
----------- --------- ---------- ----- ----
2130297 19
评论
共有 条评论