私はそれのほとんどを正しく実装したと思います。一部が私を混乱させました:
ゼロ頻度の問題: 属性値がすべてのクラス値で発生しない場合、すべての属性値とクラスの組み合わせ (ラプラス推定量) のカウントに 1 を追加します。
これが私のクライアントコードの一部です:
//Clasify
string text = "Claim your free Macbook now!";
double posteriorProbSpam = classifier.Classify(text, "spam");
Console.WriteLine("-------------------------");
double posteriorProbHam = classifier.Classify(text, "ham");
ここで、「無料」という単語がトレーニング データのどこかに存在するとします。
//Training
classifier.Train("ham", "Attention: Collect your Macbook from store.");
*Lot more here*
classifier.Train("spam", "Free macbook offer expiring.");
しかし、単語はカテゴリ「スパム」のトレーニング データにのみ存在し、「ハム」には存在しません。posteriorProbHam を計算するとき、「無料」という言葉に出くわしたらどうしますか。