0

Я новичок в scikit-learn, я пытаюсь создать модель Multinomial Bayes для прогнозирования кинокассет. Ниже приведен пример игры, я не уверен, что он логически корректен (предложения приветствуются!). Y соответствует оценке, которую я пытаюсь предсказать (1: < $ 20mi, 2:> $ 20mi). Я также дискретизировал количество экранов, на которых был показан фильм.Multinomial Naive Bayes с scikit-learn для непрерывных и категориальных данных

Вопрос в том, что это хороший подход к проблеме? Или было бы лучше назначать числа для всех категорий? Кроме того, правильно ли вставлять метки (например, «фильм: жизнь пирога») в объект DictVectorizer?

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) 
+1

Почему 'toarray'? 'MultinomialNB' отлично справляется с разреженными матрицами. На самом деле, это будет намного быстрее. –

ответ

2

В принципе это правильно, я думаю.

Возможно, было бы более естественным сформулировать проблему как регресс в продажах кассовых сборов.

Функция movie бесполезна. DictVectorizer кодирует каждое возможное значение как другую функцию. Поскольку у каждого фильма будет другой заголовок, все они будут иметь полностью независимые функции, и вообще никакого обобщения не существует.

Также может быть лучше кодировать экраны в виде числа, а не как одноразовое кодирование разных диапазонов.

Излишне говорить, что вам нужны гораздо лучшие функции, которые у вас есть, чтобы получить разумное предсказание.

+0

Спасибо, Андреас! если я попробую его с помощью метода регрессии, как я должен иметь дело с категориальными атрибутами типа «дистрибьютор» (это часть вопроса)? – ksiomelo

Смежные вопросы