Exercício 09 - Implementação da OPF

Todas as funções necessárias para rodar a OPF encontram-se na minha biblioteca pessoal.

Aplicação das funções fit e predict em um conjunto de dados de iris

Obs: O conjunto é reordenado e rodado 5 vezes usando as minhas funções da OPF e as funções da biblioteca iaOPF.

 1 from thi_lib import fit, predict, euclidean
 2 from iaOPF import iaconfmtx, iafit, iapredict
 3 from scikits.learn import datasets, metrics
 4 from scikits.learn.cross_val import StratifiedKFold
 5 from numpy import array, int
 6 import time
 7 
 8 def load_iris():
 9     iris = datasets.load_iris()
10     labels = iris.target
11     feats = iris['data']
12     return feats, labels
13 
14 feats, labels = load_iris()
15 
16 for i, (train, test) in\
17     enumerate(StratifiedKFold(labels, 5)):
18 
19     # run iaOPF
20     t1 = time.time()
21     opf_pc, _, opf_labels = iafit(feats[train], labels[train], euclidean)
22     iaOPFPredicted = iapredict(feats[test], feats[train], opf_pc, opf_labels, euclidean)
23     dT1 = time.time() - t1
24 
25     # run my OPF
26     t1 = time.time()
27     opf_pc, opf_labels, _, _ = fit(feats[train], labels[train])
28     OPFPredicted = predict(opf_pc, opf_labels, feats[train], feats[test])
29     dT2 = time.time() - t1
30 
31     # show results
32     print "iaOPF results:\n"
33     print "score: ", metrics.f1_score(labels[test], iaOPFPredicted)
34     print "tempo de execução(ms): %f" %(dT1*1000)
35     print "matriz de confusão:\n", iaconfmtx(labels[test], iaOPFPredicted)
36     print "\n"
37 
38     OPFPredicted = array(OPFPredicted).astype(int)
39     print "My OPF results:\n"
40     print "score: ", metrics.f1_score(labels[test], OPFPredicted)
41     print "tempo de execução(ms): %f" %(dT2*1000)
42     print "matriz de confusão:\n", iaconfmtx(labels[test], OPFPredicted)
43     print "\n\n"
[67, 68, 107, 78, 110, 81, 18, 85, 56, 88, 58, 62]
iaOPF results:

score:  0.966583124478
tempo de execução(ms): 183.788061
matriz de confusão:
[[ 10.   0.   0.]
 [  0.  10.   0.]
 [  0.   1.   9.]]


My OPF results:

score:  0.966583124478
tempo de execução(ms): 743.952990
matriz de confusão:
[[ 10.   0.   0.]
 [  0.  10.   0.]
 [  0.   1.   9.]]



[96, 48, 67, 46, 80, 19, 116, 117, 84, 58, 62]
iaOPF results:

score:  0.933333333333
tempo de execução(ms): 191.045046
matriz de confusão:
[[ 10.   0.   0.]
 [  0.   9.   1.]
 [  0.   1.   9.]]


My OPF results:

score:  0.933333333333
tempo de execução(ms): 748.884201
matriz de confusão:
[[ 10.   0.   0.]
 [  0.   9.   1.]
 [  0.   1.   9.]]



[98, 106, 78, 19, 117, 119, 56, 57, 61, 95]
iaOPF results:

score:  0.899749373434
tempo de execução(ms): 183.532000
matriz de confusão:
[[ 10.   0.   0.]
 [  0.   9.   1.]
 [  0.   2.   8.]]


My OPF results:

score:  0.899749373434
tempo de execução(ms): 736.825943
matriz de confusão:
[[ 10.   0.   0.]
 [  0.   9.   1.]
 [  0.   2.   8.]]



[67, 68, 54, 107, 78, 111, 81, 18, 85, 118, 56, 62, 95]
iaOPF results:

score:  0.966583124478
tempo de execução(ms): 185.572147
matriz de confusão:
[[ 10.   0.   0.]
 [  0.   9.   1.]
 [  0.   0.  10.]]


My OPF results:

score:  0.966583124478
tempo de execução(ms): 741.004944
matriz de confusão:
[[ 10.   0.   0.]
 [  0.   9.   1.]
 [  0.   0.  10.]]



[65, 98, 106, 107, 66, 78, 111, 81, 18, 85, 55, 57, 94]
iaOPF results:

score:  1.0
tempo de execução(ms): 186.217070
matriz de confusão:
[[ 10.   0.   0.]
 [  0.  10.   0.]
 [  0.   0.  10.]]


My OPF results:

score:  1.0
tempo de execução(ms): 728.893042
matriz de confusão:
[[ 10.   0.   0.]
 [  0.  10.   0.]
 [  0.   0.  10.]]