R语言与数据分析之四:聚类算法1

前面和大家分享的分类算法属于有监督学习的分类算法,今天继续和小伙伴们分享无监督学习分类算法---聚类算法。聚类算法也因此更具有大数据挖掘的味道

聚类算法本质上是基于几何距离远近为标准的算法,最适合数据是球形的问题,首先罗列下常用的距离:

绝对值距离(又称棋盘距离或城市街区距离)

Euclide距离(欧几里德距离,通用距离)

Minkowski 距离(闵可夫斯基距离),欧几里德距离 (q=2)、绝对值距离(q=1)和切比雪夫距离(q=无穷大),这些都是闵可夫斯基的特殊情况。

Chebyshew(切比雪夫)距离

Mahalanobis距离(咱们前面介绍的马氏距离,这里复习一下

Lance 和Wiliams距离

定性变量距离(二进制距离):

其中m1为所有项目中1-1配对的总数,m2是不配对的总数

R语言中,对上述的距离都有现成函数,只需要借参数加以制定即可,具体如下:

dist(x,method=”euclidean”,diag=FALSE,upper=FALSE,p=2) #欧式距离
dist(x,method=”maximum” ,diag=FALSE,upper=FALSE,p=2)#切比雪夫距离
dist(x,method=”manhattan” ,diag=FALSE,upper=FALSE,p=2)#绝对值距离
dist(x,method=”canberra”, diag=FALSE,upper=FALSE,p=2)#Lance距离;
dist(x,method=”binary” ,diag=FALSE,upper=FALSE,p=2)#d定性变量距离

讲完距离后,需要对原始数据进行相应的处理,否则数据规模的差异会被算法误认为属性权重值而影响最终的聚类效果。我们需要进行数据的中心化和标准化转换。中心化即让所有的数据都已0为中心点,常用的标准化的做法是将数据看作正态分布,只需要将数据除以标准差即可到达标准化作用。数据中心化和标准化后,各个变量的取值大小相接近,这样各个变量都平等的发挥决策作用。

R语言中提供了相应的函数:

Scale(x,center=TRUE,scale=TRUE)

接下来先介绍最古老的聚类算法——层次聚类法

思想:

Step1:每个样本各自作为一类;
Step2:计算类之间的距离;
Step3:将距离最短的两个类合并为一个新类;
Step4:重复2-3步,即不断合并最近的两个类,每次减少一个类,直至所有样本被合并为一类;

接下来介绍下类间距离:

最短距离法:两个类中所有点距离中的最小值;

最长距离法:两个类中所有点距离中的最大值;

中间距离法:取介于最小值和最大值两者间的距离;

类平均法:取所有距离的评价值;

重心法:类重心(均值)之间的距离;

离差平法和法:各项与评价项之差的平方的总和;

R提供了hclust()函数做层次聚类方法,下面举个简单的例子来说明下用法:

x<-c(1,2,6,8,11)
dim(x)<-c(5,1)
d<-dist(x)
hc1<-hclust(d,"single")#最短距离法
hc2<-hclust(d,"complete")#最长距离法
hc3<-hclust(d,"median")#中间距离法
hc4<-hclust(d,"ward")#离差平方和法
cpar<-par(mfrow=c(2,2))
plot(hc1,hang=-1)
plot(hc2,hang=-1)
plot(hc3,hang=-1)
plot(hc4,hang=-1)
par(cpar)
rect.hclust(hc1,k=2)#人工辅助告诉R分为几大类

结果见下图:其中的哦第一板块的红色划分认为告诉R需要分几类后,R自动画出分类的展示:

今天先和小伙伴分享到这里啦,下篇继续

时间: 2024-10-25 15:50:04

R语言与数据分析之四:聚类算法1的相关文章

R语言与数据分析之四:聚类算法2

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">今天继续和小伙伴们分享聚类算法和R语言的实现,上篇和大家分享了聚类中的距离.类间距离和最古典的层次聚类法,今天和大家分享几个动态聚类算法.</span> 首先和大家分享被评为十大数据挖掘算法之一的K-means 算法(K为分类的个数,mean为平均值,该算法的难点即为K的指点

R语言与数据分析之三:分类算法2

上期与大家分享的传统分类算法都是建立在判别函数的基础上,通过判别函数值来确定目标样本所属的分类,这类算法有个最基本的假设:线性假设.今天继续和大家分享下比较现代的分类算法:决策树和神经网络.这两个算法都来源于人工智能和机器学习学科. 首先和小伙伴介绍下数据挖掘领域比较经典的Knn(nearest neighbor)算法(最近邻算法) 算法基本思想: Step1:计算出待测样本与学习集中所有点的距离(欧式距离或马氏距离),按距离大小排序,选择出距离最近的K个学习点: Step2:统计被筛选出来的K

R语言与数据分析之三:分类算法1

分类算法与我们的生活息息相关,也是目前数据挖掘中应用最为广泛的算法,如:已知系列的温度.湿度的序列和历史的是否下雨的统计,我们需要利用历史的数据作为学习集来判断明天是否下雨:又如银行信用卡诈骗判别. 分类问题都有一个学习集,根据学习集构造判别函数,最后根据判别函数计算我们所需要判别的个体属于哪一类的. 常见的分类模型与算法 传统方法 1.线性判别法:2.距离判别法:3.贝叶斯分类器: 现代方法: 1.决策树:2.支持向量机:3.神经网络: 线性判别法: 天气预报数据(x1,x2分别为温度和湿度,

R语言中的划分聚类模型

原文链接:http://tecdat.cn/?p=6443 划分聚类 是用于基于数据集的相似性将数据集分类为多个组的聚类方法. 分区聚类,包括: K均值聚类 (MacQueen 1967),其中每个聚类由属于聚类的数据点的中心或平均值表示.K-means方法对异常数据点和异常值敏感. K-medoids聚类或PAM(Partitioning Around Medoids,Kaufman和Rousseeuw,1990),其中,每个聚类由聚类中的一个对象表示.与k-means相比,PAM对异常值不太

R语言基因组数据分析可能会用到的data.table函数整理

R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理的步骤进行了程序上的优化,使用多线程,甚至很多函数是使用C写的,大大加快数据运行速度.因此,在对大数据处理上,使用data.table无疑具有极高的效率.这里主要介绍在基因组数据分析中可能会用到的函数. fread 做基因组数据分析时,常常需要读入处理大文件,这个时候我们就可以舍弃read.ta

基于R语言的数据分析和挖掘方法总结——描述性统计

1.1 方法简介 描述性统计包含多种基本描述统计量,让用户对于数据结构可以有一个初步的认识.在此所提供之统计量包含: 基本信息:样本数.总和 集中趋势:均值.中位数.众数 离散趋势:方差(标准差).变异系数.全距(最小值.最大值).内四分位距(25%分位数.75%分位数) 分布描述:峰度系数.偏度系数 用户可选择多个变量同时进行计算,亦可选择分组变量进行多组别的统计量计算. 1.2 详细介绍 1.2.1 样本数和总和 1. R语言涉及的方法:length(x) 1.2.2 均值(Mean) 1.

R语言和数据分析十大:购物篮分析

提到数据挖掘,我们的第一个反应是之前的啤酒和尿布的故事听说过,这个故事是一个典型的数据挖掘关联规则.篮分析的传统线性回归之间的主要差别的差别,对于离散数据的相关性分析: 常见的关联规则: 关联规则:牛奶=>卵子[支撑=2%,置信度=60%] 支持度:分析中的所有事务的2%同一时候购买了牛奶和鸡蛋,需设定域值,来限定规则的产生. 置信度:购买了牛奶的筒子有60%也购买了鸡蛋,需设定域值,来限定规则的产生. 最小支持度阈值和最小置信度阈值:由挖掘者或领域专家设定. 与关联分析相关的专业术语包含: 项

R语言︱决策树族——随机森林算法

笔者寄语:有一篇<有监督学习选择深度学习还是随机森林或支持向量机?>(作者Bio:SebastianRaschka)中提到,在日常机器学习工作或学习中,当我们遇到有监督学习相关问题时,不妨考虑下先用简单的假设空间(简单模型集合),例如线性模型逻辑回归.若效果不好,也即并没达到你的预期或评判效果基准时,再进行下换其他更复杂模型来实验. ---------------------------------------------- 一.随机森林理论介绍 1.1 优缺点 优点. (1)不必担心过度拟合

R语言与数据分析

K最近邻(k-Nearest Neighbor,KNN)分类算法 R语言实现包:R语言中有kknn package实现了weighted k-nearest neighbor. 决策树: R语言实现决策树:rpart扩展包 iris.rp = rpart(Species~.,data = iris,method = "class")print(iris.rp)#输出模型结果 node), split, n, loss, yval, (yprob) * denotes terminal