R 中的 SVM:“预测器必须是数字或有序的。”

2024-01-10

我是 R 新手,遇到了这个问题:我想比较两种预测技术(支持向量机和神经网络),将它们应用于某些数据,并且我想比较它们的性能。为此,我使用 ROC 曲线。该代码应该计算 ROC 曲线下的面积,但它不起作用。神经网络代码工作正常,但是当 SVM 部分执行时出现此错误:

> aucs

roc.default(响应、预测变量、auc = TRUE, ...) 中的错误: 预测变量必须是数字或有序的。

> obj.roc

roc.default((dtest$recid == "SI") * 1, lr.pred) 中的错误: 预测变量必须是数字或有序的。

这是我的代码。

library(stats)
library(pROC)
library(nnet)
library(e1071)
library(rpart)

data <- read.table("data.csv", header=T)

set.seed(1234)
ind    <- sample(2, nrow(data), replace=TRUE, prob=c(0.8, 0.2))
dtrain <- data[ind==1,]
dtest  <- data[ind==2,]

# Variables for storing comparison results #
bestAuc = 0
bestIdx = 0

# Support Vector Machines
lr.fit  <- svm(recid~., data=dtrain, cost=1000, gamma=1, probability=TRUE)
lr.pred <- predict(lr.fit, dtest, type="response")
aucs    <- auc((dtest$recid=="SI")*1, lr.pred)
obj.roc <- roc((dtest$recid=="SI")*1, lr.pred)

print("SVN (default)")
bestAuc = aucs # Initialize


# Neural networks
lr.fit  <- nnet(recid~., data=dtrain, size=4, maxit=500, decay=1, trace=FALSE)
lr.pred <- predict(lr.fit, dtest, type="raw")
aucs    <- auc((dtest$recid=="SI")*1, lr.pred)
obj.roc <- roc((dtest$recid=="SI")*1,  lr.pred )

if(aucs > bestAuc) {
  bestAuc <- aucs
  bestIdx <- 1
  print("Neural networks")
}

我一直在寻找信息,但似乎关于我正在使用的方法的信息很少。我看到一个名为 ROCR 的包,我认为它可能有用,但我也遇到性能函数错误。我对所有这些库有点迷失,所以我尝试坚持我最初的解决方案,没有任何改进。我应该怎么办?


EDIT:

该解决方案基于 Calimo 的想法。预测的返回值没有给出我想要的格式的数据,所以我需要使用这个:

lr.pred <- attr(lr.pred,"probabilities")[,c("SI")]

该句子获取 ROC 曲线中要分析的列。


正如错误消息所示,您需要 lr.pred 中的数字向量或有序因子。这里的问题是预测(对于 svm)返回预测的类,使得 ROC 练习几乎毫无用处。

您需要的是获得内部分数,例如类别概率:

lr.pred <- predict(lr.fit, dtest, probability = TRUE)

