问:R 中的 KNN——奇怪的行为

2023-12-28

有谁知道为什么下面的 KNN R 代码对不同的种子给出不同的预测?这很奇怪,因为 Kpost).

library(class)

set.seed(642002713)
m = 20
n = 1000
from = -(2^30)
to = -(from)
train = matrix(runif(m*n, from, to), nrow=m, ncol=n)
trainLabels = sample.int(2, size = m, replace=T)-1
test = matrix(runif(n, from, to), nrow=1)

K <- 5

seed <- 544336746
set.seed(seed)
pred_1 <- knn(train=train, test=test, cl = trainLabels, k=K)
message("predicted: ", pred_1, ", seed: ", seed)
#predicted: 0, seed: 544336746

seed <- 621513172 
set.seed(seed)
pred_2 <- knn(train=train, test=test, cl = trainLabels, k=K)
message("predicted: ", pred_2, ", seed: ", seed)
#predicted: 1, seed: 621513172

手动检查:

euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))
result = vector(mode="numeric", length=nrow(train))
for(i in 1:nrow(train)) {
  result[i] <- euc.dist(train[i,], test)
}
a <- data.frame(result, trainLabels)
names(a) = c("RSSE", "labels")
b <- a[with(a, order(sums, decreasing =T)), ]
headK <- head(b, K)
message("Manual predicted K: ", paste(K," class:", names(which.max(table(headK[,2])))))
#Manual predicted K: 5  class: 1

将给出预测 1,其中 Top K(=5) RSSE:

RSSE             labels
28479706980      1
28472893026      0
28063242772      1
27966740954      1
27927401005      1

因此,大多数是明确定义的+ RSSE 中不存在小浮动差异问题。


当我缩放和居中数据时 -包括测试集!,那么我得到的两个预测都是 0。

我的预处理:

sc<-function(x){(x-mean(x))/sd(x)}
train<-apply(train,1,sc)
train<-t(train)
test<-apply(test,1,sc)
test<-t(test)

并获得:

> seed <- 544336746
> pred_1 <- knn(train=train, test=test, cl = trainLabels, k=K)
> message("predicted: ", pred_1, ", seed: ", seed)
predicted: 0, seed: 544336746

> seed <- 621513172
> pred_2 <- knn(train=train, test=test, cl = trainLabels, k=K)
> message("predicted: ", pred_2, ", seed: ", seed)
predicted: 0, seed: 621513172

手动检查我是否编辑了此表格

a <- data.frame(result, trainLabels)
names(a) = c("RSSE", "labels")
b <- a[with(a, order(a$RSSE)), ]
headK <- head(b, K)
message("Manual predicted K: ", paste(K," class:", names(which.max(table(headK[,2])))))
Manual predicted K: 5  class: 0

和结果:

       RSSE labels
3  43.48199      0
17 43.61283      1
7  43.63948      1
8  43.69730      0
19 43.78931      0    
6  43.88009      0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

