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