使用 k 均值算法进行异常值检测

2023-12-25

我希望你能帮助我解决我的问题。我正在尝试使用 kmeans 算法来检测异常值。首先,我执行算法并选择那些距聚类中心距离较远的对象作为可能的异常值。我不想使用绝对距离,而是想使用相对距离,即对象到聚类中心的绝对距离与聚类中所有对象到其聚类中心的平均距离的比率。基于绝对距离的异常值检测代码如下:

# remove species from the data to cluster
iris2 <- iris[,1:4]
kmeans.result <- kmeans(iris2, centers=3)
# cluster centers
kmeans.result$centers
# calculate distances between objects and cluster centers
centers <- kmeans.result$centers[kmeans.result$cluster, ]
distances <- sqrt(rowSums((iris2 - centers)^2))
# pick top 5 largest distances
outliers <- order(distances, decreasing=T)[1:5]
# who are outliers
print(outliers)

但是如何使用相对距离而不是绝对距离来查找异常值呢?


您只需要计算每个观察值与其聚类的平均距离。您已经有了这些距离,因此您只需对它们进行平均即可。然后剩下的就是简单的索引除法:

# calculate mean distances by cluster:
m <- tapply(distances, kmeans.result$cluster,mean)

# divide each distance by the mean for its cluster:
d <- distances/(m[kmeans.result$cluster])

你的异常值:

> d[order(d, decreasing=TRUE)][1:5]
       2        3        3        1        3 
2.706694 2.485078 2.462511 2.388035 2.354807
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 k 均值算法进行异常值检测 的相关文章

  • 对 data.table 中的列表列执行操作

    假设我有一个data table 例如dt lt data table foo list 1 3 4 6 bar c 2 7 如何使用 dt 框架对 foo 向量列表执行操作 操作可能是将 bar 添加到 foo 返回列表 3 5 11 1
  • 融化R中的下半矩阵

    如何融化下半三角形加对角矩阵 11 NA NA NA NA 12 22 NA NA NA 13 23 33 NA NA 14 24 34 44 NA 15 25 35 45 55 A lt t matrix c 11 NA NA NA NA
  • R 中按时间划分的平均值

    我每秒测量一次化合物浓度 我想求 30 秒和 60 秒的平均值 我一直在阅读这里的帖子 我尝试过lubridate and dplyr 但没有运气 我正在努力完成这项工作 但我一直没能做到 我正在从 SAS 过渡到 R 所以请耐心等待 这是
  • 将第 N 行上的 NA 行插入 data.frames 列表,其中 N 来自列表

    经过几个小时后 我发现自己无法解决以下问题 我有一个数据框列表 我想分别向每个 DF 插入 而不是替换 一行或多行 NA 始终至少一行 要插入的 NA 数量存储在单独的列表中 为了说明这一点 我有以下两个列表 list of datafra
  • 如何在knitr和RStudio中为word和html设置不同的全局选项?

    我正在使用 RStudio 0 98 932 和 knitr 1 6 想要为word和html设置不同的全局knitr选项 例如 想要将word的fig width和fig height设置为6 html的fig width和fig hei
  • 在 R 传单中添加不透明度滑块

    如何在 R leaflet 应用程序中添加滑块来控制特定图层的不透明度 对于这个应用程序 我不想使用闪亮 这里建议 在 R 传单应用程序中添加滑块 https stackoverflow com questions 37682619 add
  • 将 ftransform 与折叠 R 包中的 fgroup_by 一起使用

    我正在尝试重现以下输出dplyr代码与R包裹collapse dplyr Code library tidyverse starwars gt select name mass species gt group by species gt
  • Quantmod 的简单功能不再起作用

    我明天要交论文 我收到了一条关于 quantmod 的非常奇怪的错误消息 这是我在过去几周使用这个包时从未遇到过的 我无法导入特定于道琼斯指数 DJI 的数据 我收到以下错误消息 getSymbols DJI src yahoo from
  • purrr::可能函数可能无法与map2_chr函数一起使用

    我怀疑这是 purrr 包中的错误 但想先在 StackOverflow 中检查我的逻辑 在我看来 possibly功能在内部不起作用map2 chr功能 我正在使用 purrr 版本 0 2 5 考虑这个例子 library dplyr
  • 使用officer R导出时如何提高ggplots的分辨率

    我想将图表导出到 PPT 并使用Officer 包来实现相同的目的 但是 图表的默认分辨率较低 我想更改它 我目前正在使用以下电话 ph with gg p1 type chart res 1200 其中 p1 是 ggplot 对象 运行
  • 如何在 data.table 中分组后使用条件计算行数

    我有以下数据框 dat lt read csv s1 s2 v1 v2 a b 10 20 a b 22 NA a b 13 33 c d 3 NA c d 4 5 NA c d 10 20 dat gt A tibble 6 x 4 gt
  • 在R中循环子文件夹

    我正在 R 环境中包含多个子文件夹的文件夹中工作 我想要循环遍历多个子文件夹 然后在每个子文件夹中调用 R 脚本来执行 我想出了下面的代码 但我的代码似乎添加了 到子文件夹列表 我收到错误 文件中的错误 文件名 r 编码 编码 无效的 描述
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • `as.matrix` 和 `as.data.frame` S3 方法与 S4 方法

    我注意到定义as matrix or as data frame作为 S4 类的 S3 方法 使例如lm formula objS4 and prcomp object 开箱即用 如果它们被定义为 S4 方法 则这不起作用 为什么将方法定义
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • 在ggplot中设置y轴中断

    我在代码中设置中断时遇到困难 我尝试添加breaks seq 0 100 by 20 但似乎无法让它正常工作 本质上我希望 Y 轴从 0 到 100 每 20 个刻度一次 YearlyCI lt read table header T te
  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的

