Files
Resume/models/models.py
2025-11-08 19:15:39 +01:00

94 lines
2.3 KiB
Python

from models.S3VM_constrained import S3VM_Constrained
from models.S3VM_unconstrained import S3VM_Unconstrained
from models.NewtonUTSVM import NewtonUTSVM
from models.TSVM import TSVM
from models.LSTSVM import LSTSVM
from models.utils import load_dataset
MODELS = [
"Semi-Supervised_SVM",
"Semi-Supervised_SVM_Unconstrained",
"Newton_Universum_Twin_SVM",
"Least-Square_Twin_SVM",
"Twin_SVM"
]
def runner(model, dataset, params):
csv_file = f"datasets/{dataset}.csv"
x_train, y_train, x_test, y_test, U = load_dataset(csv_file)
accuracy = 0
print('model: ', model)
match model:
case "Semi-Supervised_SVM":
C = params['C'] or 1.0
max_iter = params.get('max_iter') or 100
modelObj = S3VM_Constrained(C, max_iter)
modelObj.fit(x_train, y_train, U)
modelObj.predict(x_test)
accuracy = modelObj.score(y_test)
params = {"C": C, "max_iter": max_iter}
case "Semi-Supervised_SVM_Unconstrained":
C = params['C'] or 1.0
modelObj = S3VM_Unconstrained(C)
modelObj.fit(x_train, y_train, U)
modelObj.predict(x_test)
accuracy = modelObj.score(y_test)
params = {"C": C}
case "Newton_Universum_Twin_SVM":
C = params['C'] or [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
modelObj = NewtonUTSVM(x_train, y_train, U, C)
modelObj.fit()
modelObj.predict(x_test)
accuracy = modelObj.score(y_test)
params = {"C": C}
case "Least-Square_Twin_SVM":
C = params['C'] or [1.0, 1.0]
modelObj = LSTSVM(x_train, y_train, C[0], C[1])
modelObj.fit()
modelObj.predict(x_test, y_test)
accuracy = modelObj.score(y_test)
params = {"C": C}
case "Twin_SVM":
C = params['C'] or [1.0, 1.0]
modelObj = TSVM(x_train, y_train, C[0], C[1])
modelObj.fit()
modelObj.predict(x_test)
accuracy = modelObj.score(y_test)
params = {"C": C}
accuracy = round(accuracy, 4)
return {
"model":model,
"dataset":dataset,
"params": params,
"accuracy": accuracy
}