(您必须选择获得第一类或第二类的概率。另请注意type = "response"被忽略。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中的 SVM:“预测器必须是数字或有序的。” 的相关文章

随机推荐

  • 查看 RadioButtonList 是否具有选定值的最佳方法是什么?

    我在用 if RadioButtonList VolunteerType SelectedItem null 或者怎么样 if RadioButtonList VolunteerType Index gt 0 或者怎么样 根据安德鲁 黑尔的
  • tomcat请求的资源()不可用[重复]

    这个问题在这里已经有答案了 我知道这是一个非常常见的问题 因为我在几个论坛中发现了许多与此相关的问题 包括SO 但我还没有找到解决办法 我的 web xml 位于 WEB INF 中
  • 使用下拉列表过滤表(dataTables)

    我正在使用 dataTables jQuery 插件 非常棒 但我无法根据选择框的更改来过滤我的表 功能 document ready function msds table dataTable sPaginationType full n
  • 即使启用了 SSL,Request.URL 也始终返回 http

    我准备了一个 ASP NET Web 应用程序 ASP NET V2 0 并在我的 IIS V7 5 中配置了它 我在我的应用程序中使用了Request Url AbsoluteUri 它在我的服务器中运行良好 我在客户端的服务器计算机 2
  • 找到重叠圆圈的新位置

    我正在尝试编写一个代码 对于给定的圆列表 list1 它能够找到新圆 list2 的位置 list1 和 list2 具有相同的长度 因为对于 list1 中的每个圆 都必须有一个来自 list2 的圆 每对圆 假设 list1 中的 Ci
  • 从插件添加自定义页面模板

    我正在努力构建我的第一个 WordPress 插件 并且需要它为登录屏幕动态添加自定义页面等 我能找到的唯一接近我需要的东西就在这里 WP 使用插件目录中的文件作为自定义页面模板 https stackoverflow com questi
  • 单线程 JavaScript 下的动画

    JavaScript 是一种单线程语言 因此它一次执行一个命令 异步编程是通过以下方式实现的Web APIs 用于事件处理的 DOM 用于 AJAX 调用的 XMLHttpRequest 用于 setTimeout 的 WindowTime
  • 在 Jenkins 中运行 XCodeBuild 时出现代码签名错误

    不重复类似的问题 如下文进一步解释 从 Jenkins 中运行 XCodeBuild 时出现代码签名错误 但它可以从命令行或 Xcode 中构建正常 过去有几个人遇到过这个问题 他们的共同主题是 Jenkins 在启动时作为守护程序用户运行
  • 在 C# 中动态生成委托类型

    我们有一个要求 需要动态生成委托类型 我们需要根据输入参数和输出生成委托 输入和输出都是简单类型 例如 我们需要生成 int Del int int int string and int Del2 int int string int 任何
  • Super POM,Gradle中层次管理的Parent POM类型

    我们目前使用 Maven 作为构建工具 并且有一个迁移到 Gradle 的指令 我们当前的设置是 我们有一个超级 POM 它定义了所有第三方依赖项 各种插件 distributionManagement URL 并且该 POM 已上传到我们
  • 禁用大型项目​​中的组件

    有很多开发人员和初级人员 我想禁用某些组件 例如
  • 如何在 Chrome 浏览器中调试 AngularJS [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在研究 AngularJS 我想在chrome中调试代码 在 Firefox 中 我可以在 Firebug 的帮助下调试它 任何想法 谢
  • Netty-无法访问类 jdk.internal.misc.Unsafe

    当我将 Java 从 8 升级到 11 时 我收到来自 Netty 的错误 jdk internal misc Unsafe 详细信息如下 我知道这是一条调试级别消息 我可以更改日志级别以忽略它 但我不确定当我忽略它时是否会出现其他问题 例
  • 等待多个 Akka FSM 消息

    我有一个 Akka FSM actor 在收到消息后运行以下伪代码ReadyState lookupA Wrapper Lookup A lookupB Wrapper Lookup B lookupC Wrapper Lookup C g
  • 在 Visual Studio 中折叠相关文件

    在 Visual Studio 中 大多数人都会注意到相关文件可以折叠为一个 例如 Form1 cs Form1 Designer cs 我正在创建一个 DAL 库 并将部分类拆分为多个文件 例如 SomeTableClass cs Som
  • windows下“我的电脑”文件夹的路径是什么?

    我正在使用 Visual Studio IDE 开发 C windowsform 项目 我用CFileDialog类要求用户选择要打开的文件 它显示通常打开的文件选择窗口 我希望显示的默认文件夹与单击 我的电脑 时访问的文件夹相同 其中显示
  • Visual Studio 中的引用属性的别名是什么?

    在 Visual Studio 中的 C 项目中 展开 References 文件夹 然后查看任何引用的属性 您会看到 Aliases 属性 在项目中 该属性具有 全局 值 有人可以告诉我这个属性的用途以及如何使用它吗 Thanks 您可能
  • MySQL 扩展显示

    是否有相当于 psql 的 x 来查看新行中每列的记录 Append G到语句末尾而不是分号 SELECT FROM table name WHERE condition G
  • array_multisort():数组大小不一致[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下方法在其子数组的基础上对数组进行排序array multisort 功能 在努力的同时 print r mar echo br arr2 array multisort mar array we
  • R 中的 SVM:“预测器必须是数字或有序的。”

    我是 R 新手 遇到了这个问题 我想比较两种预测技术 支持向量机和神经网络 将它们应用于某些数据 并且我想比较它们的性能 为此 我使用 ROC 曲线 该代码应该计算 ROC 曲线下的面积 但它不起作用 神经网络代码工作正常 但是当 SVM