问:R 中的 KNN——奇怪的行为 的相关文章

  • 如何绘制具有显着性水平的箱线图?

    前段时间问了一个关于绘制箱线图的问题Link1 https stackoverflow com questions 14604439 plot multiple boxplot in one graph 我有一些包含 3 个不同组 或标签
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • 如何使用 tidymodels 和工作流集在同一数据集上拟合多个不同的线性模型

    我想评估同一数据集上多个 主要是 线性回归模型的性能 我想也许使用tidymodels包连同workflowsets workflow set 可能会起作用 我按照这个例子here https workflowsets tidymodels
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对
  • 如何使用 dplyr 独立过滤每列的行

    我有以下内容 library tidyverse df lt tibble tribble gene colB colC a 1 2 b 2 3 c 3 4 d 1 1 df gt A tibble 4 x 3 gt gene colB c
  • 从 csv 文件中读取奇数行

    这看起来相当简单 我只需要从 R 中的数据文件中读取奇数行并创建一个新的数据框 我怎样才能实现这个目标 read csv filename csv c TRUE FALSE 怎么运行的 功能read csv用于读取整个文件并返回包含所有行的
  • 显示特定颜色

    我正在研究颜色分类 我正在用特定颜色初始化一个矩阵 以便可以获得红色 蓝色或绿色的 16x16 矩阵 代码如下 library rgl color1 lt function n lt 3 m lt 16 a lt list numeric
  • 使用 geom_tile() 的 R ggplot 热图:如何按年份排序并在 y 轴上显示所有年份?

    在研究了哈德利的书并在这里搜索后 我创建了一个由年和月矩阵组成的热图 颜色根据时间序列变量的百分比变化而变化 热图和我用来获取它的代码如下所示 我还有一些我自己无法解决的问题 1 如何对矩阵进行排序 排序 以便 y 轴中的年份从最早到最晚
  • R:如何应用输出多列数据帧的函数(使用 dplyr)?

    我想查找数据框中某一特定列与所有其他列之间的相关性 p 值和 95 CI broom 包提供了一个示例 说明如何使用带有 dplyr 和管道的 cor test 在两列之间执行此操作 对于 mtcars 和 mpg 列 我们可以与另一列进行
  • R - 在浏览器中获取帮助而不是内置的 R 帮助程序

    我见过 R help 的两种不同行为 当你输入 density例如 帮助已在您的默认浏览器中打开 帮助在内置 R 帮助程序中打开 R 中的窗口 我目前有第二种行为 但我想在浏览器中打开帮助 我可以轻松地在这两种行为之间切换吗 无需重新安装
  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • 将密度曲线拟合到 R 中的直方图

    R中有没有可以将曲线拟合到直方图的函数 假设您有以下直方图 hist c rep 65 times 5 rep 25 times 5 rep 35 times 10 rep 45 times 4 看上去很正常 但其实是歪曲的 我想拟合一条倾
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 指定 R 中 hist() 中的 bin 数量?

    我尝试指定垃圾箱的数量hist R为10 如下 gt hist x breaks 10 但垃圾箱的数量并不完全是 10 我尝试了几个其他数量的垃圾箱 结果发生了同样的情况 hist says breaks可以指定 给出直方图单元格数量的单个
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q

