新手问题 Ruby 做机器学习的弱点在哪里?

rubyfan1 · 发布于 2017年04月06日 · 最后由 rubyfan1 回复于 2017年04月08日 · 1304 次阅读
24144

同样是胶水语言,为什么Ruby的机器学习生态圈相比Python差那么多。个人认为Ruby的可读性、可扩展性比Python强很多。 是因为Ruby社区一直没有投入,然后恶性循环导致的么?

共收到 19 条回复
3873

这个全靠社区驱动,底层在numpy, Matplotlib 上差了下来,之后就再难追上了,有network effect

换句话说,python在这方面已经足够好了,为什么要重复造轮子而不是用现成的?

11524

1L说得很有道理。以前我们研究室搞自然语言处理啊,特么偏要强迫每个新生学习Ruby,结果到了后来写惯了Ruby,我还是转行做了web engineer

2455
3lgn21st 回复

这个想法我buy你~

2455
11524gyorou 回复

rails 够吸引

7072

Python没在项目里用过,不做评论。但觉得可以同Julia比较一下。

机器学习,或者科学计算,和其它领域最大的不同就是,它和数学关系密切。有一句话是show me your code。放在机器学习、算法里,反倒是show me your formula来得实在。

因为是和数学打交道,语法越接近数学越好。

比如Julia的方法定义

foo(x) = x
foo(x, y) = x + y
l = (x, y, z) -> x + y + z

再就是是否有为常见问题提供解决方案 比如矩阵运算

julia> A = [[1, 1] [2, 3]]

julia> A + A
 2  4
 2  6

julia> A * A
 3   8
 4  11

julia> transpose(A)
 1  1
 2  3

还有是否能使用现有的lib,Julia可以很轻松的调用C和Fortran,以及python还有java的代码。 t = ccall( (:clock, "libc"), Int32, ())

Type比Class更适合科学计算。

Julia的背后支持者也非常强大,一些大学已经开始使用Julia授课。

最后是速度,Julia足够,当一段代码,一跑就是一天的时候,语言速度优势就提现出来了。

3873
11524gyorou 回复

你们教研室用ruby做nlp? 分词有包吗?

11524
3873cqcn1991 回复

我读的是日本的大学所以基本上是日语的NLP...

分词的话你可以用mecab自己训练一个。 我自己用CRF++自带的MIRA训练过一个。

https://github.com/lengshuiyulangcn/kurumi 不过训练出来的model有90多M,太重了不建议生产实践用。

3873
11524gyorou 回复

那你们画图用啥…ruby根本没画图等等的库啊…

11524
3873cqcn1991 回复

ruby 更多用来处理一些text。反正我画图都是excel和ppt,最多就是算法的流程图之类的介绍而已。制表写论文latex。

3873
11524gyorou 回复

那也太不方便了吧,你做过分词出来画个图都要切出来画,万一结果有问题呢?根本没法调试啊…用python一切就都在notebook里搞定了

11524
3873cqcn1991 回复

很多时候大家都没有觉得不方便,也没有去想更多方便的方法而已。

96

机器学习是需要做很多计算的。其中不乏大量的求和与矩阵运算。这些运算你要是都靠循环来写的话能把自己绕死。 向量化编程才是正确的解决之道。python的pandas提供了非常强大的数据操作功能,有助于写出简洁优雅的代码。Ruby里有个类似的gem叫Daru,但功能真的差太多了……很多时候我都被迫使用循环。

60

pycall 让你不再纠结这样的问题

23882

开源框架太少了!

7634cf

看到这个标题,我在想,如果ruby支持机器学习的话,ruby这门语言会不会变的被人所熟知,学习和使用的人数变的增多呢?

Eda824
60googya 回复

这gem怎么用?

60
Eda824ericguo 回复

那个 gem 的源代码中有 examples, 其存在的意义就是让 rubyist 怎么方便的调用 python 的库, 当然前提要对 python 中的机器学习的库比较熟悉

24144
60googya 回复

兼容好么?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册