使用 pROC 绘制 ROC 曲线失败

2024-04-26

我有一个数据集,其组织方式如下:

> head(crypto_data)
                 time btc_price  btc_change btc_change_label eth_price block_size difficulty estimated_btc_sent estimated_transaction_volume_usd
1 2017-09-02 21:54:00  4537.834 -0.06630663              buy   330.727  142521291   8.88e+11           2.04e+13                        923315360
2 2017-09-02 22:29:00  4577.605 -0.05629429              buy   337.804  136524566   8.88e+11           2.03e+13                        918188067
3 2017-09-02 23:04:00  4566.360 -0.05971624              buy   336.938  134845546   8.88e+11           2.01e+13                        910440916
4 2017-09-02 23:39:00  4590.031 -0.05624237              buy   342.929  133910638   8.88e+11           1.99e+13                        901565930
5 2017-09-03 00:14:00  4676.193 -0.03585697             hold   354.171  130678099   8.88e+11           2.01e+13                        922422228
6 2017-09-03 00:49:00  4699.936 -0.03358492             hold   352.299  127557140   8.88e+11           1.99e+13                        910457430
   hash_rate miners_revenue_btc miners_revenue_usd minutes_between_blocks n_blocks_mined n_blocks_total n_btc_mined   n_tx nextretarget
1 7417412092               2395           10839520                   8.00            168         483207    2.10e+11 241558       483839
2 7152504517               2317           10482320                   8.33            162         483208    2.03e+11 236661       483839
3 7240807042               2342           10596900                   8.22            164         483216    2.05e+11 238682       483839
4 7284958305               2352           10642439                   8.14            165         483220    2.06e+11 237159       483839
5 7152504517               2316           10611798                   8.38            162         483223    2.03e+11 237464       483839
6 7064201992               2288           10481960                   8.41            160         483226    2.00e+11 234472       483839
  total_btc_sent total_fees_btc totalbtc trade_volume_btc trade_volume_usd
1       1.62e+14    29597881711 1.65e+15        102451.92        463497285
2       1.60e+14    29202300823 1.65e+15        102451.92        463497285
3       1.60e+14    29234981721 1.65e+15        102451.92        463497285
4       1.58e+14    28991577368 1.65e+15        102451.92        463497285
5       1.58e+14    29179041967 1.65e+15         96216.78        440710136
6       1.57e+14    28844391629 1.65e+15         96216.78        440710136
> str(crypto_data)
'data.frame':   895 obs. of  23 variables:
 $ time                            : POSIXct, format: "2017-09-02 21:54:00" "2017-09-02 22:29:00" "2017-09-02 23:04:00" "2017-09-02 23:39:00" ...
 $ btc_price                       : num  4538 4578 4566 4590 4676 ...
 $ btc_change                      : num  -0.0663 -0.0563 -0.0597 -0.0562 -0.0359 ...
 $ btc_change_label                : Factor w/ 3 levels "buy","hold","sell": 1 1 1 1 2 2 2 2 2 2 ...
 $ eth_price                       : num  331 338 337 343 354 ...
 $ block_size                      : num  1.43e+08 1.37e+08 1.35e+08 1.34e+08 1.31e+08 ...
 $ difficulty                      : num  8.88e+11 8.88e+11 8.88e+11 8.88e+11 8.88e+11 ...
 $ estimated_btc_sent              : num  2.04e+13 2.03e+13 2.01e+13 1.99e+13 2.01e+13 ...
 $ estimated_transaction_volume_usd: num  9.23e+08 9.18e+08 9.10e+08 9.02e+08 9.22e+08 ...
 $ hash_rate                       : num  7.42e+09 7.15e+09 7.24e+09 7.28e+09 7.15e+09 ...
 $ miners_revenue_btc              : num  2395 2317 2342 2352 2316 ...
 $ miners_revenue_usd              : num  10839520 10482320 10596900 10642439 10611798 ...
 $ minutes_between_blocks          : num  8 8.33 8.22 8.14 8.38 8.41 8.26 8.33 8.5 8.69 ...
 $ n_blocks_mined                  : num  168 162 164 165 162 160 157 161 159 156 ...
 $ n_blocks_total                  : num  483207 483208 483216 483220 483223 ...
 $ n_btc_mined                     : num  2.10e+11 2.03e+11 2.05e+11 2.06e+11 2.03e+11 ...
 $ n_tx                            : num  241558 236661 238682 237159 237464 ...
 $ nextretarget                    : num  483839 483839 483839 483839 483839 ...
 $ total_btc_sent                  : num  1.62e+14 1.60e+14 1.60e+14 1.58e+14 1.58e+14 ...
 $ total_fees_btc                  : num  2.96e+10 2.92e+10 2.92e+10 2.90e+10 2.92e+10 ...
 $ totalbtc                        : num  1.65e+15 1.65e+15 1.65e+15 1.65e+15 1.65e+15 ...
 $ trade_volume_btc                : num  102452 102452 102452 102452 96217 ...
 $ trade_volume_usd                : num  4.63e+08 4.63e+08 4.63e+08 4.63e+08 4.41e+08 ...

然后我运行 SVM 并尝试绘制 ROC 曲线:

crypto_linear_svm <- svm(btc_change_label ~ ., data = crypto_trainingDS, method = "C-classification", kernel = "linear")
crypto_linear_svm_pred <- predict(crypto_linear_svm, crypto_testDS[,-3])
linear_crypto_conf_mat <- table(pred = crypto_linear_svm_pred, true = crypto_testDS[,3])
linear_svm_crypto_roc <- plot(multiclass.roc(crypto_testDS$btc_change_label, crypto_linear_svm_pred, direction="<"),
     col="yellow", lwd=3, main="Linear Kernal SVM results, Cryptocurrency Data")

但是,最后一行给了我以下错误:

roc.default 中的错误(响应、预测变量、水平 = X、百分比 = 百分比,:预测变量必须是数字或有序的。

我做错了什么以及如何解决这个问题?我有两个不同的数据集,它们具有不同的结构和组织 - 显示的一个是多类,另一个是二进制的(是或否)。我在两者上都运行了 SVM,但是当我尝试绘制 ROC 时,我得到了相同的错误。

EDIT这是预测的输出:

> crypto_linear_svm_pred
   3    4    5    6    7    8   14   16   17   19   21   26   29   32   34   36   38   39   45   47   49   53   54   57   59   60   61   63   65 
 buy  buy hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold  buy  buy  buy  buy  buy  buy 
  67   69   71   74   78   86   89   91   92   95   96   97   98  105  111  113  115  116  122  123  124  127  132  135  140  141  156  160  161 
 buy  buy hold hold hold hold hold hold hold hold hold hold sell sell  buy  buy  buy  buy  buy  buy  buy  buy  buy hold hold hold hold  buy hold 
 164  166  170  173  174  175  179  184  188  190  196  208  210  212  214  217  218  219  224  225  227  229  238  240  245  249  259  263  267 
hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold  buy 
 273  274  281  282  284  306  307  311  313  315  320  323  324  328  330  332  333  334  336  340  342  343  346  347  349  353  358  361  365 
hold hold  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy 
 374  380  381  382  383  390  392  393  396  399  403  406  407  408  410  435  440  441  444  445  449  453  457  459  460  464  467  468  473 
sell sell sell sell sell sell sell sell sell sell sell sell sell hold hold  buy  buy  buy hold hold hold hold hold hold hold hold hold hold hold 
 483  489  490  492  499  503  511  520  521  530  534  536  538  546  548  553  555  557  558  559  567  571  573  579  581  583  584  586  587 
hold hold hold hold hold hold hold hold hold hold hold hold  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy  buy hold hold hold hold 
 593  595  597  602  603  608  609  614  616  618  628  630  636  639  642  643  645  646  647  648  649  655  660  661  665  668  669  674  675 
hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold 
 676  680  685  687  688  695  698  703  704  713  715  719  720  722  725  729  737  738  740  744  745  746  752  757  760  762  764  768  771 
hold hold hold hold hold hold sell sell sell sell hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold 
 776  778  781  783  784  790  792  805  811  813  814  815  821  822  824  828  829  833  836  837  838  839  843  846  847  848  852  859  861 
hold sell hold hold sell sell sell sell hold sell hold sell hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold hold 
 862  865  869  873  879  881  886  895 
hold hold hold hold hold hold hold sell 
Levels: buy hold sell

这是虹膜数据的示例:

data(iris)
library(e1071)
svm_model = svm(Species~., data = iris)
prob_svm = predict(svm_model, iris)


m.roc = multiclass.roc(iris$Species, as.numeric(prob_svm))

rs <- m.roc[['rocs']]
plot.roc(rs[[1]], lty=4)
sapply(2:length(rs),function(i) lines.roc(rs[[i]],col=i, lty=i))

该方法计算三个 ROC 曲线(setosa:versicolor、setosa:virginica 和 versicolor:virginica)并计算它们的 AUC 平均值。

它有几个缺陷。将预测类别转换为数字就是其中之一。更好的方法是可以使用预测概率,但 pROC 不支持这种行为(我尝试过)。正如 Calimo 指出的那样,ROC 是二元分类器的模式,当存在超过 2 个类别时应谨慎使用。
我仅将训练数据的预测用作示例,在评估分类器时不应该这样做,因为它会高估模型的准确性。

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

使用 pROC 绘制 ROC 曲线失败 的相关文章

随机推荐

  • 与 WiX 3.0 一起安装 WiX 3.5

    是否可以同时安装 WiX 3 0 和 3 5 如果我在安装 3 0 后安装 3 5 它会删除 3 0 文件 如果我尝试在 3 5 之后安装 3 0 它会告诉我已经安装了较新的版本 我正在从 VS 2008 迁移到 VS 2010 因此我的应
  • 获取已安装应用程序的位置 vb.net

    我在vb net上发布了一个应用程序 用户将能够将应用程序安装在计算机上他们选择的任何位置 或者可能不是他们选择的任何位置 而是默认位置 我如何以编程方式获取用户安装应用程序的位置 换句话说 我需要应用程序知道它从哪里运行 我如何检测到这一
  • Android 使卷轴看起来在旋转的最佳方法

    我正在为 Android 制作一个简单的水果机 老虎机 我在想如何才能让 卷轴 看起来在旋转 然后逐渐停止 我的想法是有一个环绕声 然后在顶部随机生成图像 并沿着屏幕向下移动 只有部分图像可见 任何有关想法或如何完成的帮助都将非常棒 我在这
  • Scala 中的 Reader monad:返回、本地和序列

    我正在使用ReaderScala 中的 monad 由scalaz https github com scalaz scalaz图书馆 我对这个单子很熟悉正如 Haskell 中定义的 https wiki haskell org All
  • C:函数指针转换到底是什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设有人想要创建一个可以容纳多个不同类型的函数指针的数组 他将如何去做呢 也许空指针数组可以工作 事实证明 不行 因为为了使用存储在空指针中
  • 在 Chrome 扩展程序中访问 Chrome 设置

    我正在寻找开发一个 chrome 扩展程序 可以访问 wrench gt 选项 gt 引擎盖下的内容设置 那可能吗 我当时正在看API page http code google com chrome extensions api inde
  • 使用 Memcache 缓存 Matplotlib(不会 Pickle)

    我有一个图表 渲染需要 3 秒 然后可以从所述图表中添加一些内容来制作子图表 我想缓存主图表中的轴 以便稍后在渲染子图表时检索并修改它 我怎样才能克服这个错误 这是一个示例测试代码 import pylibmc cache pylibmc
  • 无法很好地理解 spring-mvc 的`@Autowired HttpServletRequest`

    在我们的 Spring 应用程序中 我们使用HttpServletRequest有两种方式 这里的代码是简化的 看起来没什么意义 在控制器中 RequestMapping value hello method RequestMethod G
  • 在保持元素/样式/脚本关系的同时缩小整个目录?

    目前是否存在可以缩小整个项目目录的解决方案 更重要的是 是否存在任何可以缩短类名 id 并在所有文档中保持一致的解决方案 可以扭转这个局面的东西 索引 html div class fooBar div 样式 css fooBar Comm
  • @font-face 字体不起作用

    我正在尝试从本地存储中获取一种可以使用的字体 font face font family const src url const ttf fp title1 font family const trebuchet ms font size
  • WPF - 将鼠标悬停在另一个元素上时隐藏元素

    网格中有一些元素 我想要的只是当鼠标悬停在矩形上时显示 隐藏按钮
  • 在 HTML5 websocket 服务器中切割媒体流,用于基于网络的聊天/视频会议应用程序

    我们目前正在开发一个聊天 文件共享 视频会议应用程序使用 HTML5 websocket https stackoverflow com questions 4220672 implementing webbased real time v
  • 无法在 Android 中将矢量可绘制对象转换为位图可绘制对象

    我正在尝试将位图转换为字节数组 其中我将矢量可绘制图像转换为位图 然后将其转换为字节数组 但是当我打开应用程序时 它向我显示错误类强制转换异常无法将矢量可绘制图像转换为位图可绘制 Resources res getResources Dra
  • 3Leetcode求和算法

    我在使用 3sum 算法的以下输入时遇到问题 我是 得到 超过时间限制 我的算法对于这个输入来说太慢了吗 有什么建议如何改进吗 leetcode原题 给定一个由 n 个整数组成的数组 nums nums 中是否存在元素 a b c 使得 a
  • Over() 函数没有覆盖表中的所有行

    我正在使用 MySQL 练习 SQL 并在 SQL 中遇到了奇怪的行为 假设我有一张这样的表 Delivery table delivery id customer id order date customer pref delivery
  • C# 使用 Linq Expression 进行动态数据库过滤

    我尝试创建通用方法来过滤数据库中的不同实体 以避免为每个实体创建庞大的方法 并使用非常相似的 if 语句组合过滤规则 现在我正在尝试创建表示相等比较的表达式 作为描述要比较的属性和某个值的参数表达式 我的概念如何解决问题以及我根据以下代码片
  • 互动倒计时增加?

    我有一个表单 如果没有完成任何鼠标交互 我想在 5 秒后关闭它 但如果完成任何鼠标交互 我希望它关闭countdown 5 seconds每次交互都会增加 5 秒 这是我到目前为止想到的 int countdown 5 System Tim
  • 将多个 Excel 工作表范围转换为 PDF VBA

    下面的代码是获取 Col E 的状态 如果它是 Include 那么其相应的工作表范围将被转换为 PDF 我已经尝试过了 但它无法正常工作并收到错误invalid procedure call or argument在线上 rng Expo
  • 如何让网络工作者跨域、多浏览器工作? IE SCRIPT5022:安全错误

    我创建了从单独的文件和内联工作人员 blob 调用的网络工作人员 这两种方法在大多数浏览器中都无法一致工作 我按照下面的教程使用 COR http www html5rocks com en tutorials workers basics
  • 使用 pROC 绘制 ROC 曲线失败

    我有一个数据集 其组织方式如下 gt head crypto data time btc price btc change btc change label eth price block size difficulty estimated