M1 MABS BBS Data Mining Naive Bayes
From silico.biotoul.fr
(Difference between revisions)
m |
m |
||
Line 100: | Line 100: | ||
os.system(cmd) | os.system(cmd) | ||
</source> | </source> | ||
+ | |||
+ | = Leave-one-out cross validation = | ||
+ | [[File:LOOCV-draft.py]] |
Revision as of 13:07, 12 December 2012
Etapes pour la construction et l'utilisation d'un classificateur bayésien naïf :
- Lecture du jeu d'apprentissage pour construire la table de probabilité. Utilisation
- des fréquences pour la variables discrètes
- d'une gaussienne pour les variables continues
- Lecture des échantillons à classer
- calcul de la vraisemblance de chaque classe
- attribution de la classe la plus vraissemblable
La table de probabilité devrait contenir :
- classe TRUE, effectif: XX
- classe FALSE, effectif: YY
- classe TRUE, attribut age, moyenne: XX, écart-type: XX
- classe FASLE, attribut age, moyenne: YY, écart-type: YY
- classe TRUE, attribut sex, valeur M, effectif: XX
- classe TRUE, attribut sex, valeur F, effectif: XX
- classe FALSE, attribut sex, valeur M, effectif: XX
- classe FALSE, attribut sex, valeur F, effectif: XX
- ...
Utilisation d'une librairie pour récupérer les paramètres de la ligne de commande :
#!/usr/bin/python import argparse # SCRIPT PARAMETERS parser = argparse.ArgumentParser(description='Naive Bayesian learner and classifier.') parser.add_argument('--training', required=True, help='File in CSV format containing training examples.') parser.add_argument('--sample', required=True, help='File containing new objects to be classified.') opt = vars(parser.parse_args())
Utilisation d'une librairie pour lire les fichiers au format CSV :
#!/usr/bin/python import csv # GLOBAL VARIABLES targetClass = '' attributeClass = {} model = {} N = 0 # N: size of training set # LOAD TRAINING SET AND BUILD MODEL (START TO BUILD PROBABILITY TABLE) # training[class][attribute_name][attribute_value] = occurrences # e.g. training[G1][population][Uppsala] = 22 with open(opt['training']) as f: reader = csv.DictReader(f, delimiter='\t') # LOAD ATTRIBUTE TYPES (continuous, discrete, ignore) attributeClass = reader.next() # DETERMINE TARGET CLASS classLine = reader.next() for i in attributeClass: if classLine[i]=='class': targetClass = i # START BUILDING model for row in reader: N += 1 ...
Librairie pour estimer la probabilité d'une valeur par une gaussienne :
#!/usr/bin/python import numpy import scipy.stats import os mean = numpy.mean(aList) sd = numpy.std(aList) pf = scipy.stats.norm.pdf( value, loc=mean, scale=sd)
Librairie pour travailler avec des fichiers temporaires :
#!/usr/bin/python import tempfile # obtain unique file name outputFileName = tempfile.mktemp() # create file outputFile=open(outputFileName, 'w') outputFile.write(header) ... # remove file os.remove(outputFileName)
Pour exécuter des commandes :
# RUN CLASSIFIER cmd=opt['script']+' --training '+trainingFileName+' --sample '+testFileName+' > '+outputFileName os.system(cmd)