0

Je suis nouveau sur scikit-learn, j'essaye de créer un modèle Multinomial Bayes pour prédire les films au box-office. Ci-dessous est juste un exemple de jouet, je ne suis pas sûr si c'est logiquement correct (les suggestions sont les bienvenues!). Le Y correspond à l'estimation brute que j'essaie de prédire (1: < $ 20mi, 2:> 20mi $). J'ai également discrétisé le nombre d'écrans que le film a été montré.Multinomial Naive Bayes avec scikit-learn pour des données continues et catégoriques

La question est, est-ce une bonne approche du problème? Ou serait-il préférable d'attribuer des numéros à toutes les catégories? De même, est-il correct d'incorporer les étiquettes (par exemple "movie: Life of Pie") dans l'objet 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

Pourquoi 'toarray'? 'MultinomialNB' peut gérer les matrices creuses juste très bien. En fait, ce sera beaucoup plus rapide pour ceux-là. –

Répondre

2

En principe, c'est correct, je pense.

Peut-être serait-il plus naturel de formuler le problème comme une régression sur les ventes au box-office.

La fonctionnalité movie est inutile. Le DictVectorizer encode chaque valeur possible en tant que fonctionnalité différente. Comme chaque film aura un titre différent, ils auront tous des caractéristiques complètement indépendantes, et aucune généralisation n'est possible ici.

Il peut également être préférable de coder les écrans en tant que nombre, et non en tant que codage à chaud unique de plages différentes. Inutile de dire que vous avez besoin de bien meilleures fonctionnalités que ce que vous avez ici pour obtenir une prédiction raisonnable.

+0

Merci Andreas! Si je l'essaye avec une méthode de régression, comment dois-je gérer les attributs catégoriels comme "distributeur" (cela fait partie de la question)? – ksiomelo

Questions connexes