学习笔记

参考文献:《R语言与数据挖掘》

PS:本篇Blog以用R语言应用为主,原理部分请移步《多元统计分析》学习笔记之聚类分析


利用聚类分析检测离群点

聚类检测原理

有一种检测离群点的方法是聚类。例如,基于DBSCAN密度聚类,如果两个对象之间是密度可达的,则这两个对象将被划分到同一组,因此,那些没有被划分到任何一组的对象与其他对象是相互孤立的,这些孤立的对象则被认为是离群点。

啥是密度可达?
如果点α\alphaα的邻域内包含点的数目不少于MinPts,则α\alphaα是密集点(核心点),而α\alphaα邻域内所有点从α\alphaα出发都是密度可达的,可将这些点与α\alphaα划分在同一个簇中。

在这里,我们以k−meansk-meansk−means聚类算法来检测离群点。使用k−meansk-meansk−means聚类,将数据划分为k组,每一个观测点都划分到与之距离最小的分组,然后计算每个观测点与组重心的距离,并将距离最大的对象作为离群点。

图示:

由上图可知,数据被聚类为了3类,其中我们看组2(G2)的5号观测点,这个观测点貌似有一点’不合群’,且在所有的观测点中,5号观测点离自己的组重心最远,所以可以把它看做离群点。

R语言实现

利用R自带的鸢尾花数据集,并使用k−meansk-meansk−means聚类法检测离群点。

代码:

#拿到iris数据集中的数值型数据
iris_test <- iris[, 1:4]
#得到聚类结果
result <- kmeans(iris_test, centers = 3)
#这行请复制代码,在电脑中自行领会,不太会表达
center <- result$centers[result$cluster, ]
#计算每个观测点,到其组重心的距离
distances <- sqrt(rowSums(iris_test - center)^2)
#对距离进行降序排序,拿到距离最远的5个观测点的行号
outpoints <- order(distances, decreasing = T)[1:5]
print(iris_test[outpoints, ])#绘图
plot(iris_test[, c("Sepal.Length", "Sepal.Width")], pch = 'o', col = result$cluster, cex = 0.3)
points(result$centers[, c("Sepal.Length", "Sepal.Width")], col = c(1:3), pch = 8, cex = 1)points(iris_test[outpoints, c("Sepal.Length", "Sepal.Width")], pch = '+', col = 4, cex = 1.5)

控制台输出结果:

> print(iris_test[outpoints, ])Sepal.Length Sepal.Width Petal.Length Petal.Width
61           5.0         2.0          3.5         1.0
94           5.0         2.3          3.3         1.0
58           4.9         2.4          3.3         1.0
99           5.1         2.5          3.0         1.1
118          7.7         3.8          6.7         2.2

图像:


后记:DBSCAN密度聚类笔者已经有1年多没碰过了,若有错误求指出。

R语言之离群点检验(part3)--利用聚类检测离群点相关推荐

  1. 【R语言实验】基于R语言的时间序列平稳性检验

    一.实验项目名称:基于R语言的时间序列平稳性检验 二.实验目的与要求: 平稳时间序列的概念,平稳性检验的时序图检验方法和自相关图检验方法. 三.实验原理: 时序图和自相关图检验时间序列的平稳性依据: ...

  2. R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram)

    R语言ggplot2可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram) 目录

  3. 格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验

    之前详细介绍了利用R语言进行统计描述,详情点击:R语言系列第三期:①R语言单组汇总及图形展示.R语言系列第三期:②R语言多组汇总及图形展示.R语言系列第三期:③R语言表格及其图形展示 从这个部分我们就 ...

  4. R语言数据分析笔记——t检验(含正态性检验和方差齐性检验在SPSS和R语言中的操作t检验(单样本、双独立样本、配对样本)在Excel、SPSS、R语言中的操作)

    前言:本文为个人学习笔记,为各大网站上的教学内容之综合整理,综合整理了①假设分析的基础知识.②正态性检验和方差齐性检验在SPSS和R语言中的操作.③t检验(单样本.双独立样本.配对样本)在Excel. ...

  5. R语言进行多重样本t检验代码问题

    文章来源:https://blog.csdn.net/hill_night/article/details/44046307 详细内容: 这里给出来一个利用R语言分析样品之间的t检验和秩和检验的一个例 ...

  6. 【定量分析、量化金融与统计学】R语言方差分析ANOVA(F检验)

    目录 一.前言 Fixed-effects models.Random-effects models.Mixed-effects models. 二.ANOVA使用的前提假设与假设检验 三.ANOVA ...

  7. R语言做Scheirer–Ray–Hare检验

    毕设有组重复测量数据非正态分布,分析要用到R语言,下面这个算是小白自学的步骤记录! R Handbook: Scheirer–Ray–Hare TestClear examples in R. Sch ...

  8. R语言-单个总体均值的t检验

    #3.2.1 单个总体均值的t检验 # (1)什么是检验? # 检验(test)是统计学中最重要的概念之一,在科学研究和实际业务中都有着广泛的应用.用一句话来概括就是:人们希望通过掌握的数据和其他背景 ...

  9. R语言中如何进行PCA分析?利用ggplot和prcomp绘制基因表达量分析图

    学习笔记的主要内容是在R语言中利用ggplot2进行PCA分析和绘图,包括简单分析与操作流程,对比不同方式得到的结果差异,提供脚本代码供练习. PCA分析的原理 在处理基因差异表达数据时,有时候需要分 ...

最新文章

  1. ospfdr选举规则_OSPF-DR与BDR的选举及作用
  2. db2 删除索引_MySQL 选错索引的原因是什么?
  3. C++计算实时输入数据的统计信息实现算法(附完整源码)
  4. 机器学习入门学习资源
  5. ov5640帧率配置_赛博朋克2077 优化设置大全!帧数50暴涨100
  6. java list 合并去重_java 怎么把多个list 合并成一个去掉重复的
  7. SQL 在表中建立索引的作用
  8. 如何解决cellIndex在IE下兼容性问题
  9. JS中如何判断null
  10. jsp taglib指令_JSP指令–页面,包含和taglib示例
  11. 使用 IntraWeb (40) - 自定义 Session 数据
  12. .net 这些年发展 参考资料
  13. linux洪水攻击软件,Linux遭受SYN洪水攻击设置
  14. 快捷方式右键菜单、任务管理器等,使用“打开文件所在位置”出现“该文件没有与之关联的应用来执行该操作”的问题解决方案
  15. CentOS6 Samba服务器配置
  16. org.dom4j.DocumentException: 1 字节的 UTF-8 序列的字节 1 无效。
  17. 常用、免费的API接口网址
  18. Java、JSP物流车辆调度系统
  19. 企业微信有客服热线吗?有问题如何获取帮助?
  20. EMWIN电容触摸Touch步骤及注意事项

热门文章

  1. 5.12 QR分解的阻尼倒数法和正则化方法区别
  2. 【机器学习】数据挖掘算法——关联规则(一),相关概念,评价指标
  3. rust核电分解机在哪里_腐蚀RUST个工厂地点位置介绍 腐蚀如何找到相应的工厂
  4. 中年失业都去做什么_2020年失业是种什么体验?这位吉他手去做了外卖小哥,演出时还穿着工作服...
  5. Python基础系列讲解——继承派生和组合的概念剖析
  6. Socket.IO for Unity 简要介绍
  7. Java编程思想之-主板示例
  8. Jquery ajax提交表单几种方法详解
  9. InterlliJ Debug启动:method breakpoints may dramatically show down debugging
  10. 惹怒程序员的十件事!需求变更居然不被排第一!