首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"mode“函数正确吗?

"mode“函数正确吗?
EN

Stack Overflow用户
提问于 2016-02-29 21:36:53
回答 2查看 140关注 0票数 2

Ruby的statiscts (Statsample)似乎给出了错误的答案。模式函数不应该返回数组中最常见的iten?例:4

代码语言:javascript
复制
irb(main):185:0> [1,2,3,2,4,4,4,4].to_vector
=>
#<Daru::Vector:34330120 @name = nil @size = 8 >
    nil
  0   1
  1   2
  2   3
  3   2
  4   4
  5   4
  6   4
  7   4

irb(main):186:0> [1,2,3,2,4,4,4,4].to_vector.mode
=> 2

为什么要返回2

代码语言:javascript
复制
ruby 2.1.6p336 (2015-04-13 revision 50298) [x64-mingw32]

statsample (2.0.1)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-01 00:54:01

是的你是对的维克多!向量库中有一个bug:

代码语言:javascript
复制
[1,2,3,2,4,4,4,4].to_vector
 => 
#<Daru::Vector:70255750869440 @name = nil @size = 8 >
    nil
  0   1
  1   2
  2   3
  3   2
  4   4
  5   4
  6   4
  7   4

[1,2,3,2,4,4,4,4].to_vector.frequencies
 => {1=>1, 2=>2, 3=>1, 4=>4} 
[1,2,3,2,4,4,4,4].to_vector.frequencies.values
 => [1, 2, 1, 4] 

然后从具有给定索引的基数组中获取最大值的索引并返回值(在本例中为第4位置->值2 )。它是由这个方法完成的

代码语言:javascript
复制
    def mode
      freqs = frequencies.values
      @data[freqs.index(freqs.max)]
    end

解决办法

您可以使用以下方法来代替mode方法:

代码语言:javascript
复制
[1,2,3,2,4,4,4,4].to_vector.frequencies.max{|a,b| a[1]<=>b[1]}.first
 => 4 
票数 3
EN

Stack Overflow用户

发布于 2016-03-01 03:04:29

我同意Jakub的说法。这是daru向量模块中的模态法中的一个bug。状态样本中所有与向量相关的方法都是基于达鲁的。我已经提交了一个拉请求达鲁修复这个错误,希望这将在下一个发布版本中实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35710144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档