0

映画の興行収入を予測する多項ベイズ モデルを作成しようとしています。以下は単なるおもちゃの例です。論理的に正しいかどうかはわかりません (提案は大歓迎です!)。Y は、私が予測しようとしている推定総額に対応しています (1: < $20mi、2: > $20mi)。また、映画が上映されたスクリーン数も離散化しました。

問題は、これが問題への良いアプローチかどうかです。それとも、すべてのカテゴリに番号を割り当てた方がよいでしょうか? また、DictVectorizer オブジェクトにラベル (「movie: Life of Pie」など) を埋め込むのは正しいですか?

def get_data():

    measurements = [ \
    {'movie': 'Life of Pi', 'screens': "some", 'distributor': "fox"},\
    {'movie': 'The Croods', 'screens': "some", 'distributor': "fox"},\
    {'movie': 'San Fransisco', 'screens': "few", 'distributor': "TriStar"},\
    ]
    vec = DictVectorizer()
    arr = vec.fit_transform(measurements).toarray()

    return arr

def predict(X):

    Y = np.array([1, 1, 2])
    clf = MultinomialNB()
    clf.fit(X, Y)
    print(clf.predict(X[2]))

if __name__ == "__main__":
    vector = get_data()
    predict(vector)
4

1 に答える 1

2

原則としてこれは正しいと思います。

問題を興行収入の回帰として定式化する方が自然かもしれません。

機能はmovie役に立たない。DictVectorizer は、考えられる各値を異なる機能としてエンコードします。各映画には異なるタイトルが付けられるため、それらはすべて完全に独立した機能を持ち、そこに一般化することはできません.

また、異なる範囲のワンホット エンコーディングとしてではなく、画面を数値としてエンコードする方がよい場合もあります。

言うまでもなく、合理的な予測を得るには、ここにあるものよりもはるかに優れた機能が必要です。

于 2013-04-01T12:11:46.310 に答える