小编emi*_*ara的帖子

使用scikit-learn矢量化器和词汇表与gensim

我试图用gensim主题模型回收scikit-learn矢量化器对象.原因很简单:首先,我已经有了大量的矢量化数据; 第二,我更喜欢scikit-learn矢量化器的界面和灵活性; 第三,尽管使用gensim的主题建模非常快,但Dictionary()根据我的经验计算其词典()相对较慢.

之前已经提出过类似的问题,特别是在这里这里,桥接解决方案是gensim的Sparse2Corpus()函数,它将Scipy稀疏矩阵转换为gensim语料库对象.

但是,此转换不使用vocabulary_sklearn矢量化程序的属性,该属性保存单词和要素ID之间的映射.为了打印每个主题的判别词,这种映射是必要的(id2word在gensim主题模型中,描述为"从单词id(整数)到单词(字符串)的映射").

我知道gensim的Dictionary对象比scikit vect.vocabulary_(一个简单的Python dict)复杂得多(而且计算速度慢)......

任何想法使用vect.vocabulary_id2word在gensim模式?

一些示例代码:

# our data
documents = [u'Human machine interface for lab abc computer applications',
        u'A survey of user opinion of computer system response time',
        u'The EPS user interface management system',
        u'System and human system engineering testing of EPS',
        u'Relation of user perceived response time to error measurement',
        u'The generation of random …
Run Code Online (Sandbox Code Playgroud)

python gensim topic-modeling scikit-learn

19
推荐指数
3
解决办法
6780
查看次数

在dc.js/crossfilter中使用带有数组的维度

自版本1.4.0-alpha.06以来,Crossfilter支持数组维度https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_with_arrays

是否可以在dc.js中利用此功能?

我还没有找到任何示例...我知道有没有办法告诉crossfilter将数组元素视为单独的记录而不是将整个数组视为单个键?,但这也适用于早期版本的crossfilter(它没有使用新功能).

crossfilter dc.js

6
推荐指数
1
解决办法
1689
查看次数

D3.js:使用d3.nest()动态添加密钥

d3.nest()用来将平面JSON文件转换为分层树。如果您事先知道数据中的级别,则此方法就很好了:d3.nest()为传递给它的每个键函数创建一个嵌套级别。

但是,我想知道是否存在一种优雅的方式来动态传递键函数。这可能是一个基本问题,但是我的Javascript技能也是基本问题。

这是使用存储在数组中的键名的静态示例:

var levels = ['first', 'second', 'third']

var root = {
    "key":"root", 
    "values": 
        d3.nest()
            .key(function(d){ return d[levels[0]] })
            .key(function(d){ return d[levels[1]] })
            .key(function(d){ return d[levels[2]] })
            .entries(data)
}
Run Code Online (Sandbox Code Playgroud)

现在,我的解决方案是一个if-else循环,该循环以伪动态方式创建不同的嵌套:

// build the nested tree pseudo-dynamically
if (levels.length === 1) {
    var nest = d3.nest()
           .key(function(d){return d[levels[0]]})
           .entries(data);
} else if (levels.length === 2) {
    var nest = d3.nest()
           .key(function(d){return d[levels[0]]})
           .key(function(d){return d[levels[1]]})
           .entries(data);
} else if (levels.length === 3) {
    var nest = d3.nest() …
Run Code Online (Sandbox Code Playgroud)

javascript json d3.js

2
推荐指数
1
解决办法
3701
查看次数