我想在函数堆栈跟踪上进行一些数据挖掘,为此我使用的是libsvm 为了处理速度,以稀疏格式表示数据,每个堆栈跟踪都是一个实例,变量是函数,即:
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慢得多
谢谢!
答案 0 :(得分:0)
你几乎没有选择:
a)每次重做整个事情(我认为为libsvm生成输入比libsvm本身更快:))
b)对于第一件事使用偶数而对另一件事使用奇数。所以你的例子看起来像:1 2:1 3:1 1:1 911:1 5:1
这可以避免碰撞,你不需要重做整个事情:)