Advertisement
11eimilia11

Main

Apr 11th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.34 KB | None | 0 0
  1. import pandas as pd
  2. import FuncoesML as fun
  3. from scipy import stats
  4. import numpy as np
  5. import time
  6.  
  7. #Criando a classe receita que irá conter nome, classe e vetor de ingredientes
  8. class Receita:
  9.     Name = None
  10.     Class = 0
  11.     ingredientes = []
  12.     ingredientesnorm = []
  13.  
  14.  
  15. #Método que retorna o vetor de ingredientes
  16.     def getingrednorm(self):
  17.         return self.ingredientesnorm
  18.  
  19. #Construtor da classe receita
  20.     def __init__(self, name, Class, ingredientes):
  21.         self.Name = name
  22.         self.Class = Class
  23.         self.ingredientes = ingredientes
  24.  
  25. #Método que adiciona ingredientes no vetor de ingredientes
  26.     def adicionaringrediente(self, ingrediente):
  27.         self.ingredientes.append(ingrediente)
  28.  
  29. #abrindo o arquivo com a base de dados
  30. reshipe = open('C:/Users/Auricelia/Documents/Ciencia da Computacao/Computação Evolutiva/Base de dados/ReshibaseQ.txt',
  31.                "rt", encoding="utf8")
  32.  
  33. #criando o vetor de receitas
  34. receitas = []
  35.  
  36. # preenchendo o vetor de receitas
  37. for receita in reshipe:
  38.     dividido = receita.split(sep=',')
  39.     dividido[(len(dividido) - 1)] = dividido[(len(dividido) - 1)].replace('\n', '')
  40.     ingredientes = []
  41.  
  42.     for x in range(2, len(dividido)):
  43.         ingredientes.append(dividido[x])
  44.  
  45.     receitas.append(Receita(dividido[1], dividido[0], ingredientes))
  46.  
  47.  
  48. #criando os vetores que irão receber os ingredientes de cada classe
  49. ingredientes_1 = []
  50. ingredientes_2 = []
  51. ingredientes_3 = []
  52. ingredientes_4 = []
  53.  
  54. #preenchendo o vetor 'todosingredientes' sem repetição
  55. for rec in receitas:
  56.     for ingrediente in rec.ingredientes:
  57.  
  58.         if rec.Class == '1':
  59.             if ingredientes_1.__contains__(ingrediente) == False:
  60.                 ingredientes_1.append(ingrediente)
  61.         elif rec.Class == '2':
  62.             if ingredientes_2.__contains__(ingrediente) == False:
  63.                 ingredientes_2.append(ingrediente)
  64.         elif rec.Class == '3':
  65.             if ingredientes_3.__contains__(ingrediente) == False:
  66.                 ingredientes_3.append(ingrediente)
  67.         elif rec.Class == '4':
  68.             if ingredientes_4.__contains__(ingrediente) == False:
  69.                 ingredientes_4.append(ingrediente)
  70.  
  71. print('ingr classe 1')
  72. print(ingredientes_1)
  73. print()
  74.  
  75. print('ingr classe 2')
  76. print(ingredientes_2)
  77. print()
  78.  
  79. print('ingr classe 3')
  80. print(ingredientes_3)
  81. print()
  82.  
  83. print('ing classe 4')
  84. print(ingredientes_4)
  85. print()
  86.  
  87.  
  88. todosingredientes = []
  89. #preenchendo o vetor 'todosingredientes' sem repetição
  90. for rec in receitas:
  91.     for ingrediente in rec.ingredientes:
  92.         if todosingredientes.__contains__(ingrediente) == False:
  93.             todosingredientes.append(ingrediente)
  94.  
  95.  
  96.  
  97. #ordenando o vetor
  98. todosingredientes = sorted(todosingredientes)
  99.  
  100. #ordenando os vetores
  101. ingredientes_1 = sorted(ingredientes_1)
  102. ingredientes_2 = sorted(ingredientes_2)
  103. ingredientes_3 = sorted(ingredientes_3)
  104. ingredientes_4 = sorted(ingredientes_4)
  105.  
  106. # preenchendo nos objetos receita o vetor binário com 0
  107.  
  108. for rec in receitas:
  109.     norm = []
  110.     for y in range(0, len(todosingredientes)):
  111.         norm.append(0)
  112.     rec.ingredientesnorm = norm
  113.  
  114. # Colocando 1 na posição em que existe o ingrediente
  115.  
  116. for rec in receitas:
  117.     for y in rec.ingredientes:
  118.         pos = todosingredientes.index(y)
  119.         rec.ingredientesnorm[pos] = 1
  120.  
  121. # Vetor que irá receber os vetores binários de ingreientes de cada receita
  122. arrayingredientesnorm = []
  123.  
  124. # Preenchendo o vetor com os ingredientes normalizados
  125. for rec in receitas:
  126.     arrayingredientesnorm.append(rec.ingredientesnorm)
  127.  
  128. # Vetor que irá receber as classes de cada receita
  129. arrayclasse = []
  130.  
  131. # preenchendo o vetor com as classes de cada receita
  132. for rec in receitas:
  133.     arrayclasse.append(rec.Class)
  134.  
  135. # criando o dataframe que irá armazenar os ingredientes
  136. df = pd.DataFrame(arrayingredientesnorm)
  137.  
  138. #adicionando a classe ao dataframe
  139. df['Class'] = arrayclasse
  140.  
  141.  
  142. print('entrada')
  143. print(ingredientes_1)
  144. print()
  145.  
  146. print('prato principal')
  147. print(ingredientes_2)
  148. print()
  149.  
  150. print('acompanhamento')
  151. print(ingredientes_3)
  152. print()
  153.  
  154. print('sobremesa')
  155. print(ingredientes_4)
  156. print()
  157.  
  158.  
  159. #separando as receitas por classe
  160. df_1 = df.loc[df['Class'] == '1']
  161. df_2 = df.loc[df['Class'] == '2']
  162. df_3 = df.loc[df['Class'] == '3']
  163. df_4 = df.loc[df['Class'] == '4']
  164.  
  165. print('df 1')
  166. print(df_1.head())
  167. print(df_1.shape[0])
  168. print()
  169. print('df 2')
  170. print(df_2.head())
  171. print()
  172. print('df 3')
  173. print(df_3.head())
  174. print()
  175. print('df 4')
  176. print(df_4)
  177. print()
  178.  
  179.  
  180. # criando a população de receitas com 20 cromossomos de tamanho 38
  181. # cromossomos = fun.create_population(20, tamanho_ingredientes)
  182. # for cromo in cromossomos:
  183.  
  184.  
  185. # j = 0
  186. # y = df[j:j+1]
  187. # df_2.append(y)
  188. # print(df.at[7, 'Class'])
  189. # print(df[0:1])
  190. # print('adicionando 1 linha ao df_2')
  191. # print(df_2)
  192.  
  193. # print(df.loc[df['Class']== '1'])
  194.  
  195. #criando os vetores que irão armazenar as probabilidades de cada ingrediente por classe
  196. p_ingrediente_1 = []
  197. p_ingrediente_2 = []
  198. p_ingrediente_3 = []
  199. p_ingrediente_4 = []
  200.  
  201. # gerando as probabilidades para a classe '1'
  202. total_rec_1 = df_1.shape[0]
  203. df_1_noclass = df_1.copy()
  204. del df_1_noclass['Class']
  205.  
  206. for i in range(total_rec_1):
  207.  
  208.     soma = df_1_noclass[i].sum()
  209.     prob_ingrediente = soma / total_rec_1
  210.     p_ingrediente_1.append(prob_ingrediente)
  211.  
  212. print(p_ingrediente_1)
  213.  
  214. # gerando as probabilidades para a classe '2'
  215.  
  216. total_rec_2 = df_2.shape[0]
  217. df_2_noclass = df_2.copy()
  218. del df_2_noclass['Class']
  219.  
  220. for j in range(total_rec_2):
  221.     soma = df_2_noclass[j].sum()
  222.     prob_ingrediente = soma / total_rec_2
  223.     p_ingrediente_2.append(prob_ingrediente)
  224.  
  225. print(p_ingrediente_2)
  226.  
  227. # gerando as probabilidades para a classe '3'
  228.  
  229. total_rec_3 = df_3.shape[0]
  230. df_3_noclass = df_3.copy()
  231. del df_3_noclass['Class']
  232.  
  233. for k in range(total_rec_3):
  234.     soma = df_3_noclass[k].sum()
  235.     prob_ingrediente = soma / total_rec_3
  236.     p_ingrediente_3.append(prob_ingrediente)
  237.  
  238. print(p_ingrediente_3)
  239.  
  240. # gerando as probabilidades para a classe '4'
  241.  
  242. total_rec_4 = df_4.shape[0]
  243. df_4_noclass = df_4.copy()
  244. del df_4_noclass['Class']
  245.  
  246. for l in range(total_rec_3):
  247.     soma = df_4_noclass[l].sum()
  248.     prob_ingrediente = soma / total_rec_4
  249.     p_ingrediente_4.append(prob_ingrediente)
  250.  
  251.  
  252. print(p_ingrediente_4)
  253.  
  254. tamanho = 402
  255. cromossomos = fun.create_population(2,404)
  256. print()
  257. print(cromossomos)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement