ML: 聚类算法R包-模糊聚类

1965年美国加州大学柏克莱分校的扎德教授第一次提出了‘集合’的概念。经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面。为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析。用模糊数学的方法进行聚类分析,就是模糊聚类分析。FCM(Fuzzy C-Means)算法是一种以隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是传统硬聚类算法的一种改进。

算法流程:

  • 标准化数据矩阵;
  • 建立模糊相似矩阵,初始化隶属矩阵;
  • 算法开始迭代,直到目标函数收敛到极小值;
  • 根据迭代结果,由最后的隶属矩阵确定数据所属的类,显示最后的聚类结果。

优点:相比起前面的”硬聚类“,FCM方法会计算每个样本对所有类的隶属度,这给了我们一个参考该样本分类结果可靠性的计算方法,若某样本对某类的隶属度在所有类的隶属度中具有绝对优势,则该样本分到这个类是一个十分保险的做法,反之若该样本在所有类的隶属度相对平均,则我们需要其他辅助手段来进行分类。

缺点:KNN的缺点基本它都有

模糊聚类


  • cluster::fanny 
  • e1071::cmeans 

cluster::fanny



需要R安装包

install.packages("cluster")

示例代码:

library(cluster)
iris2 <- iris[-5]
fannyz=fanny(iris2,3,metric="SqEuclidean")summary(fannyz)

分类分布:

> fannyz$clustering
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 2 3 3 3 3 3 3 3 3 3 3 3 3
 [66] 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 2 2 2 2 3 2 2 2 2 2 2 3 2 2 2 2 2 3 2 3 2 3 2 2 3 3 2 2
[131] 2 2 2 3 2 2 2 2 3 2 2 2 3 2 2 2 3 2 2 3

样本隶属度

> fannyz$membership
              [,1]         [,2]         [,3]
  [1,] 0.996623586 0.0010720343 0.0023043797
  [2,] 0.975852543 0.0074979471 0.0166495094
  [3,] 0.979825922 0.0064145785 0.0137594999
  [4,] 0.967427446 0.0101075228 0.0224650314
  [5,] 0.994470355 0.0017679352 0.0037617094
  [6,] 0.934574112 0.0206196544 0.0448062334
  [7,] 0.979491667 0.0065045178 0.0140038150
  [8,] 0.999547263 0.0001412048 0.0003115325
  [9,] 0.930379787 0.0219024180 0.0477177955
.......

图示显示 :clusplot(fannyz)

结果显示

> table(iris$Species,fannyz$clustering)

              1  2  3
  setosa     50  0  0
  versicolor  0  3 47
  virginica   0 37 13

e1071::cmeans 



安装包代码:

install.packages("e1071")

示例代码:

> library("e1071")
> x <- iris[-5]
> result1<-cmeans(x,3,50)
> result1
Fuzzy c-means clustering with 3 clusters

Cluster centers:
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1     5.888999    2.761093     4.364049   1.3973654
2     6.775092    3.052406     5.646882   2.0535855
3     5.003966    3.414086     1.482821   0.2535487

Memberships:
                  1            2           3
  [1,] 0.0023043721 0.0010720485 0.996623579
  [2,] 0.0166481906 0.0074975084 0.975854301
  [3,] 0.0137586391 0.0064142953 0.979827066
  .......

统计结果:

> table(iris$Species,result1$cluster)

              1  2  3
  setosa      0  0 50
  versicolor 47  3  0
  virginica  13 37  0

3d效果显示示例

#install.packages("scatterplot3d")
library(scatterplot3d)
scatterplot3d(result1$membership, color=result1$cluster, type="h",
                     angle=55, scale.y=0.7, pch=16, main="Pertinence")


参考资料:

时间: 2024-08-27 00:21:02

ML: 聚类算法R包-模糊聚类的相关文章

ML: 聚类算法R包 - 密度聚类

密度聚类 fpc::dbscan fpc::dbscan DBSCAN核心思想:如果一个点,在距它Eps的范围内有不少于MinPts个点,则该点就是核心点.核心和它Eps范围内的邻居形成一个簇.在一个簇内如果出现多个点都是核心点,则以这些核心点为中心的簇要合并.其中要注意参数eps的设置,如果eps设置过大,则所有的点都会归为一个簇,如果设置过小,那么簇的数目会过多.如果MinPts设置过大的话,很多点将被视为噪声点(先计算距离矩阵,然后看一下距离大概都是多少,找个靠谱的设置成半径) 优点: 对

ML: 聚类算法R包-对比

测试验证环境 数据: 7w+ 条,数据结构如下图: > head(car.train) DV DC RV RC SOC HV LV HT LT Type TypeName 1 379 85.09 0.00 0.0 62.99 3.99 0.00 12 0 10f689e8-e6cc-47a3-be5a-dbc3833428ef EV200 2 379 85.09 370.89 59.9 63.99 4.01 0.00 12 0 10f689e8-e6cc-47a3-be5a-dbc3833428

ML: 聚类算法R包-K中心点聚类

K-medodis与K-means比较相似,但是K-medoids和K-means是有区别的,不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值,在 K-medoids算法中,我们将从当前cluster 中选取这样一个点--它到其他所有(当前cluster中的)点的距离之和最小--作为中心点.K-medodis算法不容易受到那些由于误差之类的原因产生的脏数据的影响,但计算量显然要比K-means要大,一般只适合小数据量. K-medoids

聚类算法与应用

七月算法4月机器学习算法班课程笔记--No.10 前言 与回归与分类不同,聚类是无监督学习算法,无监督指的是只需要数据,不需要标记结果,试图探索和发现一些模式.比如对用户购买模式的分析.图像颜色分割等.聚类算法的提出比较早,是数据挖掘的一个重要模块,可以对大量数据分类并概括出每一类的特点.目前也有很多种聚类算法,包括划分法.层次法.基于密度的方法.基于网格的方法等.实际生产中,很少有只用聚类算法的系统,因为聚类效果的好坏不容易衡量,有时候会用做监督学习中稀疏特征的预处理. 接下来会重点介绍K-m

【转载】各种聚类算法的比较

聚类的目标是使同一类对象的相似度尽可能地大:不同类对象之间的相似度尽可能地小.目前聚类的方法很多,根据基本思想的不同,大致可以将聚类算法分为五大类:层次聚类算法.分割聚类算法.基于约束的聚类算法.机器学习中的聚类算法和用于高维度的聚类算法.摘自 数据挖掘中的聚类分析研究综述 这篇论文. 1.层次聚类算法 1.1聚合聚类 1.1.1相似度依据距离不同:Single-Link:最近距离.Complete-Link:最远距离.Average-Link:平均距离 1.1.2最具代表性算法 1)CURE算

基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登后,陆陆续续收到本科生.研究生还有博士生的来信和短信微信等,表示了对论文的兴趣以及寻求算法的效果和实现细节,所以,我也就通过邮件或者短信微信来回信,但是有时候也会忘记回复. 另外一个原因也是时间久了,我对于论文以及改进的算法的记忆也越来越模糊,或者那天无意间把代码遗失在哪个角落,真的很难想象我还会全

mahout in Action2.2-聚类介绍-K-means聚类算法

聚类介绍 本章包括 1 实战操作了解聚类 2.了解相似性概念 3 使用mahout运行一个简单的聚类实例 4.用于聚类的各种不同的距离测算方法 作为人类,我们倾向于与志同道合的人合作-"鸟的羽毛聚集在一起.我们能够发现重复的模式通过联系在我们的记忆中的我们看到的.听到的.问道的.尝到的东 西. 例如,相比较盐 ,糖能够是我们更多地想起蜜.所以我们把糖和蜜的味道结合起来叫他们甜蜜.甚至我们不知道甜蜜的味道,但是知道他跟世界上所有的含糖的东西是相似的,是同 一类的.我们还知道它与盐是不同类的东西.无

聚类算法(clustering)

转自http://blog.csdn.net/JasonDing1354/article/details/49806017?locationNum=2&fps=1 1 聚类分析基本概念 聚类分析将数据划分成有意义或有用的簇.如果目标是划分成有意义的组,则簇应当捕获数据的自然结构. 聚类分析是一种分类的多元统计分析方法.按照个体或样品的特征将它们分类,使同一类别内的个体具有尽可能高的同质性(homogeneity),而类别之间则应具有尽可能高的异质性(heterogeneity). 聚类是研究数据

各种聚类算法的比较

各种聚类算法的比较 聚类的目标是使同一类对象的相似度尽可能地大:不同类对象之间的相似度尽可能地小.目前聚类的方法很多,根据基本思想的不同,大致可以将聚类算法分为五大类:层次聚类算法.分割聚类算法.基于约束的聚类算法.机器学习中的聚类算法和用于高维度的聚类算法.摘自 数据挖掘中的聚类分析研究综述 这篇论文. 1.层次聚类算法 1.1聚合聚类 1.1.1相似度依据距离不同:Single-Link:最近距离.Complete-Link:最远距离.Average-Link:平均距离 1.1.2最具代表性