随机推荐

  • 为什么 `useCallback` 不能总是返回相同的引用

    我不明白为什么useCallback每次更新其中一个 deps 时 总是返回一个新的引用 它导致许多重新渲染React memo 本来可以避免的 此实施有 什么问题 如果有 useCallback export function useCa
  • 结果不一致 (C)?

    在此程序中 我编写了多个公式 对于一个公式 我得到了不一致的结果 尽管每次运行的代码和输入都是相同的 有问题的函数是 WqFormula 在某些运行中 我得到正确的结果 即 0 041667 而在其他运行中 我得到 0 000000 我正在
  • int main() 有什么问题?

    我无法计算我在外面和这里看到的 C 代码的次数 它定义了main as int main 当我编译它时 gcc ansi pedantic Wstrict prototypes Werror foo c 它出错了 foo c 2 warni
  • 编写 Gradle 脚本来运行 Eclipse Android 测试项目的单元测试用例

    我有一个简单的 HelloWorld Android 项目 在 Eclipse IDE 中构建 我能够在该项目的 cmd 提示符中成功执行 gradle build 我还为其编写了一个简单的 JUnit Android 测试项目 并且它在
  • 如何将经度、纬度、高程转换为笛卡尔坐标?

    我下载了天气数据 它有经度 十进制 纬度 十进制 和海拔 米 值 没有有关所使用的坐标系的信息 我如何将其转换为笛卡尔坐标 我的尝试如下 但是 我的问题是找到正确的公式 def cartesian self longitude latitu
  • 如何使用 easywebdav 通过 python 连接到 owncloud?

    我正在尝试连接到owncloud与 python 的实例 我找到了easywebdav这应该可以很容易地通过 webdav 连接 但是当尝试连接时 我收到 404 Not Found import easywebdav webdav eas
  • 如何用CSS实现单行省略号

    我希望能够在响应式设计中添加三个点并将文本保留在一行中 例如 我有一个链接 其中包含容器元素内的链接 例如 span 如果文本很长 它将在小屏幕上分两行显示 This is a very long text and it wraps bec
  • 如何在 JSF 中将对象从一个页面传递到另一个页面而不编写转换器

    首先对我的英语感到抱歉 我在 JSF2 中有两个页面 一个用于列出乘客 另一个用于创建 更新乘客 我还有两个 ViewScoped bean 一个包含乘客列表 另一个用于在 pageB 中保留所选乘客 我看到了通过 viewParam 或
  • 如何在 ASP.NET/C# 中检查 URL 的顶级域?

    假设 www mysite fr home 是 URL 现在如何从中获取 fr 只是 fr 实际上我想做的是在检测到访问者的国家 地区后在运行时更改母版页 是的 我可以使用其他类中存在的countryCode变量 但也许我只能这样做 只是想
  • C#(锐利)从txt文件中读取随机行[重复]

    这个问题在这里已经有答案了 谁能告诉我如何从txt文件中读取随机行 我想从 txt 文件中读取随机行并在文本框中仅显示该行 代码示例会很棒 感谢转发 var lines File ReadAllLines path var r new Ra
  • jQuery UI - 加速自动完成

    我的自动完成功能运行良好 但我正在尝试找出使其更快的方法 这是我的 HTML Country
  • LyX 中的 Zed 表示法

    是否可以在 LyX 中创建 Zed 表示法方案 如何做呢 解决了 我通过 MikTeX 安装了 zed csp 样式包 然后 在 LyX 我去了Document gt Settings gt Latex Preamble并添加了 usepa
  • 如何捕获回滚异常

    对 catch 子句中已存在的 SqlTransaction RollBack 实现错误处理的最佳方法是什么 我的代码大致是这样的 using SqlConnection objSqlConn new SqlConnection connS
  • 如何在C#项目中实现和进行OCR?

    我已经搜索了一段时间 并且看到了一些 OCR 库请求 我想知道如何实现最纯粹 易于安装和使用的 OCR 库 并提供安装到 C 项目的详细信息 如果可能的话 我只想像通常的 dll 引用一样实现它 Example using org pdfb
  • 尝试将 yaml 数据转换为结构时输出为空[重复]

    这个问题在这里已经有答案了 我正在尝试将 yaml 数据转换为结构并打印它 我得到的这个程序的输出是空的 package main import fmt gopkg in yaml v2 type example struct variab
  • 当 size < 1 时,geom_sf 大小参数不起作用

    问题 我正在尝试使用 sf 包创建美国州 县的地图 并且geom sf 来自 ggplot2 但我无法得到size多边形边界线宽度的参数geom sf 正确创建细线时size lt 1 e g ggplot sf obj gt geom s
  • 将平面对象数组转换为嵌套对象

    我有以下数组 实际上来自后端服务 const flat Item id a name Root 1 parentId null id b name Root 2 parentId null id c name Root 3 parentId
  • C++ time_t 问题

    我在 C VS 2008 中的日期管理方面遇到问题 根据MSDN 规范 http msdn microsoft com en us library 323b6b3k 28v VS 90 29 aspx time t代表 自 1970 年 1
  • Erlang ping 节点问题

    我在 erlang shell 中做了 1 gt node nonode nohost But 2 gt net adm ping node pang 为什么 什么问题 为什么不打乒乓球 谢谢 你没有启动 Erlang name or sn
  • 使用 k 均值算法进行异常值检测

    我希望你能帮助我解决我的问题 我正在尝试使用 kmeans 算法来检测异常值 首先 我执行算法并选择那些距聚类中心距离较远的对象作为可能的异常值 我不想使用绝对距离 而是想使用相对距离 即对象到聚类中心的绝对距离与聚类中所有对象到其聚类中心