gensim 使sklearn_api中的转换方法能够接受稀疏矩阵作为参数

aurhwmvo  于 4个月前  发布在  其他
关注(0)|答案(5)|浏览(53)

描述

transform 方法(如LdaTransformer)只接受一个BOW列表作为参数,而不是numpy矩阵。从scikit-learn API的Angular 来看,这并不是很好。
fit方法中,通过使用matutils.Sparse2Corpus将稀疏矩阵参数转换为BOW。
https://github.com/RaRe-Technologies/gensim/blob/72d4ff81b37720e287ae37958e138934fcdae7ac/gensim/sklearn_api/ldamodel.py#L61
我认为最好能让所有transform方法在sklearn_api中都能够接受BOW列表和稀疏矩阵作为参数,就像fit方法一样。

oxosxuxt

oxosxuxt1#

听起来合理,感谢你的报告@altescy:+1:
这个问题稍微更深一些:API看起来像sklearn,但使用非sklearn类型的输入和输出,我认为这是一个严重的问题,限制了当前API的使用(例如,这可以与任何sklearn模型自由组合,但这是真正重要的一点)。
我认为,最好只传递/返回scipy/numpy数组,wdyt @altescy ?

bogh5gae

bogh5gae2#

CC: @chinmayapancholi13

1qczuiv0

1qczuiv03#

好的点子。
这个方法看起来很好,可以避免混淆。
我不知道为什么当前的API有两种文档数据类型🤔
如果没有问题的话,最好只使用scipy/numpy数组。

d7v8vwbk

d7v8vwbk4#

我认为这应该与Sklearn API(仅数组)最一致,wdyt @piskvorky?

yws3nbqq

yws3nbqq5#

Sklearn完全不支持流式处理,因此内存矩阵可能没问题。如果人们需要更高性能/可扩展的实现,他们将不得不避免这些 Package 器并直接使用Gensim。

相关问题