Advertisement
11eimilia11

Funcoes ML

Dec 6th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. import pandas as pd
  2. from sklearn import preprocessing
  3. from sklearn.neighbors import KNeighborsClassifier
  4. from scipy import stats
  5. from sklearn.naive_bayes import GaussianNB
  6. from sklearn.tree import DecisionTreeClassifier
  7. from sklearn.svm import SVC
  8. import statistics
  9. from sklearn.metrics import pairwise_distances_argmin_min
  10. import numpy as np
  11. from random import randint
  12.  
  13.  
  14. # função que calcula a quantidade de elementos por classe
  15. # a partir do data frame original, o nome da classe e a classificação
  16.  
  17. def quantidade_por_classe (dados, nome_classe, classe):
  18. cont = 0
  19. for x in range(len(dados.index)):
  20. if (dados[nome_classe].iloc[x] == classe):
  21. cont += 1
  22. return cont
  23. # função de inicialização do algoritmo KNN , recebe o k
  24. # e a distância que vai ser usada como referência
  25.  
  26. def inicializacao_KNN (k):
  27.  
  28. knn = KNeighborsClassifier(n_neighbors=k, metric='euclidean')
  29. return knn
  30.  
  31.  
  32. # função de normalização dos dados usando o modelo de
  33. # normalização por reescala
  34.  
  35. def normalizar(dados):
  36. x = dados.values
  37. min_max_scaler = preprocessing.MinMaxScaler()
  38. x_scaled = min_max_scaler.fit_transform(x)
  39. dados_norm = pd.DataFrame(x_scaled)
  40. return dados_norm
  41.  
  42. # função que calcula os valores de média, moda , mediana e desvio padrão
  43. # para os vetores de acerto de um algoritmo, recebe como parâmetro o vetor
  44. # de acerto e o nome do algoritmo
  45.  
  46. def tendencia_central (vetor_acerto, algoritmo):
  47. print('________________________________________________\n')
  48. print(algoritmo)
  49. print('media = ', np.mean(vetor_acerto))
  50. print('mediana = ', np.median(vetor_acerto))
  51. print('moda = ', stats.mode(vetor_acerto, axis=None))
  52. print('desvio padrao = ', statistics.pstdev(vetor_acerto))
  53. print('________________________________________________\n')
  54.  
  55. # função que cria amostras estratificadas a partir
  56. # dos Data frame, o tamanho desejado para a amostra
  57. # e a classe dos dados
  58.  
  59. def amostra_estrat(dados, tamanho_amostra, classe):
  60. classes = dados[classe].unique()
  61. qtde_por_classe = round(tamanho_amostra / len(classes))
  62. amostras_por_classe = []
  63. for c in classes:
  64. indices_c = dados[classe] == c
  65. obs_c = dados[indices_c]
  66. amostra_c = obs_c.sample(qtde_por_classe)
  67. amostras_por_classe.append(amostra_c)
  68.  
  69. amostra_estratificada = pd.concat(amostras_por_classe)
  70. return amostra_estratificada
  71.  
  72. # função que realiza o treinamento dos algoritmos usados na base de dados
  73.  
  74. def treinaralgoritmos(noclass_train, class_train , tree, knnp1 , knnp2 , knnp3, knn1 , knn2 , knn3, naive, svmlinear , svmrbf):
  75.  
  76. knn1.fit(noclass_train, class_train)
  77. knn2.fit(noclass_train, class_train)
  78. knn3.fit(noclass_train, class_train)
  79. naive.fit(noclass_train, class_train)
  80. tree.fit(noclass_train, class_train)
  81. knnp1.fit(noclass_train, class_train)
  82. knnp2.fit(noclass_train, class_train)
  83. knnp3.fit(noclass_train, class_train)
  84. svmlinear.fit(noclass_train, class_train)
  85. svmrbf.fit(noclass_train, class_train)
  86.  
  87. # função de inicialização do algoritmo KNN Ponderado
  88. # recebe como parâmentro o valor do k
  89.  
  90. def inicializando_KNNW (k):
  91.  
  92. knnp = KNeighborsClassifier(n_neighbors=k, weights='distance', metric='euclidean')
  93. return knnp
  94.  
  95.  
  96. def find_clusters(X, n_clusters, rng, max_it):
  97.  
  98. i = rng.permutation(X.shape[0])[:n_clusters]
  99. centers = X[i]
  100.  
  101. max_iterator = 0
  102. distances = []
  103. while True:
  104.  
  105. labels,distance = pairwise_distances_argmin_min(X,centers,metric='minkowski')
  106. distances.append(distance)
  107.  
  108. new_centers = np.array([X[labels == i].mean(0)
  109. for i in range(n_clusters)])
  110.  
  111.  
  112. if np.all(centers == new_centers) or max_iterator > max_it:
  113. break
  114. centers = new_centers
  115. max_iterator += 1
  116.  
  117. return centers, labels, distances
  118.  
  119.  
  120. def find_clustersGENETIC(X, n_clusters, max_it, array):
  121.  
  122. centers = array
  123.  
  124. max_iterator = 0
  125. distances = []
  126. while True:
  127.  
  128. labels,distance = pairwise_distances_argmin_min(X,centers,metric='minkowski')
  129. distances.append(distance)
  130.  
  131. new_centers = np.array([X[labels == i].mean(0)
  132. for i in range(n_clusters)])
  133.  
  134.  
  135. if np.all(centers == new_centers) or max_iterator > max_it:
  136. break
  137. centers = new_centers
  138. max_iterator += 1
  139.  
  140. return centers, labels, distances
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement