377 lines
14 KiB
Python
377 lines
14 KiB
Python
from NewtonUTSVM import NewtonUTSVM
|
|
from S3VM_unconstrained import S3VM_Unconstrained
|
|
from S3VM_constrained import S3VM_Constrained
|
|
import time
|
|
from utils import load_dataset, calculate_accuracy, move_labels_to_last_column
|
|
import pandas as pd
|
|
from MC_NDCC import MC_NDCC
|
|
import random
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
# print('---------- diabetes Dataset ----------')
|
|
# csv_file = "data/diabetes.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
# start = time.time()
|
|
# nutsvm = NewtonUTSVM(X, y, U, C=[0.1, 0.1, 0.1, 0.1, 0.3, 0.3] , eps=1e-4)
|
|
# nutsvm.fit()
|
|
# nutsvm.predict(x_test=x_test)
|
|
# pt = nutsvm.get_preds()
|
|
# nutsvm_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("Newton Accuracy: ", nutsvm_acc)
|
|
# print("Newton Time: ", round(end - start, 2), "sec")
|
|
|
|
# # --------------------------------------------------
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Unconstrained(C=(1 - lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Unconstrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Unconstrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# print('--------------------------------------')
|
|
|
|
# print('---------- ionosphere Dataset ----------')
|
|
# csv_file = "data/ionosphere.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
# start = time.time()
|
|
# nutsvm = NewtonUTSVM(X, y, U, C=[0.1, 0.1, 0.1, 0.1, 0.3, 0.3] , eps=1e-4)
|
|
# nutsvm.fit()
|
|
# nutsvm.predict(x_test=x_test)
|
|
# pt = nutsvm.get_preds()
|
|
# nutsvm_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("Newton Accuracy: ", nutsvm_acc)
|
|
# print("Newton Time: ", round(end - start, 2), "sec")
|
|
|
|
# # --------------------------------------------------
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Unconstrained(C=(1 - lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Unconstrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Unconstrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# print('----------------------------------')
|
|
|
|
# print('---------- Musk Dataset ----------')
|
|
# csv_file = "data/musk.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
# start = time.time()
|
|
# nutsvm = NewtonUTSVM(X, y, U, C=[0.1, 0.1, 0.1, 0.1, 0.3, 0.3] , eps=1e-4)
|
|
# nutsvm.fit()
|
|
# nutsvm.predict(x_test=x_test)
|
|
# pt = nutsvm.get_preds()
|
|
# nutsvm_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("Newton Accuracy: ", nutsvm_acc)
|
|
# print("Newton Time: ", round(end - start, 2), "sec")
|
|
|
|
# # --------------------------------------------------
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Unconstrained(C=(1 - lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Unconstrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Unconstrained Time: ", round(end - start, 2), "sec")
|
|
|
|
|
|
|
|
# print('------------------------------------------------------------------')
|
|
# print('---------- Breast Cancer Wisconsin (Prognostic) Dataset ----------')
|
|
# csv_file = "data/wpbc.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
|
|
# start = time.time()
|
|
# nutsvm = NewtonUTSVM(X, y, U, C=[0.1, 0.1, 0.1, 0.1, 0.3, 0.3] , eps=1e-4)
|
|
# nutsvm.fit()
|
|
# nutsvm.predict(x_test=x_test)
|
|
# pt = nutsvm.get_preds()
|
|
# nutsvm_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("Newton Accuracy: ", nutsvm_acc)
|
|
# print("Newton Time: ", round(end - start, 2), "sec")
|
|
|
|
# # --------------------------------------------------
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Unconstrained(C=(1 - lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Unconstrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Unconstrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# print('-------------------------------------------')
|
|
# print('---------- Sonar Dataset ----------')
|
|
# csv_file = "data/sonar.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
|
|
# start = time.time()
|
|
# nutsvm = NewtonUTSVM(X, y, U, C=[1, 1, 0.1, 0.1, 2, 2] , eps=1e-4)
|
|
# nutsvm.fit()
|
|
# nutsvm.predict(x_test=x_test)
|
|
# pt = nutsvm.get_preds()
|
|
# nutsvm_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("Newton Accuracy: ", nutsvm_acc)
|
|
# print("Newton Time: ", round(end - start, 2), "sec")
|
|
|
|
# # --------------------------------------------------
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Unconstrained(C=(1 - lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Unconstrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Unconstrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# print('------------------------------------')
|
|
# print('---------- Gender Dataset ----------')
|
|
# csv_file = "data/gender.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
|
|
# start = time.time()
|
|
# nutsvm = NewtonUTSVM(X, y, U, C=[1.0, 1.0, 0.1, 0.1, 0.05, 0.0] , eps=1e-4)
|
|
# nutsvm.fit()
|
|
# nutsvm.predict(x_test=x_test)
|
|
# pt = nutsvm.get_preds()
|
|
# nutsvm_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("Newton Accuracy: ", nutsvm_acc)
|
|
# print("Newton Time: ", round(end - start, 2), "sec")
|
|
|
|
# # --------------------------------------------------
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Unconstrained(C=(1 - lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Unconstrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Unconstrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# # Initialize an instance
|
|
# ndcc = MC_NDCC()
|
|
# # Get the dataset as a Numpy matrix
|
|
# ds_mat = ndcc.get_matrix()
|
|
# # Save the dataset as a csv file
|
|
# ndcc.get_csv('data/1000_100_ndcc.csv')
|
|
|
|
# print('------------------------------------')
|
|
# print('---------- NDCC Dataset ----------')
|
|
# csv_file = "data/100_10_ndcc.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
|
|
# start = time.time()
|
|
# nutsvm = NewtonUTSVM(X, y, U, C=[2, 0.1, 1, 1, 0.1, 0.1] , eps=1e-4)
|
|
# nutsvm.fit()
|
|
# nutsvm.predict(x_test=x_test)
|
|
# pt = nutsvm.get_preds()
|
|
# nutsvm_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("Newton Accuracy: ", nutsvm_acc)
|
|
# print("Newton Time: ", round(end - start, 2), "sec")
|
|
|
|
# # --------------------------------------------------
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
# s3vm_con.fit(X, y, U)
|
|
# pt = s3vm_con.predict(x_test)
|
|
# s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
# print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
# start = time.time()
|
|
# lmbda = 0.001
|
|
# l, k = X.shape[0], U.shape[0]
|
|
# s3vm_uncon = S3VM_Unconstrained(C=(1-lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
# s3vm_uncon.fit(X, y, U)
|
|
# pt = s3vm_uncon.predict(x_test)
|
|
# s3vm_uncon_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
# end = time.time()
|
|
# print("S3VM Unconstrained Accuracy: ", s3vm_uncon_acc)
|
|
# print("S3VM Unconstrained Time: ", round(end - start, 2), "sec")
|
|
|
|
|
|
# print('------------------------------------')
|
|
# print('---------- NDCC Dataset ----------')
|
|
# csv_file = "data/100_10_ndcc.csv"
|
|
# X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
# y = y.reshape(y.shape[0], 1)
|
|
|
|
|
|
|
|
print('------------------------------------')
|
|
print('---------- NDCC Dataset ----------')
|
|
csv_file = "data/100_100_ndcc.csv"
|
|
X, y, x_test, y_test, U = load_dataset(csv_file)
|
|
y = y.reshape(y.shape[0], 1)
|
|
|
|
|
|
param_space = [0.01, 0.1, 1, 2, 4, 8]
|
|
|
|
best_acc = 0
|
|
best_time = 0
|
|
best_params = None
|
|
|
|
for i in range(1000):
|
|
C = [random.choice(param_space) for _ in range(6)]
|
|
|
|
start = time.time()
|
|
nutsvm = NewtonUTSVM(X, y, U, C=C, eps=1e-4)
|
|
nutsvm.fit()
|
|
nutsvm.predict(x_test=x_test)
|
|
pt = nutsvm.get_preds()
|
|
acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
end = time.time()
|
|
|
|
elapsed_time = round(end - start, 2)
|
|
|
|
if acc > best_acc:
|
|
best_acc = acc
|
|
best_time = elapsed_time
|
|
best_params = C
|
|
|
|
if (i + 1) % 100 == 0:
|
|
print(f"Completed {i + 1}/1000")
|
|
|
|
print("Best Accuracy:", best_acc)
|
|
print("Best Time:", best_time, "sec")
|
|
print("Best C Parameters:", best_params)
|
|
# --------------------------------------------------
|
|
|
|
start = time.time()
|
|
lmbda = 0.001
|
|
l, k = X.shape[0], U.shape[0]
|
|
s3vm_con = S3VM_Constrained(C=(1 - lmbda)/(lmbda * (l + k)), M=1e5, eps=1e-4)
|
|
s3vm_con.fit(X, y, U)
|
|
pt = s3vm_con.predict(x_test)
|
|
s3vm_con_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
end = time.time()
|
|
print("S3VM Constrained Accuracy: ", s3vm_con_acc)
|
|
print("S3VM Constrained Time: ", round(end - start, 2), "sec")
|
|
|
|
start = time.time()
|
|
lmbda = 0.001
|
|
l, k = X.shape[0], U.shape[0]
|
|
s3vm_uncon = S3VM_Unconstrained(C=(1-lmbda)/(lmbda * (l + k)), eps=1e-4)
|
|
s3vm_uncon.fit(X, y, U)
|
|
pt = s3vm_uncon.predict(x_test)
|
|
s3vm_uncon_acc = calculate_accuracy(true_labels=y_test, predicted_labels=pt)
|
|
end = time.time()
|
|
print("S3VM Unconstrained Accuracy: ", s3vm_uncon_acc)
|
|
print("S3VM Unconstrained Time: ", round(end - start, 2), "sec") |