0

MATLAB で独自のコードを記述して、単純ベイズ アルゴリズムを実装しようとしています。連続属性の 1 つにどの分布を選択するか混乱しました。次のような値があります。

         MovieAge :
         1
         2
         3
         4
         ..
         10
         1
         11
         2
         12
         1
         3
         13
         2
         1
         4
         14
         3
         2
         5
         15
         4
         3
         6
         16
         5
         4
         ....
         32
         9
         3
         15

そのようなデータに使用するディストリビューションを教えてください。私のテスト セットでは、この属性にはトレーニング データに含まれていない値が (場合によっては) 含まれます。この問題をどのように処理しますか?ありがとう 15

4

2 に答える 2

1

@Benの答えのように、ヒストグラムから始めるのはいいですね。

私はあなたの入力を受け取り、ヒストグラムは以下のようになります:

ここに画像の説明を入力

histdata値ごとに 1 行で、データを というテキスト ファイルに保存します。

プロットの生成に使用される Python コード:

import matplotlib.pyplot as plt
data = []
for line in file('./histdata'):
    data.append(int(line))

plt.hist(data, bins=10)
plt.xlabel('Movie Age')
plt.ylabel('Counts')
plt.show()
于 2012-12-02T00:40:27.360 に答える
0

この変数が(例に基づいて)連続的ではなく整数値を取ると仮定すると、最も単純な方法はヒストグラムタイプのアプローチです。ある値の確率は、トレーニングデータで発生する回数の割合です。ある数値を超えるすべての値の最終的なビンを検討します(例に基づいて、おそらく20程度)。ゼロカウントで問題が発生した場合は、それらすべてに1を追加します(そのように傾いている場合は、事前にディリクレと見なすことができます)。

パラメトリック形式については、必要に応じてポアソン分布が可能です。qqプロット、または適合度テストでさえ、これがあなたのケースにどれほど適切であるかを示唆しますが、ヒストグラムベースの方法でより良くなると思います。

于 2012-11-30T15:58:31.317 に答える