0

我想对函数stacktraces进行一些数据挖掘,为此我使用libsvm并以稀疏格式表示数据以提高处理速度,每个stacktrace都是一个实例,变量是函数,即:

class1 F1,F2,F1,F456,F3  
class2 F4,F4,F4,F56,F3000  
...

在某个地方,我看到的独特功能的注册表不断增长,这就是功能索引的来源。理想情况下,我想使用稀疏格式表示上述实例,并划分为 5 个变量,如下所示:

1 1:1 2:1 1:1 456:1 3:1  
2 4:1 4:1 4:1 56:1 3000:1

这在 libsvm 的格式中是不可能的,所以我将总函数注册表的长度添加到每个组以避免索引冲突,如果我们假设总共有 3000 个函数:

1 1:1 3002:1 6001:1 9456:1 12003:1,  this is how the first instance looks now

如果函数的数量没有改变,这是可行的,但事实并非如此,因为每次添加新函数,都必须重做整个事情。

我使用的是稀疏格式,但也欢迎对其他格式提出建议,我能够使用 Weka 以密集格式使用数据,使用函数名称作为变量,它可以工作,只是比使用 libsvm 慢得多

谢谢!

4

1 回答 1

0

你有几个选择:

a)每次重做整个事情(我认为为 libsvm 生成输入比 libsvm 本身更快:))

b) 第一件事用偶数,另一件事用奇数。所以你的例子看起来像:

1 2:1 3:1 1:1 911:1 5:1

这避免了碰撞,您不必重做整个事情:)

于 2013-09-09T20:00:33.057 回答