Skip to content

Instantly share code, notes, and snippets.

@MBaltz
Created December 21, 2021 00:56
Show Gist options
  • Save MBaltz/a30df09b6f09e008d52afc65b59a1fb9 to your computer and use it in GitHub Desktop.
Save MBaltz/a30df09b6f09e008d52afc65b59a1fb9 to your computer and use it in GitHub Desktop.
from time import time
import numpy as np
from base_dados.BalancedScale import get_dataset
from sklearn import svm
from sklearn.model_selection import RepeatedKFold
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score
dir_database = "./base_dados/balance-scale.data"
# seeds: 24, 47, 33, 29, 47, 48, 49, 6, 19
atrib_train, labels_train, atrib_test, labels_test, labels_names = get_dataset(
dir_database, proporcao_train_dataset=0.8, printar=False, seed=49)
feature_names = ["Left-Weight", "Left-Distance", "Right-Weight", "Right-Distance"]
num_splits = 10
num_repeats = 10
rkf = RepeatedKFold(n_splits=num_splits, n_repeats=num_repeats, random_state=49)
kernels = ["linear", "poly", "rbf", "sigmoid"] # "precomputed"
for k in kernels:
t1 = time()
media_kernel = 0.0
for train_index, vali_index in rkf.split(atrib_train):
X_train, X_vali = atrib_train[train_index], atrib_train[vali_index]
y_train, y_vali = labels_train[train_index], labels_train[vali_index]
clf = svm.SVC(kernel=k)
clf.fit(X_train, y_train)
predicao = clf.predict(X_vali)
media_kernel += (np.sum(y_vali == predicao)/len(y_vali))*100
print(f"Acurácia [VALI] do kernel {k}:", end=" \t")
print(f"{media_kernel/(num_splits*num_repeats):.3f}%")
print(f"Acurácia [TESTE] do kernel {k}:", end=" \t")
predicao = clf.predict(atrib_test)
print(f"{(np.sum(labels_test == predicao)/len(labels_test))*100:.3f}%")
print(confusion_matrix(predicao, labels_test))
print(f"Tempo de Execução: {time()-t1:.5f}s")
preci = precision_score(predicao, labels_test, average=None)*100
print(f"Precisão: {list(zip(preci, [x[1] for x in labels_names]))}")
print(f"----")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment