【发布时间】:2019-10-15 15:50:00
【问题描述】:
以下代码来自 Ruby Gem rroc 的文档。我迫切需要为我的 AI 项目计算 AUC。但是我几乎没有 Ruby 文件 I/O 的知识,也没有机会学习。文档说 rroc 需要一个 n×2 数组,但下面的第一行代码表明数据在 csv 文件中,它将被格式化为 my_data 以便 roc 计算 auc。
我已经尝试了 csv 数据和数组的所有可能组合作为第一行读取或直接输入到计算 auc 的行的两个文件。充其量代码可以正常工作,没有错误,但输出为 0。我希望,如果我对该行的作用有更全面的了解,我可以解决问题或放弃之前版本的 gem宝石被证明是过时的,这个已经 8 岁了。我从 gem 作者引用的文章中获取了数据,并且很确定这不是问题,但是,...
所以,为了细化这个问题:从那句话中,我们能知道“some_data.cvs”中应该包含什么样的数据吗?以及如何制作 my_data?
require 'rroc'
my_data = open('some_data.csv').readlines.collect { |l| l.strip.split(",").map(&:to_f) }
auc = ROC.auc(my_data)
puts auc
下面我复制了两次运行的输出,第一次是读入数组数据,第二次是 csv 值(每个都在单独的文件中)。为了确定,我添加了一行来读出输入文件。
RoyiMac:ruby $ ruby PDaucT.rb
[[90, 1], [80, 1], [70,-1], [60,1], [55,1], [54,1], [53,-1], [52,-1], [51,1], [50,-1], [40,1], [39,-1], [38,1], [37,-1], [36,-1], [35,-1], [34,1], [33,-1], [30,1], [10,-1]]
0.0
RoyiMac:ruby $ ruby PDaucT.rb
90,1,80,1,70,-1,60,1,55,1,54,1,53,-1,52,-1,51,1,50,-1,40,1,39,-1,38,1,37,-1,36,-1,35,-1,34,1,33,-1,30,1,10,-1
0.0
【问题讨论】:
-
运行 REPL 中的每一段代码以查看它正在创建什么也一样快,不是吗? (同时使用
collect和map很奇怪,但这是次要的。)我的意思是,希望readlines是不言自明的,而collect/map是非常典型的操作。除了auc没有提供您认为应该得到的结果之外,代码的具体问题是什么? -
这段代码会进行简单的 CSV 解析。正确的方法是使用built-in CSV module。
-
请花点时间为您的问题写一个新标题。这个标题是完全通用的,无法深入了解您的要求。请参阅How do I ask a good question?,具体来说:“标题是潜在回答者首先看到的内容,如果您的标题不感兴趣,他们将不会阅读其余部分。因此,请重视。”
-
如果您能准确地解释您对这些方法的文档不清楚的地方,以及您执行代码的哪些部分,将会很有帮助> 和 不 明白。你知道什么是变量吗?你知道什么是消息发送吗?你知道什么是任务吗?你知道什么是参数列表吗?你知道什么是块吗?你知道什么是参数列表吗?你知道什么是字符串吗?你知道什么是浮标吗?你知道什么是常数吗?等等。一方面,这将使我们能够集中我们的答案。其次,这将使 Ruby 开发人员能够……
-
... 改进文档,以便未来的开发人员不会遇到与您相同的问题。帮助世界变得更美好!