专栏首页大数据风控R聚类算法-(K-Means算法)

R聚类算法-(K-Means算法)

聚类算法,属于无监督学习

K-Means算法

K-Means算法的目标,是把n个样本点划分到k个类中,使得每个点都属于离它最近的质心对应的类,以之作为聚类的标准。 质心: 指一个类,内部所有样本点的均值。 kmeans(x,centers)

  • x 待聚类的训练样本
  • centers 聚类的个数,也就是要分成多少类

代码实现:

pColumns <- c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width');

plot(iris[, c("Sepal.Length", "Sepal.Width")])

#分类模型训练
kmc <- kmeans(iris[, pColumns], 3);

table(iris$Species, kmc$cluster);  #查看分类概括  
prop.table(table(iris$Species, kmc$cluster), 1)

#聚类结果可视化   
#不同的颜色代表不同的聚类结果,不同的形状代表训练数据集的原始分类情况。
plot(
  iris[c("Sepal.Length", "Sepal.Width")], 
  col = kmc$cluster, 
  pch = as.integer(iris$Species)
);

points(
  kmc$centers[, c("Sepal.Length", "Sepal.Width")], 
  col = 1:3, 
  pch = 8, 
  cex=2
)

K-Means算法的优化

多维的数据映射为一维的数据,主成分分析,崖底碎石法

#install.packages("psych")
library(psych)

pColumns <- c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width');

#主成份分析
fp <- fa.parallel(
  iris[, pColumns], 
  fa="pc", 
  n.iter=100, 
  show.legend=FALSE
)
#崖底碎石法,拿到主成份个数
pc <- principal(iris[, pColumns], nfactors=fp$ncomp)
> fp$ncomp
[1] 1
data <- pc$scores;
#分类模型训练
kc <- kmeans(data, 3);

table(iris$Species, kc$cluster);  #查看分类概括  
prop.table(table(iris$Species, kc$cluster), 1)
 1    2    3
  setosa     0.00 0.00 1.00
  versicolor 0.90 0.10 0.00
  virginica  0.12 0.88 0.00

#聚类结果可视化   
#不同的颜色代表不同的聚类结果,不同的形状代表训练数据集的原始分类情况。
stripchart(
  data[,1]~kc$cluster,
  at=c(1, 1, 1),
  col=c("orange",'black', "red"), 
  pch=c(0, 1, 2)
);

points(
  kc$centers, c(1, 1, 1), 
  col = c("orange","red", 'black'), 
  pch = 8, 
  cex=2
)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R聚类算法-层次聚类算法

    层次聚类(Hierarchical Clustering算法) 层次聚类算法又称为树聚类算法,它根据数据之间的距离,透过一种层次架构方式,反复将数据进行聚合,创...

    Erin
  • Python中的分组分析groupby

    分组分析 根据分组字段,将分析对象划分成不同的部分,以进行对比分析各组之间差异性的一种分析方法。 定性分组 定量分组 分组统计函数: groupby(by=[分...

    Erin
  • R中数据的标准化0-1标准化

    数据标准化,是将数据按比例缩放,使之落入到特定区间,一般我们使用0-1标准化; x=(x-min)/(max-min) >data <- read.csv('1...

    Erin
  • 机器学习|聚类(下)

    接下来几周的时间,我们将会推出关于《西瓜书》读书笔记的连载文章,updating~

    数据山谷
  • 【无监督学习】DBSCAN聚类算法原理介绍,以及代码实现

    主要包括:K-means、DBSCAN、Density Peaks聚类(局部密度聚类)、层次聚类、谱聚类。

    IT派
  • 量化投资里的无监督学习算法:聚类

    公众号第一次介绍Marcos Lopez de Prado,则是来自他一篇论文:《The 7 Reasons Most Machine Learning Fun...

    量化投资与机器学习微信公众号
  • 【算法】k均值和层次聚类

    小编邀请您,先思考: 1 聚类算法有什么应用? 2 如何做聚类? 看看下面这张图,有各种各样的虫子和蜗牛,你试试将它们分成不同的组别? ? 完成了吗?尽管这里并...

    陆勤_数据人网
  • 【学习】SPSS聚类分析:用于筛选聚类变量的一套方法

    聚类分析是常见的数据分析方法之一,主要用于市场细分、用户细分等领域。利用SPSS进行聚类分析时,用于参与聚类的变量决定了聚类的结果,无关变量有时会引起严重的错分...

    小莹莹
  • linux之grep命令

    输出文件中包含'Kell'的文件。.为任意字符,所以合计5个字符,其中第五个字符为任意字符。

    Y大宽
  • 爬虫课堂(二十一)|使用FilesPipeline和ImagesPipeline下载文件和图片

    黄小怪

扫码关注云+社区

领取腾讯云代金券