随机推荐

  • 如何以与应用程序启动器相同的方式在 iPhone 上“闪耀”png?

    我想向用户展示当应用程序启动器将其方形平面 png 图像转换为正常的 闪亮 图标时会是什么样子 例如圆角和玻璃效果 Thanks 对于图标上 闪耀 的应用程序内表示 您可以使用以下代码创建一个绘制闪耀渐变的自定义 UIViewhere ht
  • 如何将变量的值传递到命令的标准输入?

    我正在编写一个应该有点安全的 shell 脚本 即不通过命令参数传递安全数据 并且最好不使用临时文件 如何将变量传递到命令的标准输入 或者 如果不可能 我如何正确使用临时文件来完成此类任务 在 Bash 中将值传递到标准输入非常简单 you
  • 测试移除方法而不调用添加方法

    我正在为管理标签对象树的类编写测试 public class Tag public virtual int Id get set public virtual string Description get set private IList
  • 用C语言编写的快速排序

    我正在阅读 K R 的 ANSI C 我遇到了 qsort 程序 我需要一点帮助 假设我有 9 个元素 索引为 0 gt 8 请阅读评论 看看我的理解是否正确 非常感谢你的努力 void qsort int v int left int r
  • 错误:编译规则集失败:“loader”上的查询参数已被删除,以支持“options”属性

    PS C Projects webpack react starter gt npm run start 电子邮件受保护 cdn cgi l email protection开始 webpack服务 模式开发 env开发 hot 端口300
  • 在.Net Core 2.1中使用FirstOrDefault时抛出System.Linq.Expressions异常

    我收到了大约 300 多个异常 这些异常在我的服务器输出中被垃圾邮件标记为 Exception thrown System ArgumentException in System Linq Expressions dll 我正在使用的查询如
  • JavaFX:多次使用线程

    我是 JavaFX 新手 我对线程有一个小问题 我可以执行它两次 但我找不到原因 这是我的代码的总结 Task
  • Android:旋转并显示文件中的图像

    我有一个非常简单的 ImageView 布局 我的应用程序打开相机 保存图像 然后在 ImageView 中显示图像BitmapFactory decodeFile 唯一的问题是它是旋转的 据我了解 a 这是由于手机的摄像头默认为横向 因此
  • wpf 中的 ItemsPanelTemplate 选择器?

    我需要根据控件上的依赖属性设置列表框的 ItemsPanelTemplate 属性 如何使用 DataTemplateSelector 来做到这一点 我有类似的东西
  • 如何将 XML Word 文档转换为 DOCX?

    我收到了一系列文件夹 其中包含大量 xml 格式的 Word 文档 它们每个都包含一些 VBA 代码 但所有代码都已经运行过 所以我不需要保留它 我需要打印每个文件夹中的所有文件 但由于网络上 XML 文件的限制 我无法简单地从 Windo
  • FIELDDATA 数据太大

    我打开 kibana 并进行搜索 然后收到分片失败的错误 我查看了 elasticsearch log 文件 看到了这个错误 org elasticsearch common breaker CircuitBreakingException
  • 使用 gnuplot 的向量场

    如何绘制矢量场 其中每个点 x y 的方向由下式给出tangent alpha f x y 据我所知 gnuplot 只能在从文件读取数据时绘制向量场 您的文件必须有 4 列 x y deltax 和 delta y 然后 gnuplot
  • Unity aab 不符合 Google Play 64 位要求

    我有一个 Unity 项目 正在从 APK 切换到 AAB 应用程序包 以前 当我将其构建为 APK 时 Google Play 控制台告诉我该 APK 兼容 64 位 现在我正在构建 aab 我收到警告 此版本不符合 Google Pla
  • 有趣的 SQL 连接日期之间的日期

    首先 感谢任何帮助我解决这个问题的人 我使用的是 SQL 2005 但如果 05 中没有可用的解决方案 可以使用 2008 我有一行数据 如下所示 select from mySPtable myPK Area RequestType St
  • 可靠地显示 matplotlib(0.99 到 1.3.1)数字而不会阻塞

    有没有办法在 Python 2 65 Matplotlib 0 99 中显示 pyplot 图 而不锁定其他所有内容 我有一个带有 Pmw GUI 的程序 在 Python 2 75 和 Matplotlib 1 3 1 上运行 在 Win
  • AppCertDlls:病毒导致 Win32 上的进程创建速度减慢

    大约两个月来 我在 Windows XP Home SP3 上遭受了严重的进程创建惩罚 这个问题在创建大量进程的任务中最为明显且烦人 例如 shell 脚本 顺便说一句 Cygwin 上的 bash 脚本 Makefile 或解压 IzPa
  • 增强导入的打字稿界面

    我正在使用一个包 ko 组件路由器 https github com Profiscience ko component router 具有以下 简明 类型定义 索引 d ts export IContext Context from co
  • Angular 2 中 JavaScript 堆内存不足

    我正在使用 Angular CLI 请检查我的 CLI 信息 angular cli 1 2 1 node 6 10 0 os win32 x64 angular animations 4 1 1 angular common 4 0 0
  • EF 7:如何加载一对多关系中的相关实体

    我有以下代码 为什么我的导航属性 课程中的要求和要求中的课程 为空 public class Course AbsEntity Key public string Title get set public string Term get s
  • 问:R 中的 KNN——奇怪的行为

    有谁知道为什么下面的 KNN R 代码对不同的种子给出不同的预测 这很奇怪 因为 Kpost library class set seed 642002713 m 20 n 1000 from 2 30 to from train matr