Advertisement
11eimilia11

sono

Feb 18th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 20.91 KB | None | 0 0
  1. import pandas as pd
  2. from sklearn.model_selection import KFold
  3. from sklearn.neighbors import KNeighborsClassifier
  4. from sklearn.tree import DecisionTreeClassifier
  5. from sklearn.naive_bayes import GaussianNB
  6. from sklearn.linear_model import LogisticRegression
  7. from sklearn.svm import SVC
  8. from Lista02 import FuncoesML as fun
  9. from scipy import stats
  10. import numpy as np
  11. from random import randint
  12. from sklearn.cluster import KMeans
  13. from Lista03 import pso as pso
  14. import time
  15. from scipy.stats import friedmanchisquare
  16. import matplotlib.pyplot as plt
  17.  
  18. #Criando a classe receita que irá conter nome, classe e vetor de ingredientes
  19. class Receita:
  20.     Name = None
  21.     Class = 0
  22.     ingredientes = []
  23.     ingredientesnorm = []
  24.  
  25.  
  26. #Método que retorna o vetor de ingredientes
  27.     def getingrednorm(self):
  28.         return self.ingredientesnorm
  29.  
  30. #Construtor da classe receita
  31.     def __init__(self, name, Class, ingredientes):
  32.         self.Name = name
  33.         self.Class = Class
  34.         self.ingredientes = ingredientes
  35.  
  36. #Método que adiciona ingredientes no vetor de ingredientes
  37.     def adicionaringrediente(self, ingrediente):
  38.         self.ingredientes.append(ingrediente)
  39.  
  40. #abrindo o arquivo com a base de dados
  41. reshipe = open("C:/Users/Auricelia/Desktop/DatasetsML/ReshibaseQ.txt", "rt", encoding="utf8")
  42.  
  43. #criando o vetor de receitas
  44. receitas = []
  45.  
  46. # preenchendo o vetor de receitas
  47. for receita in reshipe:
  48.     dividido = receita.split(sep=',')
  49.     dividido[(len(dividido) - 1)] = dividido[(len(dividido) - 1)].replace('\n', '')
  50.     ingredientes = []
  51.  
  52.     for x in range(2, len(dividido)):
  53.         ingredientes.append(dividido[x])
  54.  
  55.     receitas.append(Receita(dividido[1], dividido[0], ingredientes))
  56.  
  57. #vetor que irá receber todos os ingredientes sem repetição para fazer os vetores binários
  58. todosingredientes = []
  59.  
  60. #preenchendo o vetor 'todosingredientes' sem repetição
  61. for rec in receitas:
  62.     for ingrediente in rec.ingredientes:
  63.  
  64.         if todosingredientes.__contains__(ingrediente) == False:
  65.             todosingredientes.append(ingrediente)
  66. #ordenando o vetor
  67. todosingredientes = sorted(todosingredientes)
  68.  
  69. # preenchendo nos objetos receita o vetor binário com 0
  70.  
  71. for rec in receitas:
  72.     norm = []
  73.     for y in range(0, len(todosingredientes)):
  74.         norm.append(0)
  75.     rec.ingredientesnorm = norm
  76.  
  77. # Colocando 1 na posição em que existe o ingrediente
  78.  
  79. for rec in receitas:
  80.     for y in rec.ingredientes:
  81.         pos = todosingredientes.index(y)
  82.         rec.ingredientesnorm[pos] = 1
  83.  
  84. # Vetor que irá receber os vetores binários de ingreientes de cada receita
  85. arrayingredientesnorm = []
  86.  
  87. # Preenchendo o vetor com os ingredientes normalizados
  88.  
  89. for rec in receitas:
  90.     arrayingredientesnorm.append(rec.ingredientesnorm)
  91.  
  92. # Vetor que irá receber as classes de cada receita
  93. arrayclasse = []
  94.  
  95. # preenchendo o vetor com as classes de cada receita
  96. for rec in receitas:
  97.     arrayclasse.append(rec.Class)
  98.  
  99. # criando o dataframe que irá armazenar os ingredientes
  100. df = pd.DataFrame(arrayingredientesnorm)
  101.  
  102. #adicionando a classe ao dataframe
  103. df['Class'] = arrayclasse
  104. lista = df['Class']
  105. del df['Class']
  106. df_final = np.array(df).astype(float)
  107.  
  108. #Salvando a base de dados normalizada
  109. df.to_csv('C:/Users/Auricelia/Desktop/DataSetsML/Receitas_norm.csv')
  110.  
  111. print('TAMANHO DF :',df_final[0].size*4)
  112.  
  113. '''
  114. COMEÇAM OS ALGORITMOS DE AGRUPAMENTO
  115.  
  116. '''
  117. print('COMEÇAM OS ALGORITMOS DE AGRUPAMENTO')
  118. print('------------------------------------------')
  119.  
  120. KCLUSTERS = 4
  121.  
  122. def WCSS(distance):
  123.     retorno = []
  124.     for x in distance:
  125.         soma = 0
  126.         for z in x:
  127.             soma += z ** 2
  128.         retorno.append(soma)
  129.  
  130.     return retorno
  131.  
  132. def break_vectors(vector):
  133.     global KCLUSTERS
  134.     retorno = np.split(vector, KCLUSTERS)
  135.     return retorno
  136.  
  137. def wcssGenetic(centers):
  138.     global KCLUSTERS
  139.     array = break_vectors(centers)
  140.  
  141.     kmeans = KMeans(KCLUSTERS, init=pd.DataFrame(array), max_iter=1, n_init=1)
  142.     kmeans.fit(pd.DataFrame(df_final))
  143.  
  144.     return kmeans.inertia_
  145.  
  146. def generatepopulation(X, numberpopu, K, rng):
  147.     population = []
  148.  
  149.     for x in range(numberpopu):
  150.         first = rng.permutation(X.shape[0])[:K]
  151.         population.append(np.concatenate(X[first]))
  152.  
  153.     return population
  154. print(".....Começa a execução.....")
  155. print()
  156.  
  157.  
  158. # Vetores de acurácia dos algoritmos K-means e K-means híbrido
  159. KmeansAcc = []
  160. KmeansHbAcc = []
  161. GeneticAcc = []
  162.  
  163. #Vetores que irão armazenar o WCSS do K-means e do K-means híbrido
  164. WCSSkmeans = []
  165. WCSShb = []
  166. WCSSPSO = []
  167.  
  168. # Vetores que irão armazenar o tempo de execução de cada algoritmo
  169. KmeansTime = []
  170. KmeasnHBTime = []
  171. PSOTime = []
  172. for y in range(50):
  173.  
  174.     print("RODADA " + str(y))
  175.     resultparcial = []
  176.     distance = []
  177.     h = randint(1, 10)
  178.     rng = np.random.RandomState(h)
  179.  
  180.  
  181.     print("-----------------------------------------------")
  182.  
  183.     # laço que irá executar 20 vezes o Kmeans
  184.     auxiliar = []
  185.     for var in range(20):
  186.  
  187.         print("VEZ KMEANS " + str(var))
  188.         KmeansStart = time.time()
  189.         centers, labels, distance = fun.find_clusters(df_final, KCLUSTERS, rng, 100)
  190.         KmeansEnd = time.time()
  191.         KmeansTime.append(KmeansEnd - KmeansStart)
  192.  
  193.         print(fun.accuracy_majority_vote(df_final, labels, lista, 2))
  194.         auxiliar.append(fun.accuracy_majority_vote(df_final, labels, lista, 2))
  195.         retorno = WCSS(distance)
  196.         resultparcial.append(retorno[len(retorno) - 1])
  197.  
  198.  
  199.     resultparcial = np.sort(resultparcial)
  200.     KmeansAcc.append(np.mean(auxiliar))
  201.  
  202.     WCSSkmeans.append(resultparcial[0])
  203.  
  204.     population = generatepopulation(df_final, 20, KCLUSTERS, rng)
  205.  
  206.     PSOStart = time.time()
  207.     p = pso(20, wcssGenetic, 0, 200000, 1608, 100, init=population)
  208.     array = np.array(p.get_Gbest())
  209.     array = np.split(array, 4)
  210.     labelsgenetic, distancegenetic = fun.geneticlabels(df_final, array)
  211.     PSOEnd = time.time()
  212.     PSOTime.append(PSOEnd - PSOStart)
  213.  
  214.     print(fun.accuracy_majority_vote(df_final, labelsgenetic, lista, 4))
  215.     GeneticAcc.append(fun.accuracy_majority_vote(df_final, labelsgenetic, lista, 4))
  216.     WcssUpDate = fun.WCSS2(distancegenetic)
  217.     WCSSPSO.append(WcssUpDate)
  218.  
  219.     print("Hybrid:")
  220.     HybStart = time.time()
  221.  
  222.     cen, lbl, dis = fun.find_clustersgenetic(df_final, KCLUSTERS, 100, array)
  223.  
  224.     HybEnd = time.time()
  225.  
  226.     KmeasnHBTime.append(HybEnd - HybStart)
  227.  
  228.     print(fun.accuracy_majority_vote(df_final, lbl, lista, 4))
  229.     KmeansHbAcc.append(fun.accuracy_majority_vote(df_final, lbl, lista, 4))
  230.  
  231.     ret = WCSS(dis)
  232.     WCSShb.append(ret[len(ret) - 1])
  233.  
  234.  
  235.     # num = retorno[len(retorno) - 1]
  236.     # dictionary[h] = num
  237.  
  238. #
  239. # print("Distancias" ,distance)
  240.  
  241. print("__________________WCSS___________________")
  242. print()
  243. print(np.mean(WCSSkmeans), 'Acurácia Média Kmeans')
  244. print(np.std(WCSSkmeans), 'Desvio Padrao Kmeans')
  245. print(np.median(WCSSkmeans),'Mediana Kmeans')
  246. print(np.mean(WCSShb), 'Acurácia Média K hibrido')
  247. print(np.std(WCSShb), 'Desvio padrao K hibrido')
  248. print(np.median(WCSShb), 'Mediana K-hibrido')
  249. print("__________________________________________")
  250.  
  251. print("__________________VOTO MAJORITARIO_______________")
  252. print()
  253. print('----------------Kmeans----------')
  254. print("Kmeans media:" ,np.mean(KmeansAcc))
  255. print('Mediana acurácia', np.median(KmeansAcc))
  256. print('Desvio padrão', np.std(KmeansAcc))
  257. print('----------Kmeans Hibrido-------')
  258. print("KmeansHybrid media:" ,np.mean(KmeansHbAcc))
  259. print('Mediana acurácia', np.median(KmeansHbAcc))
  260. print('Desvio Padrao', np.std(KmeansHbAcc))
  261. print('-------------PSO-------------')
  262. print("Genetic media:" ,np.mean(GeneticAcc))
  263. print('Mediana acurácia', np.median(GeneticAcc))
  264. print('Desvio padrao', np.std(GeneticAcc))
  265.  
  266. print('________________Tempo de execução _______________________')
  267. print('------------Kmeans------------------')
  268. print('Tempo medio ', np.mean(KmeansTime))
  269. print('Mediana tempo ', np.median(KmeansTime))
  270. print('Desvio Padrao ', np.std(KmeansTime))
  271.  
  272.  
  273. print('-----------K means hibrido -------------')
  274.  
  275. print('Tempo medio ', np.mean(KmeasnHBTime))
  276. print('Mediana tempo ', np.median(KmeasnHBTime))
  277. print('Tempo medio ', np.std(KmeasnHBTime))
  278.  
  279. print('----------- PSO -------------')
  280. print('Tempo medio ', np.mean(PSOTime))
  281. print('Mediana tempo ', np.median(PSOTime))
  282. print('Desvio Padrao ', np.std(PSOTime))
  283.  
  284. print('FIM AGRUPAMENTO')
  285. print('------------------------------------------')
  286.  
  287. resultadaoacuracia = []
  288. for it in range(len(KmeansHbAcc)):
  289.     aux = []
  290.     aux.append(KmeansAcc[it])
  291.     aux.append(KmeansHbAcc[it])
  292.     aux.append(GeneticAcc[it])
  293.     resultadaoacuracia.append(aux)
  294.  
  295. resultadaowcss = []
  296. for it2 in range(len(WCSSPSO)):
  297.     aux2 = []
  298.     aux2.append(WCSSkmeans[it2])
  299.     aux2.append(WCSShb[it2])
  300.     aux2.append(WCSSPSO[it2])
  301.     resultadaowcss.append(aux2)
  302.  
  303.  
  304. resultadaoacuracia = pd.DataFrame(resultadaoacuracia, columns=['K-means', 'Hybrid', 'PSO'])
  305. resultadaowcss = pd.DataFrame(resultadaowcss, columns=['K-means', 'Hybrid', 'PSO'])
  306.  
  307.  
  308.  
  309. stat, p = friedmanchisquare(KmeansAcc, KmeansHbAcc, GeneticAcc)
  310. resultadaoacuracia.boxplot(figsize=(10, 6))
  311. plt.title("P-value:" + str(p))
  312. plt.xlabel("Algorithms")
  313. plt.ylabel("Accuracy")
  314. plt.savefig("C:/Users/Auricelia/Desktop/ResultadosReshipe/AgrupamentoAcuracy.png")
  315.  
  316.  
  317. stat, p = friedmanchisquare(WCSSkmeans, WCSShb, WCSSPSO)
  318. resultadaowcss.boxplot(figsize=(10, 6))
  319. plt.title("P-value:" + str(p))
  320. plt.xlabel("Algorithms")
  321. plt.ylabel("WCSS")
  322. plt.savefig("C:/Users/Auricelia/Desktop/ResultadosReshipe/AgrupamentoWCSS.png")
  323.  
  324. '''
  325.  
  326. FIM DOS ALGORITMOS DE AGRUPMENTO
  327.  
  328. '''
  329. #COMEÇAM OS ALGORITMOS DE CLASSIFICAÇÃO
  330. '''
  331. # criando o dataframe que irá armazenar os ingredientes
  332. df = pd.DataFrame(arrayingredientesnorm)
  333.  
  334.  
  335. #adicionando a classe ao dataframe
  336. df['Class'] = arrayclasse
  337.  
  338. print(df)
  339.  
  340. #print(df)
  341. '''
  342. print('Entrada',fun.quantidade_por_classe(reshipe, 'Class', 1))
  343. print('Prato principal',fun.quantidade_por_classe(reshipe, 'Class', 2))
  344. print('Acompanhamento',fun.quantidade_por_classe(reshipe, 'Class', 3))
  345. print('Sobremesa',fun.quantidade_por_classe(reshipe, 'Class', 4))
  346. '''
  347.  
  348.  
  349. #df.to_csv('C:/Users/Auricelia/Desktop/DataSetsML/df_norm.csv')
  350.  
  351. #instanciando o kfold com k = 10
  352. kfold = KFold(10, True, 1)
  353.  
  354. #instanciando os aloritmos usados
  355.  
  356. #KNN K = 3, K = 5, K = 7
  357.  
  358. K_3 = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
  359. acertoK_3 = [] # vetor que irá conter as acuráricas do algoritmo em cada um dos testes
  360. k_3time = [] # vetor que irá conter os tempos de duração de cada algoritmo em cada um dos testes
  361.  
  362. K_5 = KNeighborsClassifier(n_neighbors=5, metric='euclidean')
  363. acertoK_5 = []
  364. k_5time = []
  365.  
  366. K_7 = KNeighborsClassifier(n_neighbors=7, metric='euclidean')
  367. acertoK_7 = []
  368. k_7time = []
  369.  
  370. # KNN Ponderado K = 3, K = 5, K = 7
  371.  
  372. KP_3 = KNeighborsClassifier(n_neighbors=3, weights='distance',metric='euclidean')
  373. acertoKP_3 = []
  374. kp3time = []
  375.  
  376. KP_5 = KNeighborsClassifier(n_neighbors=5, weights='distance', metric='euclidean')
  377. acertoKP_5 = []
  378. kp5time = []
  379.  
  380. KP_7 = KNeighborsClassifier(n_neighbors=7, weights='distance', metric='euclidean')
  381. acertoKP_7 = []
  382. kp7time = []
  383.  
  384. #Naive Bayes
  385.  
  386. naiveBayes = GaussianNB()
  387. acertonaiveBayes = []
  388. naiveBayestime = []
  389.  
  390. #Árvore de decisão
  391.  
  392. ArvoreDecisao = DecisionTreeClassifier()
  393. acertoArvoreDecisao= []
  394. arvoreDecisaotime = []
  395.  
  396. #SVM linear
  397.  
  398. SVMlinear = SVC(kernel='linear')
  399. acertoSVMLinear = []
  400. svmlineartime = []
  401.  
  402.  
  403. #SVM RBF
  404.  
  405. SVMrbf = SVC(kernel='rbf', gamma='scale')
  406. acertoSVMrbf= []
  407. svmrbftime = []
  408.  
  409. #Regressão Logística
  410.  
  411. logisticRegr = LogisticRegression()
  412. logisticRarray = []
  413. logistictime = []
  414.  
  415. # Multilayer Perceptron
  416. MLP = MLPClassifier()
  417. MLP_acerto = []
  418. MLP_tempo = []
  419.  
  420. # variável que irá servir para calcular o tempo total de execução dos algoritmos
  421. tempoinicial = time.time()
  422.  
  423.  
  424. for x in range(0, 5):
  425.  
  426.    tempo1 = time.time()
  427.    cols = list(df.columns)
  428.    cols.remove('Class')
  429.  
  430.    # separando os dataframes um com classe outro sem classe
  431.    df_noclass = df[cols]
  432.    df_class = df['Class']
  433.  
  434.    # início do kfold
  435.    c = kfold.split(df)
  436.  
  437.    for train_index, test_index in c:
  438.  
  439.        noclass_train, noclass_test = df_noclass.iloc[train_index], df_noclass.iloc[test_index]
  440.        class_train, class_test = df_class.iloc[train_index], df_class.iloc[test_index]
  441.  
  442.        K_3start = time.time()
  443.        K_3.fit(noclass_train, class_train)
  444.        acertoK_3.append(K_3.score(noclass_test, class_test))
  445.        K_3end = time.time()
  446.        k_3time.append(K_3end - K_3start)
  447.  
  448.        K_5start = time.time()
  449.        K_5.fit(noclass_train, class_train)
  450.        acertoK_5.append(K_5.score(noclass_test, class_test))
  451.        K_5end = time.time()
  452.        k_5time.append(K_5end - K_5start)
  453.  
  454.        K_7start = time.time()
  455.        K_7.fit(noclass_train, class_train)
  456.        acertoK_7.append(K_7.score(noclass_test, class_test))
  457.        K_7end = time.time()
  458.        k_7time.append(K_7end - K_7start)
  459.  
  460.        naivestart = time.time()
  461.        naiveBayes.fit(noclass_train, class_train)
  462.        acertonaiveBayes.append(naiveBayes.score(noclass_test, class_test))
  463.        naiveend = time.time()
  464.        naiveBayestime.append(naiveend - naivestart)
  465.  
  466.        arvorestart = time.time()
  467.        ArvoreDecisao.fit(noclass_train, class_train)
  468.        acertoArvoreDecisao.append(ArvoreDecisao.score(noclass_test, class_test))
  469.        treeend = time.time()
  470.        arvoreDecisaotime.append(treeend - arvorestart)
  471.  
  472.        kp3start = time.time()
  473.        KP_3.fit(noclass_train, class_train)
  474.        acertoKP_3.append(KP_3.score(noclass_test, class_test))
  475.        kp3end = time.time()
  476.        kp3time.append(kp3end - kp3start)
  477.  
  478.        kp7start = time.time()
  479.        KP_7.fit(noclass_train, class_train)
  480.        acertoKP_7.append(KP_7.score(noclass_test, class_test))
  481.        kp7end = time.time()
  482.        kp7time.append(kp7end - kp7start)
  483.  
  484.        kp5start = time.time()
  485.        KP_5.fit(noclass_train, class_train)
  486.        acertoKP_5.append(KP_5.score(noclass_test, class_test))
  487.        kp5end = time.time()
  488.        kp5time.append(kp5end - kp5start)
  489.  
  490.        svmlinearstart = time.time()
  491.        SVMlinear.fit(noclass_train, class_train)
  492.        acertoSVMLinear.append(SVMlinear.score(noclass_test, class_test))
  493.        svmlinearend = time.time()
  494.        svmlineartime.append(svmlinearend - svmlinearstart)
  495.  
  496.        svmrbfstart = time.time()
  497.        SVMrbf.fit(noclass_train, class_train)
  498.        acertoSVMrbf.append(SVMrbf.score(noclass_test, class_test))
  499.        svmrbfend = time.time()
  500.        svmrbftime.append(svmrbfend - svmrbfstart)
  501.  
  502.        logisticstart = time.time()
  503.        logisticRegr.fit(noclass_train, class_train)
  504.        logisticRarray.append(logisticRegr.score(noclass_test, class_test))
  505.        logisticend = time.time()
  506.        logistictime.append(logisticend - logisticstart)
  507.  
  508.        MLP_inicio = time.time()
  509.        MLP.fit(noclass_train, class_train)
  510.        MLP_acerto.append(MLP.score(noclass_test, class_test))
  511.        MLP_fim = time.time()
  512.        MLP_tempo.append(MLP_fim - MLP_inicio)
  513.  
  514.  
  515.    df = df.sample(frac=1)
  516.    print("Terminou a ", x)
  517.    tempo2 = time.time()
  518.    print("Tempo da rodada ", x, (tempo2 - tempo1) / 60)
  519.  
  520. tempofinal = time.time()
  521.  
  522. mediaknn3 = np.mean(acertoK_3)
  523. medianaknn3 = np.median(acertoK_3)
  524. stdknn3 = np.std(acertoK_3)
  525. timeknn3 = np.mean(k_3time)
  526.  
  527. mediaknn5 = np.mean(acertoK_5)
  528. medianaknn5 = np.median(acertoK_5)
  529. stdknn5 = np.std(acertoK_5)
  530. timeknn5 = np.mean(k_5time)
  531.  
  532. mediaknn7 = np.mean(acertoK_7)
  533. medianaknn7 = np.median(acertoK_7)
  534. stdknn7 = np.std(acertoK_7)
  535. timeknn7 = np.mean(k_7time)
  536.  
  537. mediaMLP = np.mean(MLP_acerto)
  538. medianaMLP = np.median(MLP_acerto)
  539. stdMLP = np.std(MLP_acerto)
  540. timeMLP = np.median(MLP_tempo)
  541.  
  542.  
  543. print("_______________________________________________")
  544. print("Multi Layer Perceptron")
  545. print("Media: ", mediaMLP)
  546. print("Mediana: ", medianaMLP)
  547. print("Desvio padrão: ", stdMLP)
  548. print("Tempo médio: ", timeMLP)
  549. print("_______________________________________________")
  550.  
  551.  
  552.  
  553. print('________________________________________________\n')
  554. print("KNN")
  555. print("Media:\nK = 3: ", mediaknn3, " K = 5: ", mediaknn5, " K = 7: ", mediaknn7)
  556. print("Mediana:\nK = 3: ", medianaknn3, " K = 5: ", medianaknn5, " K = 7: ", medianaknn7)
  557. print("Desvio Padrão:\nK = 3: ", stdknn3, " K = 5: ", stdknn5, " K = 7: ", stdknn7)
  558. print("Tempo médio:\nK = 3: ", timeknn3, " K = 5: ", timeknn5, " K = 7: ", timeknn7)
  559. print("_______________________________________________")
  560.  
  561. mediaknnpounded3 = np.mean(acertoKP_3)
  562. medianaknnpounded3 = np.median(acertoKP_3)
  563. stdknnpounded3 = np.std(acertoKP_3)
  564. timewknn3 = np.mean(kp3time)
  565.  
  566. mediaknnpounded5 = np.mean(acertoKP_5)
  567. medianaknnpounded5 = np.median(acertoKP_5)
  568. stdknnpounded5 = np.std(acertoKP_5)
  569. timewknn5 = np.mean(kp5time)
  570.  
  571. mediaknnpounded7 = np.mean(acertoKP_7)
  572. medianaknnpounded7 = np.median(acertoKP_7)
  573. stdknnpounded7 = np.std(acertoKP_7)
  574. timewknn7 = np.mean(kp7time)
  575.  
  576. print("_______________________________________________")
  577. print("KNN Ponderado ")
  578. print("Media:\nk = 3: ", mediaknnpounded3, " k = 5: ", mediaknnpounded5, " k = 7: ", mediaknnpounded7)
  579. print("Mediana:\nk = 3: ", medianaknnpounded3, " k = 5: ", medianaknnpounded5, " k = 7: ", medianaknnpounded7)
  580. print("Desvio padrão:\nk = 3: ", stdknnpounded3, " k = 5: ", stdknnpounded5, " k = 7: ", stdknnpounded7)
  581. print("Tempo médio:\nk = 3: ", timewknn3, " k = 5: ", timewknn5, " k = 5: ", timewknn7)
  582. print("_______________________________________________")
  583.  
  584. medianaive = np.mean(acertonaiveBayes)
  585. mediananaive = np.median(acertonaiveBayes)
  586. stdnaive = np.std(acertonaiveBayes)
  587. timenaive = np.mean(naiveBayestime)
  588.  
  589. print("_______________________________________________")
  590. print("Naïve Bayes")
  591. print("Media: ", medianaive)
  592. print("Mediana: ", mediananaive)
  593. print("Desvio padrão: ", stdnaive)
  594. print("Tempo médio: ", timenaive)
  595. print("_______________________________________________")
  596.  
  597. mediatree = np.mean(acertoArvoreDecisao)
  598. medianatree = np.median(acertoArvoreDecisao)
  599. stdtree = np.std(acertoArvoreDecisao)
  600. timetree = np.mean(arvoreDecisaotime)
  601.  
  602. print("_______________________________________________")
  603. print("Árvore de decisão")
  604. print("Media: ", mediatree)
  605. print("Mediana: ", medianatree)
  606. print("Desvio padrão: ", stdtree)
  607. print("Tempo médio: ", timetree)
  608. print("_______________________________________________")
  609.  
  610. mediasvmlinear = np.mean(acertoSVMLinear)
  611. medianasvmlinear = np.median(acertoSVMLinear)
  612. stdsvmlinear = np.std(acertoSVMLinear)
  613. timesvmlinear = np.mean(svmlineartime)
  614.  
  615. print("_______________________________________________")
  616. print("SVM kernel linear")
  617. print("Media: ", mediasvmlinear)
  618. print("Mediana: ", medianasvmlinear)
  619. print("Desvio padrão: ", stdsvmlinear)
  620. print("Tempo médio: ", timesvmlinear)
  621. print("_______________________________________________")
  622.  
  623. mediasvmrbf = np.mean(acertoSVMrbf)
  624. medianasvmrbf = np.median(acertoSVMrbf)
  625. stdsvmrbf = np.std(acertoSVMrbf)
  626. timesvmrbf = np.mean(svmrbftime)
  627.  
  628. print("_______________________________________________")
  629. print("SVM kernel rbf")
  630. print("Media: ", mediasvmrbf)
  631. print("Mediana: ", medianasvmrbf)
  632. print("Desvio padrão: ", stdsvmrbf)
  633. print("Tempo médio: ", timesvmrbf)
  634. print("_______________________________________________")
  635.  
  636. medialogistic = np.mean(logisticRarray)
  637. medianalogistic = np.median(logisticRarray)
  638. stdslogistic = np.std(logisticRarray)
  639. timelogistic = np.mean(logistictime)
  640.  
  641. print("_______________________________________________")
  642. print("Regressao Logistica")
  643. print("Media: ", medialogistic)
  644. print("Mediana: ", medianalogistic)
  645. print("Desvio padrão: ", stdslogistic)
  646. print("Tempo médio: ", timelogistic)
  647. print("_______________________________________________")
  648.  
  649.  
  650. print("Tempo total: ", (tempofinal - tempoinicial) / 60)
  651.  
  652.  
  653. resultadocsv = []
  654. for x in range(len(acertoKP_3)):
  655.    aux = []
  656.    aux.append(acertoK_3[x])
  657.    aux.append(acertoK_5[x])
  658.    aux.append(acertoK_7[x])
  659.    aux.append(acertoKP_3[x])
  660.    aux.append(acertoKP_5[x])
  661.    aux.append(acertoKP_7[x])
  662.    aux.append(acertonaiveBayes[x])
  663.    aux.append(acertoArvoreDecisao[x])
  664.    aux.append(acertoSVMLinear[x])
  665.    aux.append(acertoSVMrbf[x])
  666.    aux.append(logisticRarray[x])
  667.    aux.append(MLP_acerto[x])
  668.    resultadocsv.append(aux)
  669.  
  670.  
  671. resultadocsv = pd.DataFrame(resultadocsv,columns=['KNN3','KNN5','KNN7','KNNP3','KNNP5','KNNP7',
  672. 'NAIVE','TREE','SVMLINEAR','SVMRBF','REGLOG','MLP'])
  673. print(resultadocsv)
  674. resultadocsv.to_csv("C:/Users/Auricelia/Desktop/ResultadosReshipe/RESULTCSV.csv")
  675.  
  676.  
  677. # implementando o teste de Friedman para todos os algoritmos usados
  678. n, p = stats.friedmanchisquare(acertoK_3,acertoK_5,acertoK_7,acertoKP_3,acertoKP_5,acertoKP_7,acertonaiveBayes,
  679. acertoArvoreDecisao,acertoSVMrbf,acertoSVMLinear,logisticRarray,MLP_acerto)
  680. resultadocsv.boxplot(figsize=(12,8))
  681. plt.title("P-value: " + str(p))
  682. plt.xlabel("Algorithms")
  683. plt.ylabel("Accuracy")
  684. plt.savefig("C:/Users/Auricelia/Desktop/ResultadosReshipe/BOXPLOTRESULTADO")
  685. plt.show()
  686.  
  687. # Terminam os algoritmos de classificação '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement