diff --git a/src/methods/mean_shift/mean_shift.pl b/src/methods/mean_shift/mean_shift.pl index b1c70371dfe874af39b16a110b2c945e44c18486..2ce39bee7afdd262a04cac203cf7dfb72e0aad2d 100644 --- a/src/methods/mean_shift/mean_shift.pl +++ b/src/methods/mean_shift/mean_shift.pl @@ -32,6 +32,7 @@ %% Perform mean shift clustering on the data, returning a list of cluster assignments and centroids. %% meanShift(Radius, MaxIterations, DataList, DataRows, AssignmentsList, CentroidsList, ZCols, ForceConvergence, UseSeeds) :- + MaxIterations >= 0, convert_list_to_float_array(DataList, DataRows, array(Xsize, Xrownum, X)), meanShiftI(Radius, MaxIterations, X, Xsize, Xrownum, Y, Ysize, Z, ZCols, ZRows, ForceConvergence, UseSeeds), convert_float_array_to_list(Y, Ysize, AssignmentsList), diff --git a/src/methods/mean_shift/mean_shift_test.pl b/src/methods/mean_shift/mean_shift_test.pl index 43d02d1830d6fe5eef037c9d929743a01446c892..41a6a05fa5ce9c88b58f99975e1a3fae0d936e3a 100644 --- a/src/methods/mean_shift/mean_shift_test.pl +++ b/src/methods/mean_shift/mean_shift_test.pl @@ -6,49 +6,41 @@ :- use_module(mean_shift). :- use_module('../../helper_files/helper.pl'). -:- begin_tests(lists). -test(meanShift) :- - convert_list_to_float_array([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5, 1.4, 3.0, 2.1, 0.1],4, array(Xsize, Xrownum, X)), - meanShift(1, 1000, X, Xsize, Xrownum, Assign, Assignsize, Centroids, Centroidscolnum, Centroidsrownum, 0, 0), - print(Assignsize), - convert_float_array_to_list(Assign, Assignsize, ResultsAssign), - print(ResultsAssign), - print(Centroidscolnum), - convert_float_array_to_2d_list(Centroids, Centroidscolnum, Centroidsrownum, Results), - print(Results). - -:- end_tests(lists). %% -%% TESTING predicate predicate/10 +%% TESTING predicate meanShift/10 %% -:- begin_tests(predicate). +:- begin_tests(meanShift). %% Failure Tests -test(testDescription, [error(domain_error('expectation' , culprit), _)]) :- - reset_Model_No_Train(perceptron), - train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, culprit, 50, 0.0001, _). +test(mean_shift_Negative_MaxIterations, fail) :- + meanShift(1, -1000, [5.1,3.5,1.4,4.9, 3.0,1.4,4.7,3.2, 1.3,4.6,3.1,1.5, 1.4,3.0,2.1,0.1],4, _, _, _, 0, 0). -test(testDescription2, [error(_,system_error('The values of the Label have to start at 0 and be >= 0 and < the given numClass!'))]) :- - reset_Model_No_Train(perceptron), - train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,1,0,2], 2, perceptron, 50, 0.0001, _). +test(mean_shift_Too_Few_Data_Points, fail) :- + meanShift(1, 1000, [5.1,3.5,1.4,4.9],4, _, _, _, 0, 0). %% Successful Tests -test(testDescription3, [true(Error =:= 1)]) :- - reset_Model_No_Train(perceptron), - train([5.1,3.5,1.4,4.9,3.0,1.4,4.7,3.2,1.3,4.6,3.1,1.5], 3, [0,0,0,0], 2, perceptron, 50, 0.0001, Error). +test(mean_shift_Normal_Use) :- + meanShift(1, 1000, [5.1,3.5,1.4,4.9, 3.0,1.4,4.7,3.2, 1.3,4.6,3.1,1.5, 1.4,3.0,2.1,0.1],4, AssignList, CentroidsList, _, 0, 0), + print('\nAssignments: '), + print(AssignList), + print('\nCentroids: '), + print(CentroidsList). -test(testDescription4, [true(Error =:= 0.9797958971132711)]) :- - reset_Model_No_Train(perceptron), +test(mean_shift_CSV_Input) :- open('src/data_csv/iris2.csv', read, File), take_csv_row(File, skipFirstRow,10, Data), - train(Data, 4, [0,1,0,1,1,0,1,1,1,0], 2, perceptron, 50, 0.0001, Error). + meanShift(0.5, 500, Data,4, AssignList, CentroidsList, _, 1, 1), + print('\nAssignments: '), + print(AssignList), + print('\nCentroids: '), + print(CentroidsList). -:- end_tests(predicate). +:- end_tests(meanShift). run_mean_shift_tests :- run_tests.