<ENGLISH>
Hi, I hope you're doing well. I'm so sleepy... because gym activities in morning time. But I'd like to resume my process ... with drink :stuck_out_tongue_closed_eyes: yahoo!
So today's topic is finally ... machine learning! we already got necessary elements for learning ant test, so only what I have to do, train my machine! Start ... but I have to say one thing before starting.
I can't do coding of Machine Learning...!
Really sorry, oh, stop!! don't through a stone in you hand ... yep, light. I don't make it actually I can't. Instead, I'd like to use script from another site. And I think you know it. Here. Commençons par l'apprentissage automatique Partie 3 Implémentons un filtre bayésien --gihyo.jp This is very good site for learning Machine Learning as entrance. I really recommend it.
So today, that's call it for today... ? Humm. Actually I have to change some points to apply to my purpose. I'd like to show some change how I can change it. Nothing of machine learning today...
def train(self, doc, cat):
word = getwords(doc)
for w in word:
self.wordcountup(w, cat)
self.catcountup(cat)
This is train function: Got words in doc then cat value amounts are counted up for the words. However this is only for one category by one web content. However there are two or upper category will also be tagged for one web content. So I changed the script like this.
def train(self, doc, cats):
word = getwords(doc)
for w in word:
for cat in cats:
self.wordcountup(w, cat)
self.catcountup(cat)
Use cats value as list. Not single string. using for to count up each category by words.
Next is to modifying the result showing. Original script is like this.
def classifier(self, doc):
best = None
max = -sys.maxint
word = getwords(doc)
for cat in self.catcount.keys():
prob = self.score(word, cat)
if prob < max:
max = prob
best = cat
return best
This function returns the best category name. However I'd like to show all category and probability. So I modified like this.
def classifier(self, doc):
best = None
max = -sys.maxint
word = getwords(doc)
pList = []
for cat in self.catcount.keys():
prob = math.exp(self.score(word, cat))
pList.append([cat, self.score(word, cat)])
return sorted( pList, key=lambda prob: prob[1], reverse=True)
Previous code, just return maximum probably tag. But I'd like to know all tag's result. so return the list.
The engine of machine language is just using other person's idea... Next I'd like to show you the result of the machine learning and consideration.
Salut, c'est Umemura.
J'écris toujours une phrase après avoir bu une canette de bière. C'est bien, mais c'est juste.
Donc, aujourd'hui, je vais enfin passer au cercle principal de l'apprentissage automatique. Non, je suis désolé de vous avoir fait attendre si loin. Ça va enfin commencer. Non non. .. Je dois m'excuser pour une chose.
** Nous ne coderons pas l'apprentissage automatique cette fois! ** **
Non, arrêtez-vous et ne jetez pas de pierres! ··· C'est vrai. Je ne le ferai pas. Je ne peux pas dire ça. Au lieu de cela, nous utiliserons l'exemple de code de Native Bayes du site suivant pour l'apprentissage automatique.
Commençons par l'apprentissage automatique Partie 3 Implémentons un filtre bayésien --gihyo.jp
Cet article et cette série sont très instructifs. En fait, j'ai également commencé l'apprentissage automatique avec cet article comme point de départ. C'est une structure très polie que n'importe qui peut travailler sur l'apprentissage automatique une fois qu'il se souvient de la connaissance de la probabilité, de l'algèbre et de la différenciation en mathématiques au secondaire.
Eh bien, le contenu d'aujourd'hui est terminé. .. .. Eh bien! Je suis seul, alors aujourd'hui, je voudrais vous présenter comment j'ai modifié ce code Native Bayes. Tout d'abord, la partie suivante.
def train(self, doc, cat):
word = getwords(doc)
for w in word:
self.wordcountup(w, cat)
self.catcountup(cat)
Ici, doc est une phrase à apprendre et cat est une balise à appliquer, mais l'original est sous une forme où une seule balise peut être attachée à une phrase. Cependant, cette fois, nous pouvons ajouter plusieurs balises, alors définissons cat sur chats afin que nous puissions mettre une liste de balises.
def train(self, doc, cats):
word = getwords(doc)
for w in word:
for cat in cats:
self.wordcountup(w, cat)
self.catcountup(cat)
Il est facile d'augmenter le nombre d'apparences de chaque balise de la liste en conséquence.
Et ensuite. Quant à la manière d'afficher le résultat du jugement d'estimation, le script d'origine renvoie simplement la balise avec la probabilité la plus élevée.
def classifier(self, doc):
best = None
max = -sys.maxint
word = getwords(doc)
for cat in self.catcount.keys():
prob = self.score(word, cat)
if prob < max:
max = prob
best = cat
return best
Cela ne suffit pas à prendre en compte, donc je vais essayer de renvoyer toutes les balises et leurs probabilités (en fait logarithmiques). Trié par ordre décroissant de probabilité.
def classifier(self, doc):
best = None
max = -sys.maxint
word = getwords(doc)
pList = []
for cat in self.catcount.keys():
prob = math.exp(self.score(word, cat))
pList.append([cat, self.score(word, cat)])
return sorted( pList, key=lambda prob: prob[1], reverse=True)
En passant, je voudrais aujourd'hui vous présenter un script d'apprentissage automatique. La prochaine fois, j'aimerais utiliser ce script pour m'entraîner et montrer les résultats. Et je voudrais examiner divers résultats.
À la prochaine!
Recommended Posts