Showing
12 changed files
with
979 additions
and
0 deletions
| 1 | +5.1 3.5 1.4 0.2 | ||
| 2 | +4.9 3 1.4 0.2 | ||
| 3 | +4.7 3.2 1.3 0.2 | ||
| 4 | +4.6 3.1 1.5 0.2 | ||
| 5 | +5 3.6 1.4 0.2 | ||
| 6 | +5.4 3.9 1.7 0.4 | ||
| 7 | +4.6 3.4 1.4 0.3 | ||
| 8 | +5 3.4 1.5 0.2 | ||
| 9 | +4.4 2.9 1.4 0.2 | ||
| 10 | +4.9 3.1 1.5 0.1 | ||
| 11 | +5.4 3.7 1.5 0.2 | ||
| 12 | +4.8 3.4 1.6 0.2 | ||
| 13 | +4.8 3 1.4 0.1 | ||
| 14 | +4.3 3 1.1 0.1 | ||
| 15 | +5.8 4 1.2 0.2 | ||
| 16 | +5.7 4.4 1.5 0.4 | ||
| 17 | +5.4 3.9 1.3 0.4 | ||
| 18 | +5.1 3.5 1.4 0.3 | ||
| 19 | +5.7 3.8 1.7 0.3 | ||
| 20 | +5.1 3.8 1.5 0.3 | ||
| 21 | +5.4 3.4 1.7 0.2 | ||
| 22 | +5.1 3.7 1.5 0.4 | ||
| 23 | +4.6 3.6 1 0.2 | ||
| 24 | +5.1 3.3 1.7 0.5 | ||
| 25 | +4.8 3.4 1.9 0.2 | ||
| 26 | +5 3 1.6 0.2 | ||
| 27 | +5 3.4 1.6 0.4 | ||
| 28 | +5.2 3.5 1.5 0.2 | ||
| 29 | +5.2 3.4 1.4 0.2 | ||
| 30 | +4.7 3.2 1.6 0.2 | ||
| 31 | +4.8 3.1 1.6 0.2 | ||
| 32 | +5.4 3.4 1.5 0.4 | ||
| 33 | +5.2 4.1 1.5 0.1 | ||
| 34 | +5.5 4.2 1.4 0.2 | ||
| 35 | +4.9 3.1 1.5 0.1 | ||
| 36 | +5 3.2 1.2 0.2 | ||
| 37 | +5.5 3.5 1.3 0.2 | ||
| 38 | +4.9 3.1 1.5 0.1 | ||
| 39 | +4.4 3 1.3 0.2 | ||
| 40 | +5.1 3.4 1.5 0.2 | ||
| 41 | +5 3.5 1.3 0.3 | ||
| 42 | +4.5 2.3 1.3 0.3 | ||
| 43 | +4.4 3.2 1.3 0.2 | ||
| 44 | +5 3.5 1.6 0.6 | ||
| 45 | +5.1 3.8 1.9 0.4 | ||
| 46 | +4.8 3 1.4 0.3 | ||
| 47 | +5.1 3.8 1.6 0.2 | ||
| 48 | +4.6 3.2 1.4 0.2 | ||
| 49 | +5.3 3.7 1.5 0.2 | ||
| 50 | +5 3.3 1.4 0.2 | ||
| 51 | +7 3.2 4.7 1.4 | ||
| 52 | +6.4 3.2 4.5 1.5 | ||
| 53 | +6.9 3.1 4.9 1.5 | ||
| 54 | +5.5 2.3 4 1.3 | ||
| 55 | +6.5 2.8 4.6 1.5 | ||
| 56 | +5.7 2.8 4.5 1.3 | ||
| 57 | +6.3 3.3 4.7 1.6 | ||
| 58 | +4.9 2.4 3.3 1 | ||
| 59 | +6.6 2.9 4.6 1.3 | ||
| 60 | +5.2 2.7 3.9 1.4 | ||
| 61 | +5 2 3.5 1 | ||
| 62 | +5.9 3 4.2 1.5 | ||
| 63 | +6 2.2 4 1 | ||
| 64 | +6.1 2.9 4.7 1.4 | ||
| 65 | +5.6 2.9 3.6 1.3 | ||
| 66 | +6.7 3.1 4.4 1.4 | ||
| 67 | +5.6 3 4.5 1.5 | ||
| 68 | +5.8 2.7 4.1 1 | ||
| 69 | +6.2 2.2 4.5 1.5 | ||
| 70 | +5.6 2.5 3.9 1.1 | ||
| 71 | +5.9 3.2 4.8 1.8 | ||
| 72 | +6.1 2.8 4 1.3 | ||
| 73 | +6.3 2.5 4.9 1.5 | ||
| 74 | +6.1 2.8 4.7 1.2 | ||
| 75 | +6.4 2.9 4.3 1.3 | ||
| 76 | +6.6 3 4.4 1.4 | ||
| 77 | +6.8 2.8 4.8 1.4 | ||
| 78 | +6.7 3 5 1.7 | ||
| 79 | +6 2.9 4.5 1.5 | ||
| 80 | +5.7 2.6 3.5 1 | ||
| 81 | +5.5 2.4 3.8 1.1 | ||
| 82 | +5.5 2.4 3.7 1 | ||
| 83 | +5.8 2.7 3.9 1.2 | ||
| 84 | +6 2.7 5.1 1.6 | ||
| 85 | +5.4 3 4.5 1.5 | ||
| 86 | +6 3.4 4.5 1.6 | ||
| 87 | +6.7 3.1 4.7 1.5 | ||
| 88 | +6.3 2.3 4.4 1.3 | ||
| 89 | +5.6 3 4.1 1.3 | ||
| 90 | +5.5 2.5 4 1.3 | ||
| 91 | +5.5 2.6 4.4 1.2 | ||
| 92 | +6.1 3 4.6 1.4 | ||
| 93 | +5.8 2.6 4 1.2 | ||
| 94 | +5 2.3 3.3 1 | ||
| 95 | +5.6 2.7 4.2 1.3 | ||
| 96 | +5.7 3 4.2 1.2 | ||
| 97 | +5.7 2.9 4.2 1.3 | ||
| 98 | +6.2 2.9 4.3 1.3 | ||
| 99 | +5.1 2.5 3 1.1 | ||
| 100 | +5.7 2.8 4.1 1.3 | ||
| 101 | +6.3 3.3 6 2.5 | ||
| 102 | +5.8 2.7 5.1 1.9 | ||
| 103 | +7.1 3 5.9 2.1 | ||
| 104 | +6.3 2.9 5.6 1.8 | ||
| 105 | +6.5 3 5.8 2.2 | ||
| 106 | +7.6 3 6.6 2.1 | ||
| 107 | +4.9 2.5 4.5 1.7 | ||
| 108 | +7.3 2.9 6.3 1.8 | ||
| 109 | +6.7 2.5 5.8 1.8 | ||
| 110 | +7.2 3.6 6.1 2.5 | ||
| 111 | +6.5 3.2 5.1 2 | ||
| 112 | +6.4 2.7 5.3 1.9 | ||
| 113 | +6.8 3 5.5 2.1 | ||
| 114 | +5.7 2.5 5 2 | ||
| 115 | +5.8 2.8 5.1 2.4 | ||
| 116 | +6.4 3.2 5.3 2.3 | ||
| 117 | +6.5 3 5.5 1.8 | ||
| 118 | +7.7 3.8 6.7 2.2 | ||
| 119 | +7.7 2.6 6.9 2.3 | ||
| 120 | +6 2.2 5 1.5 | ||
| 121 | +6.9 3.2 5.7 2.3 | ||
| 122 | +5.6 2.8 4.9 2 | ||
| 123 | +7.7 2.8 6.7 2 | ||
| 124 | +6.3 2.7 4.9 1.8 | ||
| 125 | +6.7 3.3 5.7 2.1 | ||
| 126 | +7.2 3.2 6 1.8 | ||
| 127 | +6.2 2.8 4.8 1.8 | ||
| 128 | +6.1 3 4.9 1.8 | ||
| 129 | +6.4 2.8 5.6 2.1 | ||
| 130 | +7.2 3 5.8 1.6 | ||
| 131 | +7.4 2.8 6.1 1.9 | ||
| 132 | +7.9 3.8 6.4 2 | ||
| 133 | +6.4 2.8 5.6 2.2 | ||
| 134 | +6.3 2.8 5.1 1.5 | ||
| 135 | +6.1 2.6 5.6 1.4 | ||
| 136 | +7.7 3 6.1 2.3 | ||
| 137 | +6.3 3.4 5.6 2.4 | ||
| 138 | +6.4 3.1 5.5 1.8 | ||
| 139 | +6 3 4.8 1.8 | ||
| 140 | +6.9 3.1 5.4 2.1 | ||
| 141 | +6.7 3.1 5.6 2.4 | ||
| 142 | +6.9 3.1 5.1 2.3 | ||
| 143 | +5.8 2.7 5.1 1.9 | ||
| 144 | +6.8 3.2 5.9 2.3 | ||
| 145 | +6.7 3.3 5.7 2.5 | ||
| 146 | +6.7 3 5.2 2.3 | ||
| 147 | +6.3 2.5 5 1.9 | ||
| 148 | +6.5 3 5.2 2 | ||
| 149 | +6.2 3.4 5.4 2.3 | ||
| 150 | +5.9 3 5.1 1.8 | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
File mode changed
File mode changed
| 1 | +5.1 3.5 1.4 0.2 | ||
| 2 | +4.9 3 1.4 0.2 | ||
| 3 | +4.7 3.2 1.3 0.2 | ||
| 4 | +4.6 3.1 1.5 0.2 | ||
| 5 | +5 3.6 1.4 0.2 | ||
| 6 | +5.4 3.9 1.7 0.4 | ||
| 7 | +4.6 3.4 1.4 0.3 | ||
| 8 | +5 3.4 1.5 0.2 | ||
| 9 | +4.4 2.9 1.4 0.2 | ||
| 10 | +4.9 3.1 1.5 0.1 | ||
| 11 | +5.4 3.7 1.5 0.2 | ||
| 12 | +4.8 3.4 1.6 0.2 | ||
| 13 | +4.8 3 1.4 0.1 | ||
| 14 | +4.3 3 1.1 0.1 | ||
| 15 | +5.8 4 1.2 0.2 | ||
| 16 | +5 3.3 1.4 0.2 | ||
| 17 | +7 3.2 4.7 1.4 | ||
| 18 | +6.4 3.2 4.5 1.5 | ||
| 19 | +6.9 3.1 4.9 1.5 | ||
| 20 | +5.5 2.3 4 1.3 | ||
| 21 | +6.5 2.8 4.6 1.5 | ||
| 22 | +5.7 2.8 4.5 1.3 | ||
| 23 | +6.3 3.3 4.7 1.6 | ||
| 24 | +4.9 2.4 3.3 1 | ||
| 25 | +6.6 2.9 4.6 1.3 | ||
| 26 | +5.2 2.7 3.9 1.4 | ||
| 27 | +5 2 3.5 1 | ||
| 28 | +5.9 3 4.2 1.5 | ||
| 29 | +6 2.2 4 1 | ||
| 30 | +6.1 2.9 4.7 1.4 | ||
| 31 | +5.7 2.8 4.1 1.3 | ||
| 32 | +6.3 3.3 6 2.5 | ||
| 33 | +5.8 2.7 5.1 1.9 | ||
| 34 | +7.1 3 5.9 2.1 | ||
| 35 | +6.3 2.9 5.6 1.8 | ||
| 36 | +6.5 3 5.8 2.2 | ||
| 37 | +7.6 3 6.6 2.1 | ||
| 38 | +4.9 2.5 4.5 1.7 | ||
| 39 | +7.3 2.9 6.3 1.8 | ||
| 40 | +6.7 2.5 5.8 1.8 | ||
| 41 | +7.2 3.6 6.1 2.5 | ||
| 42 | +6.5 3.2 5.1 2 | ||
| 43 | +6.4 2.7 5.3 1.9 | ||
| 44 | +6.8 3 5.5 2.1 | ||
| 45 | +5.7 2.5 5 2 | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +Iris-setosa | ||
| 2 | +Iris-setosa | ||
| 3 | +Iris-setosa | ||
| 4 | +Iris-setosa | ||
| 5 | +Iris-setosa | ||
| 6 | +Iris-setosa | ||
| 7 | +Iris-setosa | ||
| 8 | +Iris-setosa | ||
| 9 | +Iris-setosa | ||
| 10 | +Iris-setosa | ||
| 11 | +Iris-setosa | ||
| 12 | +Iris-setosa | ||
| 13 | +Iris-setosa | ||
| 14 | +Iris-setosa | ||
| 15 | +Iris-setosa | ||
| 16 | +Iris-setosa | ||
| 17 | +Iris-versicolor | ||
| 18 | +Iris-versicolor | ||
| 19 | +Iris-versicolor | ||
| 20 | +Iris-versicolor | ||
| 21 | +Iris-versicolor | ||
| 22 | +Iris-versicolor | ||
| 23 | +Iris-versicolor | ||
| 24 | +Iris-versicolor | ||
| 25 | +Iris-versicolor | ||
| 26 | +Iris-versicolor | ||
| 27 | +Iris-versicolor | ||
| 28 | +Iris-versicolor | ||
| 29 | +Iris-versicolor | ||
| 30 | +Iris-versicolor | ||
| 31 | +Iris-versicolor | ||
| 32 | +Iris-virginica | ||
| 33 | +Iris-virginica | ||
| 34 | +Iris-virginica | ||
| 35 | +Iris-virginica | ||
| 36 | +Iris-virginica | ||
| 37 | +Iris-virginica | ||
| 38 | +Iris-virginica | ||
| 39 | +Iris-virginica | ||
| 40 | +Iris-virginica | ||
| 41 | +Iris-virginica | ||
| 42 | +Iris-virginica | ||
| 43 | +Iris-virginica | ||
| 44 | +Iris-virginica | ||
| 45 | +Iris-virginica | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +from sklearn.naive_bayes import MultinomialNB, BernoulliNB | ||
| 2 | + | ||
| 3 | +def scores(list1, list2): | ||
| 4 | + errores = 0 | ||
| 5 | + aciertos = 0 | ||
| 6 | + if len(list1) != len(list2): | ||
| 7 | + print("ERROR. LENGTH MISMATCH") | ||
| 8 | + for i in range(len(list1)): | ||
| 9 | + if list1[i] == list2[i]: | ||
| 10 | + aciertos += 1 | ||
| 11 | + else: | ||
| 12 | + errores += 1 | ||
| 13 | + cocienteErrores = errores / len(list1) | ||
| 14 | + return [aciertos, errores, cocienteErrores] | ||
| 15 | + | ||
| 16 | +data = [] | ||
| 17 | +lista = [] | ||
| 18 | +with open("C:\Users\cmendezc\Dropbox (UNAM-CCG)\Actividades_CCG\LICENCIATURA_LCG\BioInfo-I\lcg-bioinfoI-bionlp\clasificacion-automatica\iris-datasetdata.txt", encoding='utf8') \ | ||
| 19 | + as dataFile: | ||
| 20 | + for line in dataFile: | ||
| 21 | + listaFloat = [] | ||
| 22 | + line = line.strip('\n') | ||
| 23 | + lista = line.split('\t') | ||
| 24 | + for elem in lista: | ||
| 25 | + listaFloat.append(float(elem)) | ||
| 26 | + data.append(listaFloat) | ||
| 27 | + | ||
| 28 | +print(data) | ||
| 29 | + | ||
| 30 | +target = [] | ||
| 31 | +with open("C:\\Users\\cmendezc\\Documents\\GENOMICAS\\LICENCIATURA_LCGPDCB\\dataSet_Iris\\true_Classes.txt", encoding='utf8') \ | ||
| 32 | + as classFile: | ||
| 33 | + for line in classFile: | ||
| 34 | + line = line.strip('\n') | ||
| 35 | + target.append(line) | ||
| 36 | + | ||
| 37 | +myMultinomialNB = MultinomialNB() | ||
| 38 | +myBernoulliNB = BernoulliNB() | ||
| 39 | + | ||
| 40 | +y_pred = myMultinomialNB.fit(data, target).predict(data) | ||
| 41 | + | ||
| 42 | +''' | ||
| 43 | +for i in range(len(iris.target)): | ||
| 44 | + print(str(iris.target[i]) + "\t" + str(y_pred[i]) + "\t" + str(iris.data[i])) | ||
| 45 | +''' | ||
| 46 | + | ||
| 47 | +myRandomForest = RandomForestClassifier() | ||
| 48 | +y_pred = myRandomForest.fit(data, target).predict(data) | ||
| 49 | +results = scores(target, y_pred) | ||
| 50 | +print("Errores: {}".format(results[1])) | ||
| 51 | +print("Aciertos: {}".format(results[0])) | ||
| 52 | +print("Cociente error: {}".format(results[2])) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +from sklearn import datasets | ||
| 2 | +from sklearn.naive_bayes import MultinomialNB, BernoulliNB | ||
| 3 | +from sklearn.ensemble import RandomForestClassifier | ||
| 4 | + | ||
| 5 | +def scores(list1, list2): | ||
| 6 | + errores = 0 | ||
| 7 | + aciertos = 0 | ||
| 8 | + if len(list1) != len(list2): | ||
| 9 | + print("ERROR. LENGTH MISMATCH") | ||
| 10 | + for i in range(len(list1)): | ||
| 11 | + if list1[i] == list2[i]: | ||
| 12 | + aciertos += 1 | ||
| 13 | + else: | ||
| 14 | + errores += 1 | ||
| 15 | + cocienteErrores = errores / len(list1) | ||
| 16 | + return [aciertos, errores, cocienteErrores] | ||
| 17 | + | ||
| 18 | +iris = datasets.load_iris() | ||
| 19 | + | ||
| 20 | +myMultinomialNB = MultinomialNB() | ||
| 21 | +myBernoulliNB = BernoulliNB() | ||
| 22 | + | ||
| 23 | +y_pred = myMultinomialNB.fit(iris.data, iris.target).predict(iris.data) | ||
| 24 | + | ||
| 25 | +''' | ||
| 26 | +for i in range(len(iris.target)): | ||
| 27 | + print(str(iris.target[i]) + "\t" + str(y_pred[i]) + "\t" + str(iris.data[i])) | ||
| 28 | +''' | ||
| 29 | + | ||
| 30 | +myRandomForest = RandomForestClassifier() | ||
| 31 | +y_pred = myRandomForest.fit(iris.data, iris.target).predict(iris.data) | ||
| 32 | +results = scores(iris.target, y_pred) | ||
| 33 | +print("Errores: {}".format(results[1])) | ||
| 34 | +print("Aciertos: {}".format(results[0])) | ||
| 35 | +print("Cociente error: {}".format(results[2])) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +# -*- encoding: utf-8 -*- | ||
| 2 | + | ||
| 3 | +import os | ||
| 4 | +from time import time | ||
| 5 | +from optparse import OptionParser | ||
| 6 | +from sklearn.naive_bayes import MultinomialNB | ||
| 7 | +from sklearn.ensemble import RandomForestClassifier | ||
| 8 | +from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, \ | ||
| 9 | + classification_report | ||
| 10 | +import sys | ||
| 11 | + | ||
| 12 | +__author__ = 'CMendezC' | ||
| 13 | + | ||
| 14 | +# Goal: training and test Iris dataset | ||
| 15 | + | ||
| 16 | +# Parameters: | ||
| 17 | +# 1) --inputPath Path to read input files. | ||
| 18 | +# 2) --inputFileData File to read data. | ||
| 19 | +# 3) --inputFileTrueClasses File to read text true classes. | ||
| 20 | +# 4) --outputPath Path to place output files. | ||
| 21 | +# 5) --outputFile File to place evaluation report. | ||
| 22 | +# 6) --classifier Classifier: MultinomialNB, SVM, RandomForest. | ||
| 23 | + | ||
| 24 | +# Ouput: | ||
| 25 | +# 1) Evaluation report. | ||
| 26 | + | ||
| 27 | +# Execution: | ||
| 28 | +# C:\Anaconda3\python trainingTest_Iris.py | ||
| 29 | +# --inputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris | ||
| 30 | +# --inputFileData data.txt | ||
| 31 | +# --inputFileTrueClasses true_Classes.txt | ||
| 32 | +# --outputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris | ||
| 33 | +# --outputFile report_MultinomialNB.txt | ||
| 34 | +# --classifier MultinomialNB | ||
| 35 | + | ||
| 36 | +# C:\Anaconda3\python trainingTest_Iris.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris --inputFileData data.txt --inputFileTrueClasses true_Classes.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris --outputFile report_MultinomialNB.txt --classifier MultinomialNB | ||
| 37 | + | ||
| 38 | +########################################################### | ||
| 39 | +# MAIN PROGRAM # | ||
| 40 | +########################################################### | ||
| 41 | + | ||
| 42 | +if __name__ == "__main__": | ||
| 43 | + # Parameter definition | ||
| 44 | + parser = OptionParser() | ||
| 45 | + parser.add_option("--inputPath", dest="inputPath", | ||
| 46 | + help="Path to read input files", metavar="PATH") | ||
| 47 | + parser.add_option("--inputFileData", dest="inputFileData", | ||
| 48 | + help="File to read data", metavar="FILE") | ||
| 49 | + parser.add_option("--inputFileTrueClasses", dest="inputFileTrueClasses", | ||
| 50 | + help="File to read true classes", metavar="FILE") | ||
| 51 | + parser.add_option("--outputPath", dest="outputPath", | ||
| 52 | + help="Path to place output files", metavar="PATH") | ||
| 53 | + parser.add_option("--outputFile", dest="outputFile", | ||
| 54 | + help="File to write evaluation report", metavar="FILE") | ||
| 55 | + parser.add_option("--classifier", dest="classifier", | ||
| 56 | + help="Classifier", metavar="CLASSIFIER") | ||
| 57 | + | ||
| 58 | + (options, args) = parser.parse_args() | ||
| 59 | + if len(args) > 0: | ||
| 60 | + parser.error("None parameters indicated.") | ||
| 61 | + sys.exit(1) | ||
| 62 | + | ||
| 63 | + # Printing parameter values | ||
| 64 | + print('-------------------------------- PARAMETERS --------------------------------') | ||
| 65 | + print("Path to read input files: " + str(options.inputPath)) | ||
| 66 | + print("File to read data: " + str(options.inputFileData)) | ||
| 67 | + print("File to read true classes: " + str(options.inputFileTrueClasses)) | ||
| 68 | + print("Path to place output files: " + str(options.outputPath)) | ||
| 69 | + print("File to write evaluation report: " + str(options.outputFile)) | ||
| 70 | + print("Classifier: " + str(options.outputFile)) | ||
| 71 | + | ||
| 72 | + # Start time | ||
| 73 | + t0 = time() | ||
| 74 | + | ||
| 75 | + print(" Reading data and true classes...") | ||
| 76 | + trueClasses = [] | ||
| 77 | + with open(os.path.join(options.inputPath, options.inputFileTrueClasses), encoding='utf8', mode='r') \ | ||
| 78 | + as classFile: | ||
| 79 | + for line in classFile: | ||
| 80 | + line = line.strip('\r\n') | ||
| 81 | + trueClasses.append(line) | ||
| 82 | + print(trueClasses) | ||
| 83 | + | ||
| 84 | + data = [] | ||
| 85 | + with open(os.path.join(options.inputPath, options.inputFileData), encoding='utf8', mode='r') \ | ||
| 86 | + as dataFile: | ||
| 87 | + for line in dataFile: | ||
| 88 | + listTemp = [] | ||
| 89 | + listFloat = [] | ||
| 90 | + line = line.strip('\r\n') | ||
| 91 | + listTemp = line.split('\t') | ||
| 92 | + for elem in listTemp: | ||
| 93 | + listFloat.append(float(elem)) | ||
| 94 | + data.append(listFloat) | ||
| 95 | + print(data) | ||
| 96 | + print(" Reading data and true classes done!") | ||
| 97 | + | ||
| 98 | + if options.classifier == "MultinomialNB": | ||
| 99 | + classifier = MultinomialNB() | ||
| 100 | + elif options.classifier == "SVM": | ||
| 101 | + pass | ||
| 102 | + elif options.classifier == "RandomForest": | ||
| 103 | + classifier = RandomForestClassifier() | ||
| 104 | + | ||
| 105 | + print(" Training...") | ||
| 106 | + y_pred = classifier.fit(data, trueClasses).predict(data) | ||
| 107 | + print(" Training done!") | ||
| 108 | + | ||
| 109 | + # for i in range(len(trueClasses)): | ||
| 110 | + # print(str(trueClasses[i]) + "\t" + str(y_pred[i])) | ||
| 111 | + | ||
| 112 | + print(" Saving test report...") | ||
| 113 | + with open(os.path.join(options.outputPath, options.outputFile), mode='w', encoding='utf8') as oFile: | ||
| 114 | + oFile.write('********** EVALUATION REPORT **********\n') | ||
| 115 | + oFile.write('Classifier: {}\n'.format(options.classifier)) | ||
| 116 | + oFile.write('Accuracy: {}\n'.format(accuracy_score(trueClasses, y_pred))) | ||
| 117 | + oFile.write('Precision: {}\n'.format(precision_score(trueClasses, y_pred, average='weighted'))) | ||
| 118 | + oFile.write('Recall: {}\n'.format(recall_score(trueClasses, y_pred, average='weighted'))) | ||
| 119 | + oFile.write('F-score: {}\n'.format(f1_score(trueClasses, y_pred, average='weighted'))) | ||
| 120 | + # oFile.write('{}\t{}\t{}\t{}\n'.format(accuracy_score(trueClasses, y_pred), | ||
| 121 | + # precision_score(trueClasses, y_pred, average='weighted'), | ||
| 122 | + # recall_score(trueClasses, y_pred, average='weighted'), | ||
| 123 | + # f1_score(trueClasses, y_pred, average='weighted'))) | ||
| 124 | + oFile.write('Confusion matrix: \n') | ||
| 125 | + oFile.write(str(confusion_matrix(trueClasses, y_pred)) + '\n') | ||
| 126 | + oFile.write('Classification report: \n') | ||
| 127 | + oFile.write(classification_report(trueClasses, y_pred) + '\n') | ||
| 128 | + print(" Saving test report done!") | ||
| 129 | + | ||
| 130 | + print("Training and test done in: %fs" % (time() - t0)) |
| 1 | +# -*- encoding: utf-8 -*- | ||
| 2 | + | ||
| 3 | +import os | ||
| 4 | +from time import time | ||
| 5 | +from optparse import OptionParser | ||
| 6 | +from sklearn.naive_bayes import MultinomialNB | ||
| 7 | +from sklearn.ensemble import RandomForestClassifier | ||
| 8 | +from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, \ | ||
| 9 | + classification_report | ||
| 10 | +import sys | ||
| 11 | + | ||
| 12 | +__author__ = 'CMendezC' | ||
| 13 | + | ||
| 14 | +# Goal: training and test Iris dataset | ||
| 15 | + | ||
| 16 | +# Parameters: | ||
| 17 | +# 1) --inputPath Path to read input files. | ||
| 18 | +# 2) --inputTrainingData File to read training data. | ||
| 19 | +# 3) --inputTrainingClasses File to read training true classes. | ||
| 20 | +# 4) --inputTestData File to read test data. | ||
| 21 | +# 5) --inputTestClasses File to read test true classes. | ||
| 22 | +# 6) --outputPath Path to place output files. | ||
| 23 | +# 7) --outputFile File to place evaluation report. | ||
| 24 | +# 8) --classifier Classifier: MultinomialNB, SVM, RandomForest. | ||
| 25 | + | ||
| 26 | +# Ouput: | ||
| 27 | +# 1) Evaluation report. | ||
| 28 | + | ||
| 29 | +# Execution: | ||
| 30 | +# C:\Anaconda3\python trainingTest_Iris_v2.py | ||
| 31 | +# --inputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris | ||
| 32 | +# --inputTrainingData training_Data.txt | ||
| 33 | +# --inputTrainingClasses training_TrueClasses.txt | ||
| 34 | +# --inputTestData test_Data.txt | ||
| 35 | +# --inputTestClasses test_TrueClasses.txt | ||
| 36 | +# --outputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris | ||
| 37 | +# --outputFile report_MultinomialNB.txt | ||
| 38 | +# --classifier MultinomialNB | ||
| 39 | + | ||
| 40 | +# C:\Anaconda3\python trainingTest_Iris_v2.py --inputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris --inputTrainingData training_Data.txt --inputTrainingClasses training_TrueClasses.txt --inputTestData test_Data.txt --inputTestClasses test_TrueClasses.txt --outputPath C:\Users\cmendezc\Documents\GENOMICAS\LICENCIATURA_LCGPDCB\dataSet_Iris --outputFile report_MultinomialNB.txt --classifier MultinomialNB | ||
| 41 | + | ||
| 42 | +########################################################### | ||
| 43 | +# MAIN PROGRAM # | ||
| 44 | +########################################################### | ||
| 45 | + | ||
| 46 | +if __name__ == "__main__": | ||
| 47 | + # Parameter definition | ||
| 48 | + parser = OptionParser() | ||
| 49 | + parser.add_option("--inputPath", dest="inputPath", | ||
| 50 | + help="Path to read input files", metavar="PATH") | ||
| 51 | + parser.add_option("--inputTrainingData", dest="inputTrainingData", | ||
| 52 | + help="File to read training data", metavar="FILE") | ||
| 53 | + parser.add_option("--inputTrainingClasses", dest="inputTrainingClasses", | ||
| 54 | + help="File to read training true classes", metavar="FILE") | ||
| 55 | + parser.add_option("--inputTestData", dest="inputTestData", | ||
| 56 | + help="File to read test data", metavar="FILE") | ||
| 57 | + parser.add_option("--inputTestClasses", dest="inputTestClasses", | ||
| 58 | + help="File to read test true classes", metavar="FILE") | ||
| 59 | + parser.add_option("--outputPath", dest="outputPath", | ||
| 60 | + help="Path to place output files", metavar="PATH") | ||
| 61 | + parser.add_option("--outputFile", dest="outputFile", | ||
| 62 | + help="File to write evaluation report", metavar="FILE") | ||
| 63 | + parser.add_option("--classifier", dest="classifier", | ||
| 64 | + help="Classifier", metavar="CLASSIFIER") | ||
| 65 | + | ||
| 66 | + (options, args) = parser.parse_args() | ||
| 67 | + if len(args) <= 0: | ||
| 68 | + parser.error("None parameters indicated.") | ||
| 69 | + sys.exit(1) | ||
| 70 | + | ||
| 71 | + # Printing parameter values | ||
| 72 | + print('-------------------------------- PARAMETERS --------------------------------') | ||
| 73 | + print("Path to read input files: " + str(options.inputPath)) | ||
| 74 | + print("File to read training data: " + str(options.inputTrainingData)) | ||
| 75 | + print("File to read training true classes: " + str(options.inputTrainingClasses)) | ||
| 76 | + print("File to read test data: " + str(options.inputTestData)) | ||
| 77 | + print("File to read test true classes: " + str(options.inputTestClasses)) | ||
| 78 | + print("Path to place output files: " + str(options.outputPath)) | ||
| 79 | + print("File to write evaluation report: " + str(options.outputFile)) | ||
| 80 | + print("Classifier: " + str(options.outputFile)) | ||
| 81 | + | ||
| 82 | + # Start time | ||
| 83 | + t0 = time() | ||
| 84 | + | ||
| 85 | + print(" Reading training and test data and true classes...") | ||
| 86 | + trueTrainingClasses = [] | ||
| 87 | + trueTestClasses = [] | ||
| 88 | + with open(os.path.join(options.inputPath, options.inputTrainingClasses), encoding='utf8', mode='r') \ | ||
| 89 | + as classFile: | ||
| 90 | + for line in classFile: | ||
| 91 | + line = line.strip('\r\n') | ||
| 92 | + trueTrainingClasses.append(line) | ||
| 93 | + | ||
| 94 | + with open(os.path.join(options.inputPath, options.inputTestClasses), encoding='utf8', mode='r') \ | ||
| 95 | + as classFile: | ||
| 96 | + for line in classFile: | ||
| 97 | + line = line.strip('\r\n') | ||
| 98 | + trueTestClasses.append(line) | ||
| 99 | + # print(trueTestClasses) | ||
| 100 | + | ||
| 101 | + dataTraining = [] | ||
| 102 | + dataTest = [] | ||
| 103 | + with open(os.path.join(options.inputPath, options.inputTrainingData), encoding='utf8', mode='r') \ | ||
| 104 | + as dataFile: | ||
| 105 | + for line in dataFile: | ||
| 106 | + listTemp = [] | ||
| 107 | + listFloat = [] | ||
| 108 | + line = line.strip('\r\n') | ||
| 109 | + listTemp = line.split('\t') | ||
| 110 | + for elem in listTemp: | ||
| 111 | + listFloat.append(float(elem)) | ||
| 112 | + dataTraining.append(listFloat) | ||
| 113 | + print(dataTraining) | ||
| 114 | + | ||
| 115 | + with open(os.path.join(options.inputPath, options.inputTestData), encoding='utf8', mode='r') \ | ||
| 116 | + as dataFile: | ||
| 117 | + for line in dataFile: | ||
| 118 | + listTemp = [] | ||
| 119 | + listFloat = [] | ||
| 120 | + line = line.strip('\r\n') | ||
| 121 | + listTemp = line.split('\t') | ||
| 122 | + for elem in listTemp: | ||
| 123 | + listFloat.append(float(elem)) | ||
| 124 | + dataTest.append(listFloat) | ||
| 125 | + print(dataTest) | ||
| 126 | + print(" Reading data and true classes done!") | ||
| 127 | + | ||
| 128 | + if options.classifier == "MultinomialNB": | ||
| 129 | + classifier = MultinomialNB() | ||
| 130 | + elif options.classifier == "SVM": | ||
| 131 | + pass | ||
| 132 | + elif options.classifier == "RandomForest": | ||
| 133 | + classifier = RandomForestClassifier() | ||
| 134 | + | ||
| 135 | + print(" Training...") | ||
| 136 | + classifier.fit(dataTraining, trueTrainingClasses) | ||
| 137 | + print(" Prediction...") | ||
| 138 | + y_pred = classifier.predict(dataTest) | ||
| 139 | + print(" Training and predition done!") | ||
| 140 | + | ||
| 141 | + # for i in range(len(trueClasses)): | ||
| 142 | + # print(str(trueClasses[i]) + "\t" + str(y_pred[i])) | ||
| 143 | + | ||
| 144 | + print(" Saving test report...") | ||
| 145 | + with open(os.path.join(options.outputPath, options.outputFile), mode='w', encoding='utf8') as oFile: | ||
| 146 | + oFile.write('********** EVALUATION REPORT **********\n') | ||
| 147 | + oFile.write('Classifier: {}\n'.format(options.classifier)) | ||
| 148 | + oFile.write('Accuracy: {}\n'.format(accuracy_score(trueTestClasses, y_pred))) | ||
| 149 | + oFile.write('Precision: {}\n'.format(precision_score(trueTestClasses, y_pred, average='weighted'))) | ||
| 150 | + oFile.write('Recall: {}\n'.format(recall_score(trueTestClasses, y_pred, average='weighted'))) | ||
| 151 | + oFile.write('F-score: {}\n'.format(f1_score(trueTestClasses, y_pred, average='weighted'))) | ||
| 152 | + # oFile.write('{}\t{}\t{}\t{}\n'.format(accuracy_score(trueClasses, y_pred), | ||
| 153 | + # precision_score(trueClasses, y_pred, average='weighted'), | ||
| 154 | + # recall_score(trueClasses, y_pred, average='weighted'), | ||
| 155 | + # f1_score(trueClasses, y_pred, average='weighted'))) | ||
| 156 | + oFile.write('Confusion matrix: \n') | ||
| 157 | + oFile.write(str(confusion_matrix(trueTestClasses, y_pred)) + '\n') | ||
| 158 | + oFile.write('Classification report: \n') | ||
| 159 | + oFile.write(classification_report(trueTestClasses, y_pred) + '\n') | ||
| 160 | + print(" Saving test report done!") | ||
| 161 | + | ||
| 162 | + print("Training and test done in: %fs" % (time() - t0)) |
| 1 | +5.7 4.4 1.5 0.4 | ||
| 2 | +5.4 3.9 1.3 0.4 | ||
| 3 | +5.1 3.5 1.4 0.3 | ||
| 4 | +5.7 3.8 1.7 0.3 | ||
| 5 | +5.1 3.8 1.5 0.3 | ||
| 6 | +5.4 3.4 1.7 0.2 | ||
| 7 | +5.1 3.7 1.5 0.4 | ||
| 8 | +4.6 3.6 1 0.2 | ||
| 9 | +5.1 3.3 1.7 0.5 | ||
| 10 | +4.8 3.4 1.9 0.2 | ||
| 11 | +5 3 1.6 0.2 | ||
| 12 | +5 3.4 1.6 0.4 | ||
| 13 | +5.2 3.5 1.5 0.2 | ||
| 14 | +5.2 3.4 1.4 0.2 | ||
| 15 | +4.7 3.2 1.6 0.2 | ||
| 16 | +4.8 3.1 1.6 0.2 | ||
| 17 | +5.4 3.4 1.5 0.4 | ||
| 18 | +5.2 4.1 1.5 0.1 | ||
| 19 | +5.5 4.2 1.4 0.2 | ||
| 20 | +4.9 3.1 1.5 0.1 | ||
| 21 | +5 3.2 1.2 0.2 | ||
| 22 | +5.5 3.5 1.3 0.2 | ||
| 23 | +4.9 3.1 1.5 0.1 | ||
| 24 | +4.4 3 1.3 0.2 | ||
| 25 | +5.1 3.4 1.5 0.2 | ||
| 26 | +5 3.5 1.3 0.3 | ||
| 27 | +4.5 2.3 1.3 0.3 | ||
| 28 | +4.4 3.2 1.3 0.2 | ||
| 29 | +5 3.5 1.6 0.6 | ||
| 30 | +5.1 3.8 1.9 0.4 | ||
| 31 | +4.8 3 1.4 0.3 | ||
| 32 | +5.1 3.8 1.6 0.2 | ||
| 33 | +4.6 3.2 1.4 0.2 | ||
| 34 | +5.3 3.7 1.5 0.2 | ||
| 35 | +5.6 2.9 3.6 1.3 | ||
| 36 | +6.7 3.1 4.4 1.4 | ||
| 37 | +5.6 3 4.5 1.5 | ||
| 38 | +5.8 2.7 4.1 1 | ||
| 39 | +6.2 2.2 4.5 1.5 | ||
| 40 | +5.6 2.5 3.9 1.1 | ||
| 41 | +5.9 3.2 4.8 1.8 | ||
| 42 | +6.1 2.8 4 1.3 | ||
| 43 | +6.3 2.5 4.9 1.5 | ||
| 44 | +6.1 2.8 4.7 1.2 | ||
| 45 | +6.4 2.9 4.3 1.3 | ||
| 46 | +6.6 3 4.4 1.4 | ||
| 47 | +6.8 2.8 4.8 1.4 | ||
| 48 | +6.7 3 5 1.7 | ||
| 49 | +6 2.9 4.5 1.5 | ||
| 50 | +5.7 2.6 3.5 1 | ||
| 51 | +5.5 2.4 3.8 1.1 | ||
| 52 | +5.5 2.4 3.7 1 | ||
| 53 | +5.8 2.7 3.9 1.2 | ||
| 54 | +6 2.7 5.1 1.6 | ||
| 55 | +5.4 3 4.5 1.5 | ||
| 56 | +6 3.4 4.5 1.6 | ||
| 57 | +6.7 3.1 4.7 1.5 | ||
| 58 | +6.3 2.3 4.4 1.3 | ||
| 59 | +5.6 3 4.1 1.3 | ||
| 60 | +5.5 2.5 4 1.3 | ||
| 61 | +5.5 2.6 4.4 1.2 | ||
| 62 | +6.1 3 4.6 1.4 | ||
| 63 | +5.8 2.6 4 1.2 | ||
| 64 | +5 2.3 3.3 1 | ||
| 65 | +5.6 2.7 4.2 1.3 | ||
| 66 | +5.7 3 4.2 1.2 | ||
| 67 | +5.7 2.9 4.2 1.3 | ||
| 68 | +6.2 2.9 4.3 1.3 | ||
| 69 | +5.1 2.5 3 1.1 | ||
| 70 | +5.8 2.8 5.1 2.4 | ||
| 71 | +6.4 3.2 5.3 2.3 | ||
| 72 | +6.5 3 5.5 1.8 | ||
| 73 | +7.7 3.8 6.7 2.2 | ||
| 74 | +7.7 2.6 6.9 2.3 | ||
| 75 | +6 2.2 5 1.5 | ||
| 76 | +6.9 3.2 5.7 2.3 | ||
| 77 | +5.6 2.8 4.9 2 | ||
| 78 | +7.7 2.8 6.7 2 | ||
| 79 | +6.3 2.7 4.9 1.8 | ||
| 80 | +6.7 3.3 5.7 2.1 | ||
| 81 | +7.2 3.2 6 1.8 | ||
| 82 | +6.2 2.8 4.8 1.8 | ||
| 83 | +6.1 3 4.9 1.8 | ||
| 84 | +6.4 2.8 5.6 2.1 | ||
| 85 | +7.2 3 5.8 1.6 | ||
| 86 | +7.4 2.8 6.1 1.9 | ||
| 87 | +7.9 3.8 6.4 2 | ||
| 88 | +6.4 2.8 5.6 2.2 | ||
| 89 | +6.3 2.8 5.1 1.5 | ||
| 90 | +6.1 2.6 5.6 1.4 | ||
| 91 | +7.7 3 6.1 2.3 | ||
| 92 | +6.3 3.4 5.6 2.4 | ||
| 93 | +6.4 3.1 5.5 1.8 | ||
| 94 | +6 3 4.8 1.8 | ||
| 95 | +6.9 3.1 5.4 2.1 | ||
| 96 | +6.7 3.1 5.6 2.4 | ||
| 97 | +6.9 3.1 5.1 2.3 | ||
| 98 | +5.8 2.7 5.1 1.9 | ||
| 99 | +6.8 3.2 5.9 2.3 | ||
| 100 | +6.7 3.3 5.7 2.5 | ||
| 101 | +6.7 3 5.2 2.3 | ||
| 102 | +6.3 2.5 5 1.9 | ||
| 103 | +6.5 3 5.2 2 | ||
| 104 | +6.2 3.4 5.4 2.3 | ||
| 105 | +5.9 3 5.1 1.8 | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +Iris-setosa | ||
| 2 | +Iris-setosa | ||
| 3 | +Iris-setosa | ||
| 4 | +Iris-setosa | ||
| 5 | +Iris-setosa | ||
| 6 | +Iris-setosa | ||
| 7 | +Iris-setosa | ||
| 8 | +Iris-setosa | ||
| 9 | +Iris-setosa | ||
| 10 | +Iris-setosa | ||
| 11 | +Iris-setosa | ||
| 12 | +Iris-setosa | ||
| 13 | +Iris-setosa | ||
| 14 | +Iris-setosa | ||
| 15 | +Iris-setosa | ||
| 16 | +Iris-setosa | ||
| 17 | +Iris-setosa | ||
| 18 | +Iris-setosa | ||
| 19 | +Iris-setosa | ||
| 20 | +Iris-setosa | ||
| 21 | +Iris-setosa | ||
| 22 | +Iris-setosa | ||
| 23 | +Iris-setosa | ||
| 24 | +Iris-setosa | ||
| 25 | +Iris-setosa | ||
| 26 | +Iris-setosa | ||
| 27 | +Iris-setosa | ||
| 28 | +Iris-setosa | ||
| 29 | +Iris-setosa | ||
| 30 | +Iris-setosa | ||
| 31 | +Iris-setosa | ||
| 32 | +Iris-setosa | ||
| 33 | +Iris-setosa | ||
| 34 | +Iris-setosa | ||
| 35 | +Iris-versicolor | ||
| 36 | +Iris-versicolor | ||
| 37 | +Iris-versicolor | ||
| 38 | +Iris-versicolor | ||
| 39 | +Iris-versicolor | ||
| 40 | +Iris-versicolor | ||
| 41 | +Iris-versicolor | ||
| 42 | +Iris-versicolor | ||
| 43 | +Iris-versicolor | ||
| 44 | +Iris-versicolor | ||
| 45 | +Iris-versicolor | ||
| 46 | +Iris-versicolor | ||
| 47 | +Iris-versicolor | ||
| 48 | +Iris-versicolor | ||
| 49 | +Iris-versicolor | ||
| 50 | +Iris-versicolor | ||
| 51 | +Iris-versicolor | ||
| 52 | +Iris-versicolor | ||
| 53 | +Iris-versicolor | ||
| 54 | +Iris-versicolor | ||
| 55 | +Iris-versicolor | ||
| 56 | +Iris-versicolor | ||
| 57 | +Iris-versicolor | ||
| 58 | +Iris-versicolor | ||
| 59 | +Iris-versicolor | ||
| 60 | +Iris-versicolor | ||
| 61 | +Iris-versicolor | ||
| 62 | +Iris-versicolor | ||
| 63 | +Iris-versicolor | ||
| 64 | +Iris-versicolor | ||
| 65 | +Iris-versicolor | ||
| 66 | +Iris-versicolor | ||
| 67 | +Iris-versicolor | ||
| 68 | +Iris-versicolor | ||
| 69 | +Iris-versicolor | ||
| 70 | +Iris-virginica | ||
| 71 | +Iris-virginica | ||
| 72 | +Iris-virginica | ||
| 73 | +Iris-virginica | ||
| 74 | +Iris-virginica | ||
| 75 | +Iris-virginica | ||
| 76 | +Iris-virginica | ||
| 77 | +Iris-virginica | ||
| 78 | +Iris-virginica | ||
| 79 | +Iris-virginica | ||
| 80 | +Iris-virginica | ||
| 81 | +Iris-virginica | ||
| 82 | +Iris-virginica | ||
| 83 | +Iris-virginica | ||
| 84 | +Iris-virginica | ||
| 85 | +Iris-virginica | ||
| 86 | +Iris-virginica | ||
| 87 | +Iris-virginica | ||
| 88 | +Iris-virginica | ||
| 89 | +Iris-virginica | ||
| 90 | +Iris-virginica | ||
| 91 | +Iris-virginica | ||
| 92 | +Iris-virginica | ||
| 93 | +Iris-virginica | ||
| 94 | +Iris-virginica | ||
| 95 | +Iris-virginica | ||
| 96 | +Iris-virginica | ||
| 97 | +Iris-virginica | ||
| 98 | +Iris-virginica | ||
| 99 | +Iris-virginica | ||
| 100 | +Iris-virginica | ||
| 101 | +Iris-virginica | ||
| 102 | +Iris-virginica | ||
| 103 | +Iris-virginica | ||
| 104 | +Iris-virginica | ||
| 105 | +Iris-virginica | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +Iris-setosa | ||
| 2 | +Iris-setosa | ||
| 3 | +Iris-setosa | ||
| 4 | +Iris-setosa | ||
| 5 | +Iris-setosa | ||
| 6 | +Iris-setosa | ||
| 7 | +Iris-setosa | ||
| 8 | +Iris-setosa | ||
| 9 | +Iris-setosa | ||
| 10 | +Iris-setosa | ||
| 11 | +Iris-setosa | ||
| 12 | +Iris-setosa | ||
| 13 | +Iris-setosa | ||
| 14 | +Iris-setosa | ||
| 15 | +Iris-setosa | ||
| 16 | +Iris-setosa | ||
| 17 | +Iris-setosa | ||
| 18 | +Iris-setosa | ||
| 19 | +Iris-setosa | ||
| 20 | +Iris-setosa | ||
| 21 | +Iris-setosa | ||
| 22 | +Iris-setosa | ||
| 23 | +Iris-setosa | ||
| 24 | +Iris-setosa | ||
| 25 | +Iris-setosa | ||
| 26 | +Iris-setosa | ||
| 27 | +Iris-setosa | ||
| 28 | +Iris-setosa | ||
| 29 | +Iris-setosa | ||
| 30 | +Iris-setosa | ||
| 31 | +Iris-setosa | ||
| 32 | +Iris-setosa | ||
| 33 | +Iris-setosa | ||
| 34 | +Iris-setosa | ||
| 35 | +Iris-setosa | ||
| 36 | +Iris-setosa | ||
| 37 | +Iris-setosa | ||
| 38 | +Iris-setosa | ||
| 39 | +Iris-setosa | ||
| 40 | +Iris-setosa | ||
| 41 | +Iris-setosa | ||
| 42 | +Iris-setosa | ||
| 43 | +Iris-setosa | ||
| 44 | +Iris-setosa | ||
| 45 | +Iris-setosa | ||
| 46 | +Iris-setosa | ||
| 47 | +Iris-setosa | ||
| 48 | +Iris-setosa | ||
| 49 | +Iris-setosa | ||
| 50 | +Iris-setosa | ||
| 51 | +Iris-versicolor | ||
| 52 | +Iris-versicolor | ||
| 53 | +Iris-versicolor | ||
| 54 | +Iris-versicolor | ||
| 55 | +Iris-versicolor | ||
| 56 | +Iris-versicolor | ||
| 57 | +Iris-versicolor | ||
| 58 | +Iris-versicolor | ||
| 59 | +Iris-versicolor | ||
| 60 | +Iris-versicolor | ||
| 61 | +Iris-versicolor | ||
| 62 | +Iris-versicolor | ||
| 63 | +Iris-versicolor | ||
| 64 | +Iris-versicolor | ||
| 65 | +Iris-versicolor | ||
| 66 | +Iris-versicolor | ||
| 67 | +Iris-versicolor | ||
| 68 | +Iris-versicolor | ||
| 69 | +Iris-versicolor | ||
| 70 | +Iris-versicolor | ||
| 71 | +Iris-versicolor | ||
| 72 | +Iris-versicolor | ||
| 73 | +Iris-versicolor | ||
| 74 | +Iris-versicolor | ||
| 75 | +Iris-versicolor | ||
| 76 | +Iris-versicolor | ||
| 77 | +Iris-versicolor | ||
| 78 | +Iris-versicolor | ||
| 79 | +Iris-versicolor | ||
| 80 | +Iris-versicolor | ||
| 81 | +Iris-versicolor | ||
| 82 | +Iris-versicolor | ||
| 83 | +Iris-versicolor | ||
| 84 | +Iris-versicolor | ||
| 85 | +Iris-versicolor | ||
| 86 | +Iris-versicolor | ||
| 87 | +Iris-versicolor | ||
| 88 | +Iris-versicolor | ||
| 89 | +Iris-versicolor | ||
| 90 | +Iris-versicolor | ||
| 91 | +Iris-versicolor | ||
| 92 | +Iris-versicolor | ||
| 93 | +Iris-versicolor | ||
| 94 | +Iris-versicolor | ||
| 95 | +Iris-versicolor | ||
| 96 | +Iris-versicolor | ||
| 97 | +Iris-versicolor | ||
| 98 | +Iris-versicolor | ||
| 99 | +Iris-versicolor | ||
| 100 | +Iris-versicolor | ||
| 101 | +Iris-virginica | ||
| 102 | +Iris-virginica | ||
| 103 | +Iris-virginica | ||
| 104 | +Iris-virginica | ||
| 105 | +Iris-virginica | ||
| 106 | +Iris-virginica | ||
| 107 | +Iris-virginica | ||
| 108 | +Iris-virginica | ||
| 109 | +Iris-virginica | ||
| 110 | +Iris-virginica | ||
| 111 | +Iris-virginica | ||
| 112 | +Iris-virginica | ||
| 113 | +Iris-virginica | ||
| 114 | +Iris-virginica | ||
| 115 | +Iris-virginica | ||
| 116 | +Iris-virginica | ||
| 117 | +Iris-virginica | ||
| 118 | +Iris-virginica | ||
| 119 | +Iris-virginica | ||
| 120 | +Iris-virginica | ||
| 121 | +Iris-virginica | ||
| 122 | +Iris-virginica | ||
| 123 | +Iris-virginica | ||
| 124 | +Iris-virginica | ||
| 125 | +Iris-virginica | ||
| 126 | +Iris-virginica | ||
| 127 | +Iris-virginica | ||
| 128 | +Iris-virginica | ||
| 129 | +Iris-virginica | ||
| 130 | +Iris-virginica | ||
| 131 | +Iris-virginica | ||
| 132 | +Iris-virginica | ||
| 133 | +Iris-virginica | ||
| 134 | +Iris-virginica | ||
| 135 | +Iris-virginica | ||
| 136 | +Iris-virginica | ||
| 137 | +Iris-virginica | ||
| 138 | +Iris-virginica | ||
| 139 | +Iris-virginica | ||
| 140 | +Iris-virginica | ||
| 141 | +Iris-virginica | ||
| 142 | +Iris-virginica | ||
| 143 | +Iris-virginica | ||
| 144 | +Iris-virginica | ||
| 145 | +Iris-virginica | ||
| 146 | +Iris-virginica | ||
| 147 | +Iris-virginica | ||
| 148 | +Iris-virginica | ||
| 149 | +Iris-virginica | ||
| 150 | +Iris-virginica | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment