Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- from sklearn import preprocessing
- from sklearn.neighbors import KNeighborsClassifier
- from scipy import stats
- from sklearn.naive_bayes import GaussianNB
- from sklearn.tree import DecisionTreeClassifier
- from sklearn.svm import SVC
- import statistics
- from sklearn.metrics import pairwise_distances_argmin_min
- import numpy as np
- from random import randint
- # função que calcula a quantidade de elementos por classe
- # a partir do data frame original, o nome da classe e a classificação
- def quantidade_por_classe (dados, nome_classe, classe):
- cont = 0
- for x in range(len(dados.index)):
- if (dados[nome_classe].iloc[x] == classe):
- cont += 1
- return cont
- # função de inicialização do algoritmo KNN , recebe o k
- # e a distância que vai ser usada como referência
- def inicializacao_KNN (k):
- knn = KNeighborsClassifier(n_neighbors=k, metric='euclidean')
- return knn
- # função de normalização dos dados usando o modelo de
- # normalização por reescala
- def normalizar(dados):
- x = dados.values
- min_max_scaler = preprocessing.MinMaxScaler()
- x_scaled = min_max_scaler.fit_transform(x)
- dados_norm = pd.DataFrame(x_scaled)
- return dados_norm
- # função que calcula os valores de média, moda , mediana e desvio padrão
- # para os vetores de acerto de um algoritmo, recebe como parâmetro o vetor
- # de acerto e o nome do algoritmo
- def tendencia_central (vetor_acerto, algoritmo):
- print('________________________________________________\n')
- print(algoritmo)
- print('media = ', np.mean(vetor_acerto))
- print('mediana = ', np.median(vetor_acerto))
- print('moda = ', stats.mode(vetor_acerto, axis=None))
- print('desvio padrao = ', statistics.pstdev(vetor_acerto))
- print('________________________________________________\n')
- # função que cria amostras estratificadas a partir
- # dos Data frame, o tamanho desejado para a amostra
- # e a classe dos dados
- def amostra_estrat(dados, tamanho_amostra, classe):
- classes = dados[classe].unique()
- qtde_por_classe = round(tamanho_amostra / len(classes))
- amostras_por_classe = []
- for c in classes:
- indices_c = dados[classe] == c
- obs_c = dados[indices_c]
- amostra_c = obs_c.sample(qtde_por_classe)
- amostras_por_classe.append(amostra_c)
- amostra_estratificada = pd.concat(amostras_por_classe)
- return amostra_estratificada
- # função que realiza o treinamento dos algoritmos usados na base de dados
- def treinaralgoritmos(noclass_train, class_train , tree, knnp1 , knnp2 , knnp3, knn1 , knn2 , knn3, naive, svmlinear , svmrbf):
- knn1.fit(noclass_train, class_train)
- knn2.fit(noclass_train, class_train)
- knn3.fit(noclass_train, class_train)
- naive.fit(noclass_train, class_train)
- tree.fit(noclass_train, class_train)
- knnp1.fit(noclass_train, class_train)
- knnp2.fit(noclass_train, class_train)
- knnp3.fit(noclass_train, class_train)
- svmlinear.fit(noclass_train, class_train)
- svmrbf.fit(noclass_train, class_train)
- # função de inicialização do algoritmo KNN Ponderado
- # recebe como parâmentro o valor do k
- def inicializando_KNNW (k):
- knnp = KNeighborsClassifier(n_neighbors=k, weights='distance', metric='euclidean')
- return knnp
- def find_clusters(X, n_clusters, rng, max_it):
- i = rng.permutation(X.shape[0])[:n_clusters]
- centers = X[i]
- max_iterator = 0
- distances = []
- while True:
- labels,distance = pairwise_distances_argmin_min(X,centers,metric='minkowski')
- distances.append(distance)
- new_centers = np.array([X[labels == i].mean(0)
- for i in range(n_clusters)])
- if np.all(centers == new_centers) or max_iterator > max_it:
- break
- centers = new_centers
- max_iterator += 1
- return centers, labels, distances
- def find_clustersGENETIC(X, n_clusters, max_it, array):
- centers = array
- max_iterator = 0
- distances = []
- while True:
- labels,distance = pairwise_distances_argmin_min(X,centers,metric='minkowski')
- distances.append(distance)
- new_centers = np.array([X[labels == i].mean(0)
- for i in range(n_clusters)])
- if np.all(centers == new_centers) or max_iterator > max_it:
- break
- centers = new_centers
- max_iterator += 1
- return centers, labels, distances
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement