我有以下问题: 我有一个数据集(arff),里面存储了:字符、按键保持时间、用户。 因此,有了这些信息,我必须计算一个人在键盘上打字的概率。
如果一个人在键盘上打字,将提取与上述相同的信息(用户、按键保持时间、用户),并将与 arff 文件进行“比较”。结果应如下:我在 arff 文件中有一个用户“John”的数据集。之后,一名用户输入他的用户名“John”并写入文本。结果应该是用户输入的“Johns”与 arff 中存储的“John”数据集等效的概率。 对90%的人来说,这是对的人,对90%的人来说,是约翰。
我希望我能解释我的问题。我的问题是,在这种情况下我应该采用哪个分类器?我用 IBK 做到了,但如果我有 15 个人,概率将除以 15,我得到的概率很小。 概率取决于arff中存储的人数。或者我应该将结果乘以人数以获得真实概率?
最佳答案
注意:分布的所有概率之和必须为 1。
当你有更多的类时,你会得到“小概率”,但这并不是因为它除以类的数量,所以你不会找到你想要的将结果与类数相乘的概率:它不再是一个概率(它很容易变成 >1)。
<小时/>您使用 IBk 获得的概率分布与您想要的不同:它告诉您存储的用户中哪一个与当前用户更相似(约翰 vs 保罗 vs 莎拉的概率等),独立于他所说的名字。
<小时/>您想要的输出是二元分类器的结果,但您需要为存储的每个用户训练一个分类器。
每个分类器的训练集将与您已有的数据集类似,但是(以 John 为例)将有 isJohn
而不是 user
,并且如果 user
是 John,则此新列将包含 true
,否则包含 false
。
编辑
character, key holdtime, user
90, 150ms, John
70, 120ms, Sarah
100, 110ms, Paul
将成为
character, key holdtime, isJohn
90, 150ms, true
70, 120ms, false
100, 110ms, false
该分类器的输出分布为 is John
与 is not John
。
要获得所需的准确输出,您必须为每个存储的用户训练一个分类器,并根据当前用户所说的名称调用正确的分类器。
<小时/>关于使用哪个分类器,我认为没有办法知道哪个分类器最适合您的情况。我通常会尝试一些分类器并选择最好的一个
关于java - 哪个 WEKA 概率分类器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33776151/