2016-11-16 4 views
1

Utilisation d'Accord.NET J'ai créé un classificateur NaiveBayes. Il va classer un pixel basé sur 6 ensembles de résultats de traitement d'image. Mes images sont 5MP, donc un jeu d'entraînement de 50 images crée un très grand ensemble de données d'entraînement.Comment puis-je former un classificateur naivebayes de façon incrémentielle?

6 matrice int par pixel * 5 millions de pixels * 50 images. Au lieu d'essayer de stocker toutes ces données en mémoire, existe-t-il un moyen d'entraîner de façon incrémentale le classificateur NaiveBayes? Appeler Learn() plusieurs fois remplace les anciennes données chaque fois plutôt que de les ajouter.

Répondre

0

Il n'est actuellement pas possible de former un modèle Naive Bayes de façon incrémentale en utilisant Accord.NET. Cependant, comme tout ce que Naive Bayes va faire est d'essayer d'adapter certaines distributions à vos données, et puisque vos données ont très peu de dimensions, peut-être pourriez-vous essayer d'apprendre votre modèle sur un sous-échantillon de vos données plutôt que tout cela à la fois. Lorsque vous chargez des images pour créer votre jeu d'entraînement, vous pouvez essayer de supprimer x% des pixels de chaque image. Vous pouvez également tracer la précision du classificateur pour différentes valeurs de x pour trouver le meilleur équilibre entre la mémoire et la précision pour votre modèle (indice: pour un si petit modèle et cette grande quantité de données d'entraînement, je m'attends à ce qu'il ne fasse pas autant différence même si vous avez perdu 50% de vos données).