from KNN import KNN
import sys
import pathlib
sys.path.append(str(pathlib.Path.absolute)+ '../../')
from src.utils.slidingWindows import find_length_rank
from src.run_model_wrapper import main

#Hyperparameter tested for multivariats
#optimal hyperparameters from autors: {'n_neighbors': 50, 'method': 'mean'},  
params = {
        'n_neighbors': [10, 20, 30, 40, 50],
        'method': ['largest', 'mean', 'median']
    }

def run_Sub_KNN(data, n_neighbors=10, method='largest', periodicity=1, n_jobs=1):
    slidingWindow = find_length_rank(data, rank=periodicity)
    clf = KNN(slidingWindow=slidingWindow, n_neighbors=n_neighbors,method=method, n_jobs=n_jobs)
    clf.fit(data)
    score = clf.decision_scores_
    return score.ravel()

model = 'Sub_KNN'
output_path = '../../../docs/evaluation/'

#writes results in .csv
main(run_Sub_KNN,params,model,data_folders = '../../../data/', model_type='unsupervised',output_dir = output_path)

#pip3 install -r requirements.txt
# python src/models/desi/call_poly.py