ここから本文です

C言語で迷惑メールの分類ができるプログラムが欲しいです。 例えば24までの数字...

アバター

ID非公開さん

2019/4/2123:55:12

C言語で迷惑メールの分類ができるプログラムが欲しいです。

例えば24までの数字があり25に来る迷惑メールを当てたいです。

(予測したい)

1~24

1 0 0 1 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1・・・25!

1=迷惑メール
0=普通のメールです。

どのようなプログラムになりますか?
ベイズ統計などの知識も必要ですが、まったくわかりません。

簡単なものでいいので、使えそうなコードをお願いします。

閲覧数:
41
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

cat********さん

2019/4/2423:24:59

今、ベイズ統計的なソフトを作っていますが、、、あくまで雑な素人のわかっている範囲でということで。

で、一番簡単なナイーブベイス判定で考えますね。
でも、このケースって、ベイズ統計向きじゃなく、普通の統計手法でも問題がないと思うよ。


事前確率はわからないので、迷惑メール、通常メール、両方共0.5としますね。
確認されているのは、迷惑メールが14、通常メールが10なので。
迷惑メールが来る尤度は0.58、通常メールは0.42。(第二位で四捨五入しています。

周辺確率は、それぞれの(事前確率×尤度)を足したもの。

で、事後確率を計算すると。
(0.5*0.58)/((0.5*0.58)+(0.5*0.42))

迷惑メールが来る確率は、0.58で、58%です。
事前確率が0.5で、原因がひとつだけなので、なんの変化もないですね。
普通の統計手法と、同じ結果です。

仮に、事前確率を、迷惑メールを0.58、通常メールは0.42とすると。
同様の計算をして、0.66で、66%ということになります。
こちらのほうが、ベイズっぽいか。

25通目がどっちかわかれば、事後確率を事前確率にして、さらに計算をして、事後確率を変えていくという手法です。

C言語はわからないので、あとは実装してください。
四則演算でできるので、当てはめれば、比較的に簡単だと思います。

でも、C言語だとライブラリとしてあるんじゃないかな?
探してみてはどうですか?

私の不理解な点や、わかりづらい点があれば、申し訳ない。

  • cat********さん

    2019/4/2500:06:56

    ああ、あと、C言語はわかりませんが、多倍長数(0がいくつも並ぶような小さい数とか)が、言語仕様として使えない場合は、こちらもライブラリか、自作してください。

    Googleの検索結果を眺めただけですが、C言語のデフォルトでの多倍長数演算ができないのか?できるけどめっちゃ遅いのか?のかが、無知なのと、そこまで興味もないので、判断がつきませんでした。

    複数のデータから、尤度とかを計算するときに、あっというまに、数が小さくなり、0が並び、多倍長数演算でないと、数値的にエラーになります。

    その点は注意で。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/4/26 11:00:20

大変、参考になりました。
ありがとうございます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる