ML: 聚类算法R包-层次聚类
层次聚类
- stats::hclust
stats::dist
R使用dist()函数来计算距离,Usage: dist(x, method = "euclidean", diag = FALSE, upper = FALSE, p = 2)
- x: 是样本矩阵或者数据框
- method: 表示计算哪种距离
- euclidean 欧几里德距离,就是平方再开方。
- maximum 切比雪夫距离
- manhattan 绝对值距离
- canberra Lance 距离
- minkowski 明科夫斯基距离,使用时要指定p值
- binary 定性变量距离
- diag: 为TRUE的时候给出对角线上的距离
- upper: 为TURE的时候给出上三角矩阵上的值.
base::scale
R使用scale()函数对数据矩阵做中心化和标准化变换, Usage: scale(x, center = TRUE, scale = TRUE)
base::sweep
R语言中使用sweep() 函数对矩阵进行运算. Usage: sweep(x, MARGIN, STATS, FUN = "-", check.margin = TRUE, ...)
- MARGIN: 为1,表示行的方向上进行运算,为2表示列的方向上运算。
- STATS: 是运算的参数
- FUN为: 运算函数,默认是减法
stats::hclust
Usage:hclust(d, method = "complete", members = NULL)
- d:为距离矩阵
- method: 表示类的合并方法
- single: (单联动)最短距离法: 一个类中的点和另一个类中的点的最小距离
- complete: (全联动) 最长距离法: 一个类中的点和另一个类中的点的最大距离
- median: (平均联动) 中间距离法: 一个类中的点和另一个类中的点的平均距离
- mcquitty: 相似分析法
- average: 平均距离法,测量两类每对观测间的平均距离
- centroid:重心法, 两类间的距离定义为两类重心之间的距离
- ward:离差平方和法,基于方差分析思想,如果分类合理,则同类样品间离差平方和应当较小,类与类间离差平方和应当较大
示例 代码:
> library(stats)
> data=iris[,-5]
> dist.e=dist(data,method='euclidean')
> iris.hc <- hclust( dist.e,"single")
> plot( iris.hc, hang = -1,cex=.8) #hang小于0时,树将从底部画起
效果图如下:
用矩形画出分为3类的区域
> #用矩形画出分为3类的区域
> re <- rect.hclust(iris.hc, k = 3)
> re
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
[47] 47 48 49 50 [[2]]
[1] 118 132 [[3]]
[1] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
[36] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 119 120 121
[71] 122 123 124 125 126 127 128 129 130 131 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
效果图
输出结果
> ##得到分为3类的数值,输出结果
> iris.id <- cutree(iris.hc, 3)
> table(iris.id, iris$Species) iris.id setosa versicolor virginica
1 50 0 0
2 0 50 48
3 0 0 2
BIRCH
BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)全称是:利用层次方法的平衡迭代规约和聚类。BIRCH是一种聚类算法,它最大的特点是能利用有限的内存资源完成对大数据集的高质量的聚类,同时通过单遍扫描数据集能最小化I/O代价。BIRCH算法有如下特点:
- BIRCH试图利用可用的资源来生成最好的聚类结果,给定有限的主存,一个重要的考虑是最小化I/O时间。
- BIRCH采用了一种多阶段聚类技术:数据集的单边扫描产生了一个基本的聚类,一或多遍的额外扫描可以进一步改进聚类质量。
- BIRCH是一种增量的聚类方法,因为它对每一个数据点的聚类的决策都是基于当前已经处理过的数据点,而不是基于全局的数据点。
- 如果簇不是球形的,BIRCH不能很好的工作,因为它用了半径或直径的概念来控制聚类的边界。
BIRCH算法中引入了两个概念:聚类特征和聚类特征树,详细参见:http://www.cnblogs.com/tiaozistudy/p/6129425.html
说明:birch 包在cran上很多年没更新,如果要使用,必须安装R3.0以前的版本,此处先略过,参见:https://cran.r-project.org/src/contrib/Archive/birch/
CURE
CURE(Clustering Using REprisentatives)算法即使用代表点的聚类方法。该算法先把每个数据点看成一类,然后合并距离最近的类直至类个数为所要求的个数为止。CURE算法将传统对类的 表示方法进行了改进,回避了用所有点或用中心和半径来表示一个类,而是从每一个类中抽取固定数量、分布较好的点作为描述此类的代表点,并将这些点乘以一个 适当的收缩因子,使它们更靠近类的中心点。将一个类用代表点表示,使得类的外延可以向非球形的形状扩展,从而可调整类的形状以表达那些非球形的类。另外, 收缩因子的使用减小了嗓音对聚类的影响。CURE算法采用随机抽样与分割相结合的办法来提高算法的空间和时间效率,并且在算法中用了堆和K-d树结构来提 高算法效率
说明:未找着下载包
参考资料:
- http://www.cnblogs.com/tiaozistudy/p/6129425.html
- https://www.douban.com/note/274189091/
- http://artax.karlin.mff.cuni.cz/r-help/library/birch/html/birch.html
- https://www.douban.com/note/514091031/
ML: 聚类算法R包-层次聚类的更多相关文章
- ML: 聚类算法R包-模糊聚类
1965年美国加州大学柏克莱分校的扎德教授第一次提出了'集合'的概念.经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面.为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析.用模 ...
- ML: 聚类算法R包 - 模型聚类
模型聚类 mclust::Mclust RWeka::Cobweb mclust::Mclust EM算法也称为期望最大化算法,在是使用该算法聚类时,将数据集看作一个有隐形变量的概率模型,并实现模型最 ...
- ML: 聚类算法R包-网格聚类
网格聚类算法 optpart::clique optpart::clique CLIQUE(Clustering In QUEst)是一种简单的基于网格的聚类方法,用于发现子空间中基于密度的簇.CLI ...
- ML: 聚类算法R包 - 密度聚类
密度聚类 fpc::dbscan fpc::dbscan DBSCAN核心思想:如果一个点,在距它Eps的范围内有不少于MinPts个点,则该点就是核心点.核心和它Eps范围内的邻居形成一个簇.在一个 ...
- ML: 聚类算法R包-对比
测试验证环境 数据: 7w+ 条,数据结构如下图: > head(car.train) DV DC RV RC SOC HV LV HT LT Type TypeName 1 379 85.09 ...
- ML: 聚类算法R包-K中心点聚类
K-medodis与K-means比较相似,但是K-medoids和K-means是有区别的,不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值, ...
- 聚类算法之k-均值聚类
k-均值聚类算法 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 适用数据类型:数值型数据 其工作流程:首先,随机确定k个初始点作为质心,然后将数据集中的每个点分配到一个簇中,具 ...
- ML: 聚类算法-K均值聚类
基于划分方法聚类算法R包: K-均值聚类(K-means) stats::kmeans().fpc::kmeansruns() K-中心点聚类(K-Medoids) ...
- SIGAI机器学习第二十四集 聚类算法1
讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...
随机推荐
- 使用grafana cli重置grafana密码
Grafana CLIgrafana cli是grafana server自带的一个小巧的二进制工具,用来在运行grafana server的机器上执行命令.插件grafana cli工具允许你安装升 ...
- Invocation of init method failed; nested exception is java.text.ParseException: '?' can only be specfied for Day-of-Month or Day-of-Week.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronTrigger' ...
- 中国网建提供的SMS短信发送
一个简单的发送短信的小demo 第一步: 兄弟们,首先你们去中国网建的官网去注册一个账户:网址http://sms.webchinese.cn/reg.shtml 第二步: 注册完成之后会有免费的测试 ...
- JAVA中日期和时间的格式化选项
一.使用printf方法 import java.util.Date; import java.util.Scanner; public class Test { public static void ...
- [LeetCode&Python] Problem 206. Reverse Linked List
Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-> ...
- Gym - 101480 CERC 15:部分题目题解(队内第N次训练)
-------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...
- HDU - 5421:Victor and String (回文树,支持首尾插入新字符)
Sample Input 6 1 a 1 b 2 a 2 c 3 4 8 1 a 2 a 2 a 1 a 3 1 b 3 4 Sample Output 4 5 4 5 11 题意:多组输入,开始字符 ...
- 测试那些事儿—web测试方法之输入框
一.字符型输入 (1)字符型输入框 英文全角,英文半角,数字,空或者空格,特殊字符“~!@#¥%.......&*?{}[]"特别要注意单引号和&符号.禁止直接输入特殊字符时 ...
- 最长公共子序列与最长公共字串 (dp)转载http://blog.csdn.net/u012102306/article/details/53184446
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- Wood Chipping Text Animation
Blender Tutorial: Wood Chipping Text Animationhttps://www.youtube.com/watch?v=YFmN7eTNfNw 文字建模 木板建模, ...