Sci*_*ion 6 algorithm machine-learning spam-prevention bayesian
我想我已经正确实施了大部分内容.一部分让我困惑:
零频率问题:当每个类值没有出现属性值时,为每个属性值类组合(拉普拉斯估计器)的计数加1.
这是我的一些客户端代码:
//Clasify
string text = "Claim your free Macbook now!";
double posteriorProbSpam = classifier.Classify(text, "spam");
Console.WriteLine("-------------------------");
double posteriorProbHam = classifier.Classify(text, "ham");
Run Code Online (Sandbox Code Playgroud)
现在说某些地方的训练数据中有"免费"这个词
//Training
classifier.Train("ham", "Attention: Collect your Macbook from store.");
*Lot more here*
classifier.Train("spam", "Free macbook offer expiring.");
Run Code Online (Sandbox Code Playgroud)
但是这个词出现在我的"垃圾邮件"类别的培训数据中,而不是"火腿".所以当我去计算posteriorProbHam时,当我遇到"免费"这个词时我该怎么办.

还是加一个.原因:朴素贝叶斯模型P("free" | spam)和P("free" | ham)完全独立,所以你想要估计每个完全独立的概率.您正在使用的拉普拉斯估算器P("free" | spam)是(count("free" | spam) + 1) / count(spam); P("ham" | spam)是一样的.
如果你想一想不添加它会是什么意思,那就没有意义了:在火腿上看一次"免费"会让垃圾邮件看起来"免费"的可能性降低.
| 归档时间: |
|
| 查看次数: |
4858 次 |
| 最近记录: |