├── Copy_of_synth_data.mat ├── Synthetic_Data_Generation_Code ├── TL │ ├── 2_Dimensional_Manifold_Task.m │ ├── Gaussian_Exponential.asv │ ├── Gaussian_Exponential.m │ ├── Original_Files │ │ ├── TestData_Case_1 │ │ ├── TestData_Case_2 │ │ ├── TestData_Case_3 │ │ ├── TestData_Case_4 │ │ ├── TestData_Case_5 │ │ ├── TestData_Case_6 │ │ ├── TestData_Case_7 │ │ ├── TrainingDataFor_Case_1 │ │ ├── TrainingDataFor_Case_2 │ │ ├── TrainingDataFor_Case_3 │ │ ├── TrainingDataFor_Case_4 │ │ ├── TrainingDataFor_Case_5 │ │ ├── TrainingDataFor_Case_6 │ │ └── TrainingDataFor_Case_7 │ ├── ToyData.m │ ├── ToyData.mat │ ├── ToyData_New_Version.m │ ├── ToyData_New_Version_cell.m │ ├── calculateEllipse.m │ ├── calculateRotationAngles.m │ ├── getLabelsAndClassBasedData.m │ ├── getTaskData.m │ ├── rotateCellTensor.m │ └── rotateMatrix.m └── TL_Code │ ├── 2_Dimensional_Manifold_Task.m │ ├── Final_Synthetic_Data_Generation_From_Urun.m │ ├── Gaussian_Exponential.m │ ├── ToyData.m │ ├── ToyData_New_Version.m │ ├── ToyData_New_Version_cell.m │ ├── ToyData_New_Version_cell_single_Task_svg.m │ ├── ToyData_New_Version_cell_svg.m │ ├── calculateEllipse.m │ ├── calculateRotationAngles.m │ ├── getLabelsAndClassBasedData.m │ ├── getTaskData.m │ ├── rotateCellTensor.m │ └── rotateMatrix.m ├── cross_validation_pooling_transfer.m ├── demo_transfer_pooling.m ├── demo_transfer_pooling_Flow_Cyto.m ├── demo_transfer_pooling_satellite.m ├── pooled_CV.m ├── pooled_test_accuracy.m ├── pooled_transfer_comparison.m ├── readme.txt ├── sataleiite_load.m ├── synth_data.mat ├── test_comparison_final.m ├── test_sub_eval_cv_liblinear_fast.m ├── test_sub_eval_liblinear_direct_sum_fulldata.m ├── test_sub_eval_liblinear_fulldata.m ├── transfer_CV.m ├── transfer_test_accuracy.m ├── transfer_test_accuracy_CV.m ├── util_mrg_datasets.m └── util_mrg_datasets_CV.m /Copy_of_synth_data.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aniketde/DomainGeneralizationMarginal/dd5a7337217d8fcd626e640428df0f4a34657846/Copy_of_synth_data.mat -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/2_Dimensional_Manifold_Task.m: -------------------------------------------------------------------------------- 1 | 2 | phi = pi*0.2; 3 | a = 4; 4 | b = 2; 5 | X_c = 0; 6 | Y_c = 0; 7 | counter = 1; 8 | 9 | t = 0:.01:2*pi; 10 | X = X_c + a*cos(t)*cos(phi) - b*sin(t)*sin(phi); 11 | Y = Y_c + a*cos(t)*sin(phi) - b*sin(t)*cos(phi); 12 | plot(X,Y) -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Gaussian_Exponential.asv: -------------------------------------------------------------------------------- 1 | for u = 0:0.01:1 2 | y = exp(u) + 3 | end 4 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Gaussian_Exponential.m: -------------------------------------------------------------------------------- 1 | 2 | counter = 1; 3 | for u = 0:0.01:1 4 | y(counter) = 1 / (1 + exp(-u)); 5 | counter = counter + 1; 6 | end 7 | 8 | 9 | plot(y); -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TestData_Case_1: -------------------------------------------------------------------------------- 1 | 8.576758,-7.969293 2 | -31.107853,32.359945 3 | -23.912868,24.714400 4 | 19.077391,-17.675408 5 | -4.882160,6.770334 6 | -8.268649,13.352371 7 | 12.209381,-8.720542 8 | 2.131145,-0.299619 9 | 6.387467,-1.788313 10 | -12.457672,17.118062 11 | 1.193344,0.074874 12 | -10.431973,13.474284 13 | -19.262800,20.443478 14 | 18.185684,-15.063388 15 | 27.198763,-24.483102 16 | -5.557010,10.350004 17 | -2.547676,6.273476 18 | -32.875802,34.288732 19 | -3.448079,6.942406 20 | 2.384324,3.069737 21 | -24.837098,28.511905 22 | 6.025834,-4.601152 23 | -10.810926,13.698992 24 | 21.539842,-19.633860 25 | 0.608703,-0.232410 26 | 6.059584,-4.217668 27 | 28.878446,-28.301664 28 | -9.874074,12.007961 29 | 6.312899,-3.241545 30 | -9.067425,12.888818 31 | 21.743882,-19.789471 32 | -9.140115,10.699063 33 | -23.692770,25.992775 34 | 5.398355,1.228863 35 | -8.580008,10.872100 36 | -29.723517,31.290080 37 | -24.982379,25.621656 38 | -1.950494,2.247509 39 | 0.716627,-0.451317 40 | 8.490236,-6.700297 41 | 1.719161,0.048361 42 | -3.511632,9.517577 43 | -1.274881,3.895938 44 | 19.074137,-18.526937 45 | 26.508935,-22.552966 46 | 28.326023,-28.219425 47 | -6.504848,7.816213 48 | 17.209676,-10.748843 49 | 7.139077,-3.778876 50 | 27.255677,-26.303571 51 | -3.921173,4.562308 52 | -10.463741,12.923029 53 | -4.596623,4.750697 54 | -28.923693,30.823580 55 | 27.218569,-25.576216 56 | 0.160075,0.703202 57 | 15.650395,-15.552337 58 | -18.104383,18.520374 59 | -15.047908,16.058620 60 | -6.612052,8.598654 61 | -35.064449,34.844750 62 | -4.045831,2.995584 63 | 28.755442,-30.352511 64 | -9.241402,8.065244 65 | -14.664784,12.502270 66 | -8.155930,8.084454 67 | -21.994622,21.719596 68 | -16.796168,16.293372 69 | -33.081789,31.801767 70 | -21.403173,17.467001 71 | 3.323464,-8.431261 72 | 0.792217,-2.318414 73 | -12.766483,11.979590 74 | 0.114079,-0.173186 75 | -11.858821,7.701946 76 | 1.203062,-1.826402 77 | 1.597903,-2.603193 78 | -9.926782,5.015020 79 | -9.353187,8.192729 80 | -13.682361,11.278632 81 | 13.530829,-18.351357 82 | 8.746191,-13.017570 83 | 3.004409,-4.186113 84 | 12.725177,-16.174152 85 | -16.134780,15.772372 86 | -4.946861,1.020001 87 | 11.371520,-17.772514 88 | 0.442558,-1.159099 89 | -31.487775,31.448230 90 | -30.134528,29.870442 91 | 4.450262,-6.623637 92 | 8.884266,-11.593935 93 | -23.953698,18.667786 94 | 6.809779,-7.277302 95 | 1.294629,-3.788715 96 | 0.232564,-0.244168 97 | 3.114536,-3.692197 98 | 1.951568,-2.658160 99 | 9.694359,-12.360311 100 | -0.311030,0.253173 101 | 0.418567,-0.506541 102 | -0.256510,0.211960 103 | 2.732854,-5.601588 104 | 2.393007,-6.267491 105 | -6.978211,6.437279 106 | 9.870008,-12.290050 107 | 0.126623,-0.159490 108 | -2.505399,0.087320 109 | -11.719957,7.320067 110 | 3.714468,-4.217869 111 | 0.222979,-0.584001 112 | -15.794161,15.714953 113 | 7.333494,-11.210965 114 | 1.024196,-5.523412 115 | -11.417252,10.845638 116 | 10.334230,-12.536685 117 | 31.971419,-33.656457 118 | -3.928094,3.908395 119 | -6.377169,5.032714 120 | -7.524916,6.076511 121 | 2.293304,-6.711326 122 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TestData_Case_2: -------------------------------------------------------------------------------- 1 | 6.221907,-9.917574 2 | -21.672508,39.308611 3 | -16.701500,30.061383 4 | 13.852612,-22.010725 5 | -2.963513,7.803236 6 | -4.531053,15.037484 7 | 9.536314,-11.583417 8 | 1.980981,-0.840991 9 | 5.706970,-3.380575 10 | -7.602706,19.759060 11 | 1.172060,-0.236537 12 | -6.589111,15.715152 13 | -13.315274,24.732462 14 | 13.667330,-19.256917 15 | 19.935294,-30.688419 16 | -2.688881,11.435596 17 | -0.837171,6.719099 18 | -22.881009,41.629256 19 | -1.533761,7.598278 20 | 3.097586,2.348030 21 | -16.611371,33.968700 22 | 4.629643,-6.003972 23 | -6.896993,16.030284 24 | 15.724272,-24.539774 25 | 0.527809,-0.382035 26 | 4.761496,-5.642290 27 | 20.569427,-34.811600 28 | -6.429734,14.154398 29 | 5.258819,-4.764990 30 | -5.422588,14.796465 31 | 15.881085,-24.742892 32 | -6.059552,12.700137 33 | -16.158033,31.239233 34 | 5.532463,-0.210207 35 | -5.473745,12.722311 36 | -20.612244,37.916909 37 | -17.499752,31.214535 38 | -1.302334,2.675752 39 | 0.575399,-0.621415 40 | 6.466774,-8.669425 41 | 1.673099,-0.398239 42 | -0.928646,10.102151 43 | -0.223098,4.093151 44 | 13.629077,-22.832396 45 | 19.768528,-28.645509 46 | 20.057113,-34.589186 47 | -4.260216,9.233460 48 | 13.841265,-14.836777 49 | 5.917774,-5.497843 50 | 19.519098,-32.461586 51 | -2.606750,5.421725 52 | -6.762471,15.190903 53 | -3.210426,5.778514 54 | -19.960412,37.259294 55 | 19.671507,-31.749411 56 | 0.336622,0.637811 57 | 11.091880,-19.073024 58 | -12.694065,22.575067 59 | -10.378886,19.406121 60 | -4.161257,10.016987 61 | -24.851172,42.732792 62 | -3.132658,3.940650 63 | 19.919816,-36.760730 64 | -6.839070,10.182278 65 | -10.929268,15.871791 66 | -5.785612,9.919893 67 | -15.623729,26.672146 68 | -12.006817,20.085357 69 | -23.723652,39.280345 70 | -16.153086,22.411376 71 | 1.028049,-9.004149 72 | 0.165173,-2.444457 73 | -9.230930,14.875604 74 | 0.065368,-0.196811 75 | -9.461331,10.508798 76 | 0.689361,-2.075544 77 | 0.869700,-2.928059 78 | -8.290552,7.413378 79 | -6.914051,10.334351 80 | -10.297021,14.435578 81 | 8.320097,-21.228086 82 | 5.078977,-14.837688 83 | 1.818591,-4.821073 84 | 8.105398,-18.916549 85 | -11.502810,19.410930 86 | -4.514305,2.265587 87 | 6.384179,-20.110097 88 | 0.127482,-1.234146 89 | -22.275454,38.526293 90 | -21.376679,36.652021 91 | 2.584300,-7.549755 92 | 5.580811,-13.498298 93 | -18.305918,24.231370 94 | 4.694237,-8.791835 95 | 0.269923,-3.994693 96 | 0.161444,-0.296040 97 | 2.052800,-4.372490 98 | 1.197088,-3.072688 99 | 6.164948,-14.448228 100 | -0.234905,0.325047 101 | 0.273202,-0.597614 102 | -0.192910,0.271128 103 | 1.189937,-6.118034 104 | 0.689321,-6.673287 105 | -5.074344,8.024028 106 | 6.352797,-14.425822 107 | 0.081029,-0.186828 108 | -2.397430,0.732789 109 | -9.426036,10.103990 110 | 2.496236,-5.035524 111 | 0.064231,-0.621813 112 | -11.188658,19.267308 113 | 4.182000,-12.727009 114 | -0.440267,-5.600288 115 | -8.221161,13.431084 116 | 6.737367,-14.784204 117 | 22.171088,-40.784453 118 | -2.782681,4.791885 119 | -4.857310,6.511761 120 | -5.695794,7.817050 121 | 0.478142,-7.076194 122 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TestData_Case_3: -------------------------------------------------------------------------------- 1 | 3.443044,-11.189989 2 | -10.760218,43.578461 3 | -8.351951,33.359733 4 | 7.683801,-24.846047 5 | -0.842908,8.304361 6 | -0.484674,15.697817 7 | 6.213363,-13.656902 8 | 1.695816,-1.325050 9 | 4.637552,-4.742458 10 | -2.229629,21.053512 11 | 1.070903,-0.531829 12 | -2.297211,16.885059 13 | -6.460335,27.335971 14 | 8.217570,-22.138119 15 | 11.313268,-34.802370 16 | 0.362490,11.741871 17 | 0.930386,6.706827 18 | -11.326914,46.132814 19 | 0.485079,7.736339 20 | 3.599754,1.466309 21 | -7.253605,37.110583 22 | 2.917949,-6.997632 23 | -2.513041,17.269139 24 | 8.837120,-27.773343 25 | 0.410947,-0.505625 26 | 3.138920,-6.682399 27 | 10.858635,-38.949183 28 | -2.547218,15.336236 29 | 3.846359,-5.963710 30 | -1.408211,15.695756 31 | 8.936019,-28.010125 32 | -2.566040,13.835718 33 | -7.522153,34.356789 34 | 5.289544,-1.634951 35 | -1.994455,13.705519 36 | -10.096281,41.959763 37 | -8.824546,34.680194 38 | -0.565423,2.921646 39 | 0.394958,-0.749165 40 | 4.002612,-10.047745 41 | 1.513018,-0.817699 42 | 1.717626,9.998280 43 | 0.843890,4.011422 44 | 7.255219,-25.581866 45 | 11.680928,-32.785909 46 | 10.421343,-38.601751 47 | -1.725258,10.021463 48 | 9.529595,-17.913610 49 | 4.293184,-6.842142 50 | 10.452324,-36.407399 51 | -1.114681,5.911661 52 | -2.600351,16.423542 53 | -1.605444,6.412536 54 | -9.636863,41.155850 55 | 10.783864,-35.758937 56 | 0.490230,0.528954 57 | 5.777472,-21.293917 58 | -6.418668,25.091306 59 | -5.002560,21.431127 60 | -1.426878,10.752679 61 | -12.944328,47.708664 62 | -2.006000,4.617167 63 | 9.726688,-40.663766 64 | -3.970667,11.605407 65 | -6.448940,18.159676 66 | -3.021015,11.079308 67 | -8.188104,29.807033 68 | -6.399222,22.508558 69 | -12.748786,44.082032 70 | -9.802192,25.828453 71 | -1.337426,-8.963418 72 | -0.473127,-2.403914 73 | -5.066304,16.757870 74 | 0.012202,-0.207023 75 | -6.419067,12.599492 76 | 0.128681,-2.183241 77 | 0.082228,-3.053382 78 | -6.089335,9.306526 79 | -4.003733,11.771705 80 | -6.209956,16.608763 81 | 2.542363,-22.658156 82 | 1.065639,-15.646642 83 | 0.508838,-5.127485 84 | 2.933250,-20.369814 85 | -6.086943,21.726665 86 | -3.774107,3.356777 87 | 0.961768,-21.077209 88 | -0.196282,-1.225088 89 | -11.545098,42.978854 90 | -11.162046,40.935825 91 | 0.542221,-7.961369 92 | 1.897032,-14.482775 93 | -11.410619,28.143626 94 | 2.258791,-9.707218 95 | -0.773176,-3.928438 96 | 0.079322,-0.327738 97 | 0.851168,-4.754805 98 | 0.361028,-3.277818 99 | 2.215406,-15.551523 100 | -0.142773,0.374769 101 | 0.109219,-0.647961 102 | -0.116164,0.311818 103 | -0.434073,-6.217545 104 | -1.061341,-6.624310 105 | -2.824668,9.063953 106 | 2.402653,-15.578499 107 | 0.029914,-0.201434 108 | -2.126079,1.328321 109 | -6.489747,12.199342 110 | 1.107889,-5.510016 111 | -0.098895,-0.617250 112 | -5.820668,21.506629 113 | 0.745509,-13.375728 114 | -1.874726,-5.295513 115 | -4.464811,15.101224 116 | 2.681363,-16.024203 117 | 10.859833,-45.133056 118 | -1.447632,5.348816 119 | -3.006434,7.547043 120 | -3.478513,9.024871 121 | -1.369604,-6.958831 122 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TestData_Case_4: -------------------------------------------------------------------------------- 1 | 0.429543,-11.699824 2 | 0.885363,44.878510 3 | 0.566769,34.384671 4 | 0.991352,-25.988153 5 | 1.335140,8.239557 6 | 3.594735,15.288370 7 | 2.466982,-14.799691 8 | 1.295084,-1.718810 9 | 3.252093,-5.781149 10 | 3.295393,20.913201 11 | 0.896766,-0.790877 12 | 2.151239,16.904276 13 | 0.834865,28.076578 14 | 2.207796,-23.510644 15 | 1.920262,-36.544597 16 | 3.389159,11.247957 17 | 2.634539,6.237496 18 | 0.999093,47.492498 19 | 2.470863,7.347182 20 | 3.856604,0.484661 21 | 2.598481,37.723442 22 | 1.007402,-7.514414 23 | 2.042171,17.331130 24 | 1.347732,-29.114204 25 | 0.266079,-0.594757 26 | 1.302431,-7.267114 27 | 0.407846,-40.432443 28 | 1.508886,15.472935 29 | 2.171776,-6.756012 30 | 2.702134,15.525408 31 | 1.381977,-29.368515 32 | 1.102343,14.028417 33 | 1.626349,35.132986 34 | 4.686151,-2.948276 35 | 1.620753,13.754717 36 | 1.107727,43.143128 37 | 0.452038,35.782456 38 | 0.210021,2.968436 39 | 0.187602,-0.825861 40 | 1.265678,-10.741329 41 | 1.249827,-1.181434 42 | 4.246845,9.213042 43 | 1.853367,3.656321 44 | 0.386929,-26.587974 45 | 2.797293,-34.692003 46 | 0.075376,-39.983670 47 | 0.927274,10.126519 48 | 4.568499,-19.769659 49 | 2.376021,-7.720159 50 | 0.673241,-37.872107 51 | 0.453351,5.998727 52 | 1.738980,16.536944 53 | 0.108946,6.609554 54 | 1.343423,42.247702 55 | 1.161319,-37.331550 56 | 0.610429,0.384049 57 | 0.069338,-22.063664 58 | 0.294150,25.897614 59 | 0.714682,21.995637 60 | 1.404740,10.755593 61 | -0.155350,49.433269 62 | -0.742637,4.979032 63 | -1.129298,-41.795634 64 | -0.831670,12.237647 65 | -1.529128,19.210008 66 | -0.050540,11.483686 67 | -0.194473,30.910620 68 | -0.355530,23.397838 69 | -0.905112,45.879602 70 | -2.783294,27.485364 71 | -3.611758,-8.311846 72 | -1.079184,-2.199548 73 | -0.556418,17.498116 74 | -0.041795,-0.203127 75 | -2.939354,13.831551 76 | -0.440768,-2.142154 77 | -0.710847,-2.970623 78 | -3.473140,10.565449 79 | -0.820568,12.406836 80 | -1.699693,17.650088 81 | -3.408628,-22.544110 82 | -3.020321,-15.389303 83 | -0.835591,-5.084467 84 | -2.438794,-20.434911 85 | -0.256261,22.561764 86 | -2.776709,4.219209 87 | -4.526187,-20.607944 88 | -0.506670,-1.132543 89 | -0.027962,44.502476 90 | -0.186737,42.429921 91 | -1.536808,-7.830429 92 | -1.916025,-14.480274 93 | -3.737705,30.137940 94 | -0.330589,-9.961071 95 | -1.763586,-3.594467 96 | -0.008205,-0.337101 97 | -0.408468,-4.813087 98 | -0.499636,-3.259570 99 | -1.885112,-15.595007 100 | -0.040911,0.398952 101 | -0.062207,-0.654150 102 | -0.031501,0.331258 103 | -2.028501,-5.893341 104 | -2.739674,-6.123897 105 | -0.382497,9.486184 106 | -1.711228,-15.669527 107 | -0.023241,-0.202313 108 | -1.709840,1.833329 109 | -3.111192,13.463330 110 | -0.355959,-5.609010 111 | -0.255281,-0.570621 112 | -0.056008,22.280308 113 | -2.741787,-13.112913 114 | -3.181426,-4.629858 115 | -0.404192,15.742240 116 | -1.557371,-16.172179 117 | -1.191501,-46.405916 118 | -0.013930,5.541235 119 | -0.950674,8.068006 120 | -1.024177,9.617661 121 | -3.124014,-6.367235 122 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TestData_Case_5: -------------------------------------------------------------------------------- 1 | -2.613231,-11.412336 2 | 12.470608,43.120163 3 | 9.446864,33.066352 4 | -5.768657,-25.359209 5 | 3.422201,7.613242 6 | 7.429168,13.837045 7 | -1.447520,-14.933906 8 | 0.806095,-1.995435 9 | 1.645009,-6.425865 10 | 8.595840,19.347691 11 | 0.661515,-0.996029 12 | 6.453086,15.771495 13 | 8.073171,26.903813 14 | -3.952435,-23.280958 15 | -7.603607,-35.796371 16 | 6.184861,9.987513 17 | 4.159152,5.343090 18 | 13.257012,45.615646 19 | 4.288261,6.457327 20 | 3.850632,-0.530016 21 | 12.273485,35.765511 22 | -0.971798,-7.519101 23 | 6.458212,16.212033 24 | -6.233501,-28.470980 25 | 0.103078,-0.643357 26 | -0.622816,-7.356587 27 | -10.070737,-39.160300 28 | 5.462163,14.555179 29 | 0.349189,-7.087903 30 | 6.628332,14.297029 31 | -6.266243,-28.725489 32 | 4.695603,13.265103 33 | 10.664019,33.514928 34 | 3.763404,-4.060681 35 | 5.125510,12.866555 36 | 12.236246,41.386361 37 | 9.697816,34.446203 38 | 0.971153,2.812931 39 | -0.032539,-0.846275 40 | -1.557509,-10.702908 41 | 0.901462,-1.464657 42 | 6.486648,7.799951 43 | 2.736541,3.052048 44 | -6.507729,-25.782155 45 | -6.276974,-34.233894 46 | -10.275727,-38.640768 47 | 3.516614,9.541470 48 | -0.703933,-20.278438 49 | 0.296936,-8.072060 50 | -9.151722,-36.755894 51 | 1.990488,5.676989 52 | 5.959801,15.523380 53 | 1.815912,6.356141 54 | 12.232157,40.460443 55 | -8.540368,-36.360080 56 | 0.689028,0.212972 57 | -5.643521,-21.329808 58 | 6.986923,24.939043 59 | 6.383219,21.061181 60 | 4.140627,10.025532 61 | 12.644215,47.789079 62 | 0.571336,5.001584 63 | -11.908324,-40.079199 64 | 2.364005,12.035911 65 | 3.494892,18.951211 66 | 2.923378,11.105469 67 | 7.812411,29.907700 68 | 5.712390,22.692594 69 | 11.000243,44.550553 70 | 4.425280,27.269192 71 | -5.639954,-7.093835 72 | -1.611697,-1.845287 73 | 3.991387,17.045894 74 | -0.092944,-0.185388 75 | 0.740671,14.121013 76 | -0.980179,-1.955083 77 | -1.455479,-2.685421 78 | -0.620256,11.104355 79 | 2.418518,12.196462 80 | 2.926402,17.488589 81 | -9.127327,-20.893720 82 | -6.900451,-14.083209 83 | -2.123076,-4.694952 84 | -7.644638,-19.107402 85 | 5.591885,21.859315 86 | -1.590084,4.794108 87 | -9.705689,-18.734282 88 | -0.782530,-0.962816 89 | 11.491079,42.993328 90 | 10.801298,41.032487 91 | -3.511107,-7.165859 92 | -5.598509,-13.490967 93 | 4.189927,30.078404 94 | -2.897439,-9.536093 95 | -2.633810,-3.015539 96 | -0.095174,-0.323491 97 | -1.640269,-4.543366 98 | -1.326250,-3.019187 99 | -5.857164,-14.575717 100 | 0.063740,0.395946 101 | -0.229394,-0.615760 102 | 0.055308,0.328124 103 | -3.484691,-5.167515 104 | -4.231303,-5.206150 105 | 2.085742,9.261947 106 | -5.708491,-14.692703 107 | -0.074811,-0.189404 108 | -1.177078,2.213399 109 | 0.479386,13.809814 110 | -1.795548,-5.325758 111 | -0.394271,-0.485106 112 | 5.712468,21.535621 113 | -6.042234,-11.956475 114 | -4.271317,-3.648686 115 | 3.683972,15.310449 116 | -5.689973,-15.218048 117 | -13.161637,-44.516290 118 | 1.420722,5.356027 119 | 1.169873,8.039147 120 | 1.499955,9.555024 121 | -4.665527,-5.341722 122 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TestData_Case_6: -------------------------------------------------------------------------------- 1 | -5.477917,-10.347116 2 | 23.206002,38.423248 3 | 17.683172,29.494615 4 | -12.135541,-23.002076 5 | 5.276044,6.468096 6 | 10.757316,11.442749 7 | -5.263377,-14.050399 8 | 0.262171,-2.136075 9 | -0.074179,-6.632669 10 | 13.310495,16.463667 11 | 0.381183,-1.133302 12 | 10.315166,13.563913 13 | 14.761303,23.897597 14 | -9.843314,-21.464713 15 | -16.609303,-32.608680 16 | 8.559076,8.046437 17 | 5.400325,4.084561 18 | 24.611488,40.630163 19 | 5.813421,5.127415 20 | 3.582247,-1.508573 21 | 21.112072,31.370219 22 | -2.884771,-7.011374 23 | 10.434137,13.988113 24 | -13.389931,-25.887506 25 | -0.066947,-0.648114 26 | -2.505619,-6.944721 27 | -19.863017,-35.219446 28 | 9.043202,12.645512 29 | -1.497193,-6.936766 30 | 10.102820,12.094331 31 | -13.487430,-26.124869 32 | 7.968865,11.597795 33 | 18.974953,29.612884 34 | 2.584187,-4.896357 35 | 8.280972,11.101558 36 | 22.530884,36.809182 37 | 18.282704,30.762497 38 | 1.666102,2.465730 39 | -0.250462,-0.809017 40 | -4.274555,-9.935103 41 | 0.491665,-1.648065 42 | 8.284396,5.855306 43 | 3.433224,2.239784 44 | -12.958897,-23.219325 45 | -14.923475,-31.442802 46 | -19.926557,-34.664562 47 | 5.866303,8.306186 48 | -5.928394,-19.405276 49 | -1.802385,-7.873864 50 | -18.353010,-33.134828 51 | 3.391977,4.968374 52 | 9.774472,13.451924 53 | 3.399127,5.669568 54 | 22.287289,35.915871 55 | -17.660043,-32.910730 56 | 0.720671,0.027382 57 | -10.971783,-19.142362 58 | 13.203549,22.280917 59 | 11.616751,18.691440 60 | 6.594337,8.612247 61 | 24.582097,42.888142 62 | 1.846374,4.683287 63 | -21.875818,-35.631432 64 | 5.398576,11.013948 65 | 8.280740,17.400919 66 | 5.698073,9.970434 67 | 15.286891,26.866619 68 | 11.391021,20.440887 69 | 22.155951,40.185457 70 | 11.332278,25.194670 71 | -7.283797,-5.392391 72 | -2.034375,-1.365272 73 | 8.267186,15.432022 74 | -0.137759,-0.155015 75 | 4.370220,13.448152 76 | -1.452793,-1.634776 77 | -2.100923,-2.217211 78 | 2.274897,10.886518 79 | 5.492785,11.154919 80 | 7.353067,16.135271 81 | -14.224014,-17.819458 82 | -10.310326,-11.817367 83 | -3.265877,-3.985483 84 | -12.329513,-16.477755 85 | 11.058953,19.667191 86 | -0.295097,5.042297 87 | -14.223765,-15.583910 88 | -1.005061,-0.727476 89 | 22.227022,38.554256 90 | 21.053241,36.838758 91 | -5.246130,-6.012947 92 | -8.899464,-11.582273 93 | 11.832023,27.969074 94 | -5.266833,-8.461246 95 | -3.324544,-2.231107 96 | -0.175656,-0.287835 97 | -2.760288,-3.964022 98 | -2.062482,-2.573052 99 | -9.430059,-12.563116 100 | 0.164046,0.365957 101 | -0.380948,-0.535407 102 | 0.138348,0.302629 103 | -4.703404,-4.089532 104 | -5.434576,-3.933613 105 | 4.411840,8.406525 106 | -9.316730,-12.714595 107 | -0.121283,-0.163588 108 | -0.564101,2.442630 109 | 4.037294,13.215182 110 | -3.112774,-4.679566 111 | -0.506391,-0.366532 112 | 11.091649,19.323317 113 | -8.930913,-9.985222 114 | -5.070125,-2.418861 115 | 7.521080,13.835276 116 | -9.434813,-13.226832 117 | -24.234829,-39.592952 118 | 2.758554,4.805815 119 | 3.210695,7.462435 120 | 3.921867,8.841227 121 | -5.889093,-3.952180 122 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TestData_Case_7: -------------------------------------------------------------------------------- 1 | -7.969293,-8.576758 2 | 32.359945,31.107853 3 | 24.714400,23.912868 4 | -17.675408,-19.077391 5 | 6.770334,4.882160 6 | 13.352371,8.268649 7 | -8.720542,-12.209381 8 | -0.299619,-2.131145 9 | -1.788313,-6.387467 10 | 17.118062,12.457672 11 | 0.074874,-1.193344 12 | 13.474284,10.431973 13 | 20.443478,19.262800 14 | -15.063388,-18.185684 15 | -24.483102,-27.198763 16 | 10.350004,5.557010 17 | 6.273476,2.547676 18 | 34.288732,32.875802 19 | 6.942406,3.448079 20 | 3.069737,-2.384324 21 | 28.511905,24.837098 22 | -4.601152,-6.025834 23 | 13.698992,10.810926 24 | -19.633860,-21.539842 25 | -0.232410,-0.608703 26 | -4.217668,-6.059584 27 | -28.301664,-28.878446 28 | 12.007961,9.874074 29 | -3.241545,-6.312899 30 | 12.888818,9.067425 31 | -19.789471,-21.743882 32 | 10.699063,9.140115 33 | 25.992775,23.692770 34 | 1.228863,-5.398355 35 | 10.872100,8.580008 36 | 31.290080,29.723517 37 | 25.621656,24.982379 38 | 2.247509,1.950494 39 | -0.451317,-0.716627 40 | -6.700297,-8.490236 41 | 0.048361,-1.719161 42 | 9.517577,3.511632 43 | 3.895938,1.274881 44 | -18.526937,-19.074137 45 | -22.552966,-26.508935 46 | -28.219425,-28.326023 47 | 7.816213,6.504848 48 | -10.748843,-17.209676 49 | -3.778876,-7.139077 50 | -26.303571,-27.255677 51 | 4.562308,3.921173 52 | 12.923029,10.463741 53 | 4.750697,4.596623 54 | 30.823580,28.923693 55 | -25.576216,-27.218569 56 | 0.703202,-0.160075 57 | -15.552337,-15.650395 58 | 18.520374,18.104383 59 | 16.058620,15.047908 60 | 8.598654,6.612052 61 | 34.844750,35.064449 62 | 2.995584,4.045831 63 | -30.352511,-28.755442 64 | 8.065244,9.241402 65 | 12.502270,14.664784 66 | 8.084454,8.155930 67 | 21.719596,21.994622 68 | 16.293372,16.796168 69 | 31.801767,33.081789 70 | 17.467001,21.403173 71 | -8.431261,-3.323464 72 | -2.318414,-0.792217 73 | 11.979590,12.766483 74 | -0.173186,-0.114079 75 | 7.701946,11.858821 76 | -1.826402,-1.203062 77 | -2.603193,-1.597903 78 | 5.015020,9.926782 79 | 8.192729,9.353187 80 | 11.278632,13.682361 81 | -18.351357,-13.530829 82 | -13.017570,-8.746191 83 | -4.186113,-3.004409 84 | -16.174152,-12.725177 85 | 15.772372,16.134780 86 | 1.020001,4.946861 87 | -17.772514,-11.371520 88 | -1.159099,-0.442558 89 | 31.448230,31.487775 90 | 29.870442,30.134528 91 | -6.623637,-4.450262 92 | -11.593935,-8.884266 93 | 18.667786,23.953698 94 | -7.277302,-6.809779 95 | -3.788715,-1.294629 96 | -0.244168,-0.232564 97 | -3.692197,-3.114536 98 | -2.658160,-1.951568 99 | -12.360311,-9.694359 100 | 0.253173,0.311030 101 | -0.506541,-0.418567 102 | 0.211960,0.256510 103 | -5.601588,-2.732854 104 | -6.267491,-2.393007 105 | 6.437279,6.978211 106 | -12.290050,-9.870008 107 | -0.159490,-0.126623 108 | 0.087320,2.505399 109 | 7.320067,11.719957 110 | -4.217869,-3.714468 111 | -0.584001,-0.222979 112 | 15.714953,15.794161 113 | -11.210965,-7.333494 114 | -5.523412,-1.024196 115 | 10.845638,11.417252 116 | -12.536685,-10.334230 117 | -33.656457,-31.971419 118 | 3.908395,3.928094 119 | 5.032714,6.377169 120 | 6.076511,7.524916 121 | -6.711326,-2.293304 122 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TrainingDataFor_Case_1: -------------------------------------------------------------------------------- 1 | -24.454871,25.709326 2 | 15.418221,-13.380656 3 | -10.235979,10.579077 4 | 4.170603,1.621472 5 | -4.533377,5.798370 6 | 5.714110,-5.384102 7 | -0.651344,0.679338 8 | 14.686440,-14.631171 9 | -2.622418,7.374532 10 | -17.775854,21.460382 11 | -18.466290,21.006221 12 | -13.380110,17.854100 13 | -0.329878,2.346374 14 | 8.842264,-6.999221 15 | -2.693749,3.445413 16 | 12.622586,-11.174559 17 | 0.705795,-0.633271 18 | 1.003171,-0.263621 19 | 12.828919,-11.396247 20 | 16.687983,-16.063221 21 | -4.058516,4.553318 22 | -10.100401,15.551764 23 | -12.502545,18.728350 24 | -2.118160,6.785756 25 | -17.454964,18.086779 26 | 1.692467,-1.237178 27 | -7.293533,8.063919 28 | -27.295973,29.129342 29 | -9.869233,10.375492 30 | -14.283262,15.971365 31 | 10.552021,-6.034269 32 | 27.975164,-23.389116 33 | -3.465514,5.807647 34 | -1.974312,4.727809 35 | 14.351162,-12.570601 36 | 13.108797,-12.283743 37 | 3.456549,-0.313530 38 | 6.899410,-0.969993 39 | -1.712202,4.640581 40 | 10.391097,-4.877828 41 | -11.667170,12.879265 42 | -17.525008,17.657706 43 | -9.731249,11.805196 44 | -12.619552,12.844122 45 | -11.586758,15.401231 46 | -0.001629,0.375638 47 | 20.944462,-20.500084 48 | 14.953068,-13.650724 49 | 4.480973,-0.521281 50 | 5.137052,-3.153247 51 | 15.929677,-13.927869 52 | 2.561451,-0.232339 53 | -5.413448,5.714110 54 | -2.037298,3.381098 55 | -7.510587,8.440451 56 | -10.111430,12.422144 57 | 20.694689,-17.341361 58 | 4.324953,-3.774514 59 | -6.283811,7.533145 60 | 17.015580,-14.353413 61 | 8.110589,-4.839716 62 | -5.812817,12.140531 63 | 0.942639,1.806632 64 | 13.891414,-11.962890 65 | -27.208959,28.996212 66 | 2.826161,3.205123 67 | 12.300110,-10.163882 68 | 12.616763,-7.453131 69 | 5.410349,-2.904865 70 | 0.590356,-0.465896 71 | -2.464518,5.051575 72 | 16.905980,-10.732992 73 | 14.023125,-12.878981 74 | -0.036126,0.052794 75 | 10.459494,-8.842186 76 | 14.067689,-12.254550 77 | 29.451316,-29.266787 78 | -32.512025,32.799465 79 | 6.416512,-4.197270 80 | -13.109823,15.789698 81 | 0.560958,4.026048 82 | 2.075168,-0.188230 83 | 0.255520,-0.248190 84 | 27.343006,-23.065065 85 | -28.511542,31.473586 86 | 19.091082,-15.539841 87 | 6.800454,-3.843877 88 | 4.817962,1.096744 89 | -15.751960,16.856980 90 | 20.824049,-17.207421 91 | 8.608582,-3.286865 92 | 0.380279,-0.282721 93 | 22.238889,-21.434186 94 | -5.628634,8.544984 95 | 1.596703,-0.629394 96 | -10.648634,11.091737 97 | 2.878887,-2.264994 98 | -1.460041,1.660861 99 | 28.266184,-26.301622 100 | 5.681361,-5.454397 101 | 21.565744,-17.863127 102 | -2.191130,3.602315 103 | -1.386955,1.558669 104 | -11.320085,11.320085 105 | 0.113997,0.025950 106 | 16.737052,-12.443294 107 | -27.231985,30.552030 108 | -32.711935,33.251939 109 | 16.729350,-15.654590 110 | -17.308348,18.445268 111 | 1.322920,0.903248 112 | -8.546042,9.107399 113 | 29.695634,-27.232149 114 | -14.835805,18.799090 115 | -0.952015,1.646201 116 | -4.042253,6.367120 117 | -22.929469,26.625904 118 | -3.351730,9.808798 119 | 4.827791,-1.268686 120 | -4.125774,4.849467 121 | -9.217615,11.644809 122 | 9.543930,-8.374923 123 | 14.543407,-12.159265 124 | 0.134340,-0.089682 125 | -5.638921,6.026059 126 | 5.944189,-1.664207 127 | 4.204183,-3.347601 128 | 20.835523,-17.763053 129 | 7.045698,-5.836024 130 | 0.327172,-0.199004 131 | -4.012326,4.777491 132 | 1.659645,1.882188 133 | 7.922166,-6.514349 134 | -11.702083,15.676814 135 | 24.522990,-19.748766 136 | 10.190989,-4.255711 137 | 11.895392,-9.147123 138 | -12.967011,13.298826 139 | -10.278186,11.241720 140 | 12.482806,-13.981293 141 | -31.886476,29.371601 142 | 28.120884,-29.968038 143 | -8.481128,2.076210 144 | 4.508238,-5.969612 145 | -2.609714,1.525637 146 | 8.156158,-11.310549 147 | 5.100666,-5.132826 148 | -19.179491,14.538594 149 | -10.975747,10.948195 150 | -6.210254,0.394920 151 | -5.515560,3.473587 152 | 17.701458,-18.786436 153 | -16.657772,12.122696 154 | 26.705839,-28.342725 155 | 28.102233,-29.195241 156 | -6.651545,1.971578 157 | 32.196088,-33.712871 158 | -7.892122,7.126866 159 | 0.024044,-0.073475 160 | 7.244742,-9.487974 161 | 1.105061,-1.139162 162 | 2.506397,-6.171831 163 | -7.982112,5.885374 164 | -10.413717,10.335458 165 | -8.793278,8.541016 166 | -25.756532,24.068122 167 | 5.367074,-6.760191 168 | -0.147756,-0.057446 169 | 1.325044,-3.877725 170 | 0.757333,-1.183633 171 | 26.051115,-26.994084 172 | -23.978501,21.755790 173 | -6.564196,6.019644 174 | -2.204561,2.155044 175 | -17.221444,11.986686 176 | -28.391468,24.545381 177 | 16.328634,-18.319373 178 | -14.196362,9.152464 179 | 11.220264,-15.031340 180 | -4.138218,1.818305 181 | 3.659402,-6.327747 182 | 27.731546,-28.118168 183 | 26.296109,-30.358141 184 | -7.866340,7.391690 185 | -17.983887,13.315495 186 | 6.461885,-10.623625 187 | -5.100156,3.694845 188 | -19.610437,17.450003 189 | -3.076784,-2.712996 190 | -9.063445,3.982417 191 | 2.988795,-3.376090 192 | 20.343914,-22.353082 193 | -11.357896,4.868961 194 | 0.545332,-0.663183 195 | -17.342059,12.386554 196 | -17.748139,12.486010 197 | -7.225419,0.251825 198 | 6.132628,-7.819103 199 | 5.443308,-5.699747 200 | -21.004668,19.175257 201 | 6.233157,-7.223843 202 | -26.511772,26.147238 203 | 13.275847,-18.325229 204 | -4.767861,4.732030 205 | 2.059905,-2.165571 206 | -3.056971,1.087073 207 | -7.685819,2.626294 208 | 0.304589,-0.500758 209 | 2.232064,-2.337219 210 | 0.225728,-0.350126 211 | -1.406161,0.006097 212 | -10.603983,8.925378 213 | 3.440778,-8.728873 214 | 0.247176,-0.346064 215 | 15.617946,-17.240484 216 | 3.417414,-7.598641 217 | -3.988929,0.017297 218 | -7.063868,2.606304 219 | -22.824540,19.538524 220 | -12.660216,10.486586 221 | -2.007503,0.766490 222 | -25.445092,21.955523 223 | 2.884847,-3.236559 224 | 5.520196,-7.016366 225 | -22.092176,16.289011 226 | -13.831235,12.942661 227 | 1.176518,-1.971655 228 | -30.311757,30.083963 229 | -12.296642,8.414524 230 | -5.871458,-0.585535 231 | 9.990339,-13.179377 232 | -1.444729,1.306707 233 | -23.051384,19.812003 234 | -12.799549,12.255997 235 | 7.837546,-7.997274 236 | -0.008817,0.001992 237 | 6.742133,-9.223282 238 | 22.659009,-24.147393 239 | 8.552773,-10.710255 240 | -0.383783,0.325826 241 | -31.031769,27.032185 242 | -17.162533,16.584472 243 | -3.053778,-1.187266 244 | 5.094976,-11.595478 245 | -16.805525,15.964143 246 | 14.861713,-18.831919 247 | -7.860282,6.934373 248 | 19.507428,-24.358793 249 | 23.678915,-28.257748 250 | 12.108645,-17.036884 251 | -17.353238,13.897118 252 | 10.735682,-13.731366 253 | 3.154107,-4.609283 254 | 22.476873,-26.645720 255 | 5.926131,-9.654441 256 | 3.983154,-4.059177 257 | -15.036332,13.049234 258 | 0.779985,-1.661580 259 | -5.261339,3.075776 260 | 12.419560,-18.727163 261 | -8.157194,8.004422 262 | -1.179871,-1.972252 263 | 12.368135,-17.490058 264 | -19.449494,14.955953 265 | -4.968247,4.750996 266 | 2.120560,-2.161033 267 | 19.412895,-20.774735 268 | 3.313412,-8.980342 269 | 1.643147,-2.494506 270 | -3.863243,0.016752 271 | 4.118189,-4.419519 272 | -8.463951,7.200862 273 | -15.503533,11.332937 274 | -21.039375,16.501467 275 | -28.930987,26.649210 276 | -16.923542,16.480214 277 | 0.904740,-6.435277 278 | 1.200083,-1.571672 279 | 1.584861,-1.752264 280 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TrainingDataFor_Case_2: -------------------------------------------------------------------------------- 1 | -16.967529,31.162688 2 | 11.429690,-16.915251 3 | -7.149130,12.867871 4 | 4.448161,0.486790 5 | -2.878177,6.774120 6 | 4.125899,-6.679564 7 | -0.453325,0.824770 8 | 10.399186,-17.933756 9 | -0.624392,7.801982 10 | -11.615801,25.329867 11 | -12.400256,25.069879 12 | -8.303213,20.708764 13 | 0.288648,2.351802 14 | 6.729440,-9.049275 15 | -1.710223,4.025207 16 | 9.300293,-14.060761 17 | 0.517843,-0.794366 18 | 0.900758,-0.514278 19 | 9.442219,-14.328298 20 | 11.961887,-19.835048 21 | -2.741740,5.448589 22 | -5.731146,17.636027 23 | -7.229277,21.326094 24 | -0.289702,7.102757 25 | -12.178998,21.988165 26 | 1.314593,-1.633065 27 | -4.957916,9.676853 28 | -18.826656,35.201502 29 | -6.847572,12.576302 30 | -9.662878,19.123934 31 | 8.630686,-8.559720 32 | 20.968385,-29.832656 33 | -1.844300,6.506698 34 | -0.683392,5.077702 35 | 10.608647,-15.856622 36 | 9.482859,-15.257991 37 | 3.257622,-1.197468 38 | 6.413266,-2.722640 39 | -0.452789,4.925607 40 | 8.774554,-7.401034 41 | -7.936222,15.460100 42 | -12.357707,21.591840 43 | -6.344255,13.921577 44 | -8.865248,15.672650 45 | -7.205817,17.875320 46 | 0.095649,0.363260 47 | 14.924984,-25.222386 48 | 10.910487,-17.055725 49 | 4.193370,-1.663280 50 | 4.145891,-4.375370 51 | 11.782089,-17.576192 52 | 2.414037,-0.887375 53 | -3.750069,6.920510 54 | -1.092786,3.793182 55 | -5.070121,10.096733 56 | -6.551804,14.615900 57 | 15.501261,-22.106648 58 | 3.200668,-4.765281 59 | -4.119974,8.902829 60 | 12.720851,-18.268288 61 | 6.581617,-6.773981 62 | -2.472549,13.231320 63 | 1.378110,1.501099 64 | 10.321852,-15.150627 65 | -18.777065,35.050387 66 | 3.559409,2.364447 67 | 9.250388,-13.001059 68 | 10.257845,-10.464630 69 | 4.474162,-4.206185 70 | 0.449658,-0.602816 71 | -1.073098,5.517311 72 | 13.552020,-14.742864 73 | 10.211973,-16.069593 74 | -0.021231,0.060345 75 | 7.814569,-11.248012 76 | 10.416633,-15.477972 77 | 20.872985,-35.892107 78 | -22.915078,40.096581 79 | 5.111542,-5.714968 80 | -8.576442,18.644749 81 | 1.583862,3.743677 82 | 1.955741,-0.718910 83 | 0.182577,-0.305866 84 | 20.441638,-29.356033 85 | -19.394071,37.780480 86 | 14.418563,-19.951469 87 | 5.573866,-5.472988 88 | 4.937652,-0.187607 89 | -10.852317,20.359500 90 | 15.660879,-22.010753 91 | 7.464548,-5.402933 92 | 0.294148,-0.371511 93 | 15.933541,-26.459682 94 | -3.225238,9.710619 95 | 1.379398,-1.021205 96 | -7.415038,13.469864 97 | 2.194568,-2.932927 98 | -0.980429,1.982155 99 | 20.495676,-32.721242 100 | 4.076072,-6.738987 101 | 16.207592,-22.836081 102 | -1.184122,4.046675 103 | -0.936282,1.864529 104 | -8.004509,13.864216 105 | 0.116829,-0.004439 106 | 12.946189,-16.351167 107 | -18.396631,36.559151 108 | -22.991068,40.585379 109 | 12.107605,-19.451048 110 | -11.944594,22.296490 111 | 1.511621,0.530073 112 | -5.897674,11.008950 113 | 21.635581,-33.990032 114 | -9.464725,21.998316 115 | -0.493508,1.836508 116 | -2.256585,7.196378 117 | -15.256875,31.653232 118 | -0.698819,10.342063 119 | 4.334928,-2.474981 120 | -2.730057,5.752055 121 | -5.889634,13.633716 122 | 7.051139,-10.559705 123 | 10.900803,-15.509058 124 | 0.106551,-0.121396 125 | -3.887121,7.280186 126 | 5.310917,-3.145970 127 | 3.194506,-4.321657 128 | 15.528153,-22.550422 129 | 5.295147,-7.460727 130 | 0.264517,-0.276901 131 | -2.639103,5.653168 132 | 2.090240,1.388506 133 | 5.966187,-8.342786 134 | -7.245886,18.171362 135 | 18.576033,-25.422860 136 | 8.742281,-6.748324 137 | 9.122616,-11.914197 138 | -9.083181,16.201788 139 | -7.018394,13.518858 140 | 8.438840,-16.735680 141 | -23.198041,36.623615 142 | 19.406389,-36.225122 143 | -7.654778,4.200542 144 | 2.809574,-6.933021 145 | -2.125926,2.149096 146 | 4.950858,-13.036120 147 | 3.598392,-6.278079 148 | -14.763100,19.007221 149 | -7.768156,13.415877 150 | -5.896432,1.988796 151 | -4.428591,4.782760 152 | 12.236008,-22.727778 153 | -12.952588,16.020974 154 | 18.460223,-34.288949 155 | 19.588389,-35.473831 156 | -5.914617,3.625945 157 | 22.373500,-40.897094 158 | -5.778636,8.926656 159 | 0.004208,-0.077195 160 | 4.542215,-11.039756 161 | 0.772570,-1.386357 162 | 0.823607,-6.610234 163 | -6.186882,7.750757 164 | -7.383865,12.678554 165 | -6.283077,10.525856 166 | -18.649611,29.914301 167 | 3.434529,-7.918944 168 | -0.157590,-0.017246 169 | 0.276265,-4.088541 170 | 0.425180,-1.339314 171 | 18.176862,-32.816808 172 | -17.530641,27.220572 173 | -4.782528,7.513469 174 | -1.571676,2.652195 175 | -13.532255,16.035487 176 | -21.071240,31.057270 177 | 11.030846,-21.921317 178 | -11.343801,12.514890 179 | 6.947546,-17.423178 180 | -3.526600,2.827398 181 | 1.896970,-7.059257 182 | 19.509099,-34.337516 183 | 17.542826,-36.129646 184 | -5.685191,9.175783 185 | -13.924797,17.516353 186 | 3.492106,-11.934092 187 | -3.970076,4.888964 188 | -14.425834,21.930963 189 | -3.674120,-1.824223 190 | -7.723890,6.192512 191 | 2.013158,-4.034610 192 | 13.865308,-26.856811 193 | -9.710705,7.642695 194 | 0.355106,-0.781728 195 | -13.545267,16.452947 196 | -13.911769,16.654116 197 | -6.914042,2.113320 198 | 3.899931,-9.139914 199 | 3.782629,-6.914364 200 | -15.326030,23.958284 201 | 4.151099,-8.590957 202 | -18.841002,32.118044 203 | 8.080565,-21.136854 204 | -3.380660,5.804803 205 | 1.429224,-2.624923 206 | -2.671452,1.841235 207 | -6.744196,4.526042 208 | 0.164605,-0.562529 209 | 1.551092,-2.835281 210 | 0.127417,-0.396618 211 | -1.356669,0.369831 212 | -7.932603,11.365766 213 | 1.064337,-9.321982 214 | 0.149186,-0.398246 215 | 10.623612,-20.695251 216 | 1.334296,-8.224216 217 | -3.848533,1.049118 218 | -6.148611,4.345760 219 | -16.989870,24.780190 220 | -9.514701,13.405970 221 | -1.740717,1.259952 222 | -18.895564,27.793081 223 | 1.948865,-3.872930 224 | 3.516131,-8.206021 225 | -17.123497,21.451852 226 | -10.010140,16.081438 227 | 0.626127,-2.208978 228 | -21.492606,36.904136 229 | -9.699805,11.310411 230 | -5.822941,0.954062 231 | 6.238853,-15.315991 232 | -1.057300,1.636105 233 | -17.138203,25.103062 234 | -9.191329,15.151151 235 | 5.500642,-9.753279 236 | -0.008001,0.004207 237 | 4.125239,-10.653999 238 | 15.637117,-29.189173 239 | 5.489326,-12.558932 240 | -0.286376,0.414055 241 | -22.977943,34.142699 242 | -12.285357,20.461361 243 | -3.257010,-0.356435 244 | 1.920238,-12.519049 245 | -12.101066,19.769767 246 | 9.481253,-22.036731 247 | -5.797702,8.732480 248 | 12.538209,-28.577681 249 | 15.558432,-33.423442 250 | 7.286582,-19.590314 251 | -13.165102,17.914934 252 | 6.815933,-16.042079 253 | 1.853663,-5.268568 254 | 14.814572,-31.555232 255 | 3.225449,-10.859270 256 | 2.796839,-4.951780 257 | -11.146591,16.496281 258 | 0.323359,-1.806838 259 | -4.285994,4.332706 260 | 7.149428,-21.303469 261 | -5.807548,9.842915 262 | -1.650124,-1.599676 263 | 7.419941,-20.095208 264 | -14.915883,19.480241 265 | -3.569310,5.874987 266 | 1.488988,-2.636239 267 | 13.374520,-25.091280 268 | 0.876227,-9.531919 269 | 0.941532,-2.834786 270 | -3.727270,1.016062 271 | 2.834009,-5.334794 272 | -6.311828,9.146130 273 | -12.042083,14.959386 274 | -16.051582,21.384584 275 | -21.047864,33.229051 276 | -12.081493,20.298800 277 | -0.791660,-6.450164 278 | 0.752413,-1.828723 279 | 1.077339,-2.102749 280 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TrainingDataFor_Case_3: -------------------------------------------------------------------------------- 1 | -8.323877,34.492365 2 | 6.662243,-19.297099 3 | -3.575079,14.279739 4 | 4.422584,-0.681066 5 | -1.026835,7.288225 6 | 2.256514,-7.519824 7 | -0.224412,0.913996 8 | 5.403245,-20.014186 9 | 1.416185,7.697741 10 | -4.664150,27.473164 11 | -5.489166,27.425066 12 | -2.660465,22.152159 13 | 0.887504,2.196958 14 | 4.158015,-10.482635 15 | -0.610149,4.330689 16 | 5.344201,-15.988745 17 | 0.294601,-0.901326 18 | 0.736961,-0.729888 19 | 5.412046,-16.283899 20 | 6.420607,-22.255149 21 | -1.238119,5.972547 22 | -0.971322,18.518423 23 | -1.463346,22.470500 24 | 1.558498,6.935717 25 | -6.073053,24.391093 26 | 0.847131,-1.917661 27 | -2.284426,10.630325 28 | -9.074335,38.874737 29 | -3.359260,13.920057 30 | -4.383985,20.973238 31 | 6.121184,-10.501841 32 | 12.532645,-34.243150 33 | -0.097400,6.762327 34 | 0.654100,5.081558 35 | 6.143171,-18.062040 36 | 5.210679,-17.192432 37 | 2.836694,-1.999799 38 | 5.490068,-4.289744 39 | 0.837480,4.874962 40 | 6.560040,-9.419871 41 | -3.664434,16.987356 42 | -6.348249,24.054526 43 | -2.524911,15.089225 44 | -4.506792,17.433112 45 | -2.333811,19.131236 46 | 0.186408,0.326126 47 | 7.888394,-28.225824 48 | 6.124375,-19.298408 49 | 3.619996,-2.691929 50 | 2.872194,-5.299318 51 | 6.831571,-20.026727 52 | 2.102112,-1.481937 53 | -1.831129,7.655288 54 | -0.073803,3.946766 55 | -2.284134,11.064939 56 | -2.545683,15.813607 57 | 9.251446,-25.365403 58 | 1.858262,-5.431301 59 | -1.675367,9.665801 60 | 7.559218,-20.938210 61 | 4.604119,-8.246611 62 | 1.036218,13.420417 63 | 1.719665,1.093270 64 | 6.048873,-17.305874 65 | -9.065544,38.715936 66 | 4.050089,1.362637 67 | 5.570267,-14.952235 68 | 7.199872,-12.762982 69 | 3.233067,-5.220861 70 | 0.278316,-0.698656 71 | 0.391452,5.607051 72 | 9.274512,-17.748033 73 | 5.704892,-18.165088 74 | -0.004890,0.063784 75 | 4.637095,-12.887304 76 | 6.055701,-17.646596 77 | 10.872194,-40.071439 78 | -11.756507,44.661182 79 | 3.458228,-6.843199 80 | -3.458591,20.229191 81 | 2.498828,3.206181 82 | 1.703033,-1.200596 83 | 0.097192,-0.342699 84 | 12.147206,-33.646436 85 | -8.954926,41.512696 86 | 8.763442,-23.003438 87 | 3.967427,-6.729123 88 | 4.720849,-1.459172 89 | -5.213107,22.474553 90 | 9.430445,-25.314088 91 | 5.811818,-7.150800 92 | 0.187971,-0.434983 93 | 8.542350,-29.681994 94 | -0.602048,10.214490 95 | 1.068088,-1.343423 96 | -3.676119,14.930043 97 | 1.360693,-3.400986 98 | -0.434002,2.168369 99 | 11.328422,-36.910964 100 | 2.193005,-7.564326 101 | 9.744919,-26.252794 102 | -0.096417,4.215261 103 | -0.421803,2.043325 104 | -4.143439,15.463523 105 | 0.111699,-0.034525 106 | 8.273065,-19.144735 107 | -8.307576,40.074827 108 | -11.703398,45.152992 109 | 6.660747,-21.921948 110 | -5.766835,24.628244 111 | 1.597307,0.120775 112 | -2.847390,12.160259 113 | 12.101099,-38.431550 114 | -3.448639,23.698392 115 | -0.001369,1.901660 116 | -0.317134,7.535214 117 | -6.544551,34.523444 118 | 2.001716,10.170533 119 | 3.546647,-3.512610 120 | -1.148291,6.262649 121 | -2.160284,14.693508 122 | 4.077824,-12.024861 123 | 6.515327,-17.801935 124 | 0.071501,-0.144837 125 | -1.870419,8.038181 126 | 4.315715,-4.413340 127 | 1.967129,-5.001199 128 | 9.162565,-25.801016 129 | 3.183742,-8.576994 130 | 0.183837,-0.335928 131 | -1.086031,6.143591 132 | 2.378389,0.800200 133 | 3.603623,-9.602675 134 | -2.295894,19.427561 135 | 11.363150,-29.364428 136 | 6.697800,-8.781049 137 | 5.728150,-13.869337 138 | -4.580348,18.000626 139 | -3.280311,14.874708 140 | 3.819781,-18.349558 141 | -12.928698,41.379791 142 | 9.369381,-40.013524 143 | -6.306767,6.038614 144 | 0.919443,-7.423955 145 | -1.497260,2.626097 146 | 1.408166,-13.873301 147 | 1.850893,-6.995491 148 | -9.340629,22.180537 149 | -4.031178,14.969288 150 | -5.180778,3.447138 151 | -3.039821,5.765995 152 | 5.936694,-25.120260 153 | -8.364706,18.827449 154 | 8.956573,-37.898439 155 | 9.739627,-39.334937 156 | -4.774618,5.033209 157 | 11.026195,-45.294247 158 | -3.271345,10.118108 159 | -0.015915,-0.075653 160 | 1.530144,-11.839198 161 | 0.387430,-1.539074 162 | -0.915312,-6.598161 163 | -3.970025,9.087939 164 | -3.850815,14.157628 165 | -3.344694,11.793376 166 | -10.271750,33.721871 167 | 1.267927,-8.538034 168 | -0.156684,0.024129 169 | -0.791341,-4.020730 170 | 0.064053,-1.403723 171 | 9.063886,-36.403120 172 | -9.888096,30.830317 173 | -2.674938,8.495263 174 | -0.831684,2.968604 175 | -8.920865,18.991497 176 | -12.315042,35.452658 177 | 4.981325,-24.029360 178 | -7.718178,15.024448 179 | 2.201364,-18.627655 180 | -2.674649,3.643808 181 | 0.005262,-7.309691 182 | 9.957140,-38.216820 183 | 7.594028,-39.438976 184 | -3.116606,10.334561 185 | -8.916756,20.523500 186 | 0.284345,-12.431271 187 | -2.569442,5.749908 188 | -8.258135,24.917364 189 | -4.021071,-0.811132 190 | -5.857965,7.980597 191 | 0.900327,-4.418178 192 | 6.441805,-29.530294 193 | -7.401746,9.895592 194 | 0.140679,-0.847000 195 | -8.825387,19.398100 196 | -9.127334,19.687271 197 | -6.131484,3.830796 198 | 1.401460,-9.837856 199 | 1.864170,-7.657779 200 | -8.602948,27.108594 201 | 1.786151,-9.372610 202 | -9.886249,35.900058 203 | 2.334606,-22.508037 204 | -1.763073,6.481988 205 | 0.701144,-2.905392 206 | -2.103878,2.469919 207 | -5.342968,6.117347 208 | 0.013403,-0.585964 209 | 0.764415,-3.140123 210 | 0.020423,-0.416081 211 | -1.214723,0.708361 212 | -4.720629,13.031596 213 | -1.384636,-9.279814 214 | 0.041029,-0.423288 215 | 4.905296,-22.739670 216 | -0.839753,-8.289323 217 | -3.445865,2.009444 218 | -4.814337,5.789060 219 | -9.997369,28.333128 220 | -5.720775,15.411758 221 | -1.355304,1.667551 222 | -11.058335,31.736586 223 | 0.880071,-4.245366 224 | 1.272447,-8.836449 225 | -10.987880,25.152785 226 | -5.506870,18.124291 227 | 0.033066,-2.295762 228 | -11.208770,41.209354 229 | -6.441942,13.435512 230 | -5.377599,2.428641 231 | 2.062199,-16.408845 232 | -0.597818,1.854006 233 | -10.057083,28.683389 234 | -4.956736,17.013780 235 | 2.788877,-10.844615 236 | -0.006640,0.006134 237 | 1.227217,-11.358663 238 | 7.549581,-32.241760 239 | 2.051791,-13.551739 240 | -0.169453,0.474066 241 | -13.358208,38.926444 242 | -6.570953,22.943841 243 | -3.238282,0.498687 244 | -1.385361,-12.589466 245 | -6.571940,22.228115 246 | 3.454661,-23.739777 247 | -3.340018,9.935484 248 | 4.714531,-30.849048 249 | 6.377668,-36.311385 250 | 1.967952,-20.808697 251 | -8.079786,20.711876 252 | 2.431690,-17.259552 253 | 0.426895,-5.568809 254 | 6.142683,-34.314307 255 | 0.304959,-11.324057 256 | 1.419924,-5.506927 257 | -6.497228,18.819134 258 | -0.155303,-1.828963 259 | -3.018565,5.294369 260 | 1.392073,-22.427979 261 | -3.062126,11.010630 262 | -2.007924,-1.118085 263 | 1.966090,-21.330902 264 | -9.365779,22.676983 265 | -1.927130,6.598607 266 | 0.755943,-2.931790 267 | 6.424693,-27.697896 268 | -1.620672,-9.433911 269 | 0.175754,-2.981879 270 | -3.337291,1.946129 271 | 1.356697,-5.886511 272 | -3.729565,10.468105 273 | -7.759985,17.566378 274 | -9.969900,24.810377 275 | -11.730365,37.544387 276 | -6.416110,22.734056 277 | -2.434110,-6.025483 278 | 0.253467,-1.961150 279 | 0.496398,-2.309935 280 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TrainingDataFor_Case_4: -------------------------------------------------------------------------------- 1 | 0.887033,35.471444 2 | 1.440776,-20.363882 3 | 0.242607,14.718468 4 | 4.095615,-1.802508 5 | 0.894485,7.305649 6 | 0.233351,-7.847621 7 | 0.019794,0.940934 8 | 0.039081,-20.730682 9 | 3.360252,7.068911 10 | 2.605355,27.744209 11 | 1.796003,27.911280 12 | 3.163589,22.085922 13 | 1.425877,1.892396 14 | 1.303229,-11.201622 15 | 0.531506,4.341043 16 | 1.023910,-16.827123 17 | 0.051282,-0.946862 18 | 0.522940,-0.895757 19 | 1.013052,-17.129779 20 | 0.441774,-23.158599 21 | 0.349878,6.089486 22 | 3.854695,18.138820 23 | 4.402309,22.083578 24 | 3.300489,6.296019 25 | 0.446761,25.131808 26 | 0.321938,-2.071572 27 | 0.544745,10.859358 28 | 1.296388,39.898723 29 | 0.357979,14.315183 30 | 1.193669,21.393251 31 | 3.194533,-11.728278 32 | 3.242826,-36.320030 33 | 1.656138,6.557115 34 | 1.947016,4.739115 35 | 1.259047,-19.036561 36 | 0.583401,-17.955237 37 | 2.222450,-2.665848 38 | 4.192731,-5.564508 39 | 2.070677,4.492095 40 | 3.898470,-10.796760 41 | 0.857080,17.356951 42 | 0.093832,24.877935 43 | 1.466502,15.228567 44 | 0.158795,18.005537 45 | 2.697240,19.083390 46 | 0.264464,0.266768 47 | 0.314222,-29.305719 48 | 0.920896,-20.225935 49 | 2.799925,-3.537128 50 | 1.402762,-5.862127 51 | 1.415492,-21.112473 52 | 1.646930,-1.975508 53 | 0.212600,7.868372 54 | 0.950210,3.831385 55 | 0.657513,11.279088 56 | 1.633922,15.933643 57 | 2.371162,-26.895549 58 | 0.389219,-5.727188 59 | 0.883413,9.770063 60 | 1.882436,-22.181227 61 | 2.312857,-9.157249 62 | 4.474369,12.694934 63 | 1.944028,0.610935 64 | 1.363673,-18.281754 65 | 1.263779,39.743058 66 | 4.264762,0.267966 67 | 1.510542,-15.884441 68 | 3.651239,-14.191558 69 | 1.771645,-5.879744 70 | 0.088007,-0.746883 71 | 1.829325,5.314680 72 | 4.364961,-19.543704 73 | 0.809032,-19.022662 74 | 0.011786,0.062876 75 | 1.143610,-13.648349 76 | 1.282083,-18.612634 77 | 0.130482,-41.519969 78 | 0.203251,46.182197 79 | 1.569241,-7.505078 80 | 1.894958,20.435047 81 | 3.243503,2.450189 82 | 1.334266,-1.600464 83 | 0.005183,-0.356177 84 | 3.024961,-35.643889 85 | 2.094482,42.415891 86 | 2.511107,-24.487760 87 | 2.090616,-7.526679 88 | 4.182328,-2.631298 89 | 0.781368,23.058003 90 | 2.557342,-26.892310 91 | 3.763022,-8.411351 92 | 0.068984,-0.468812 93 | 0.569011,-30.881527 94 | 2.062171,10.022262 95 | 0.683991,-1.574088 96 | 0.313321,15.372764 97 | 0.434088,-3.637273 98 | 0.142001,2.206811 99 | 1.389155,-38.585265 100 | 0.160488,-7.874170 101 | 2.618146,-27.880422 102 | 0.997858,4.096584 103 | 0.121421,2.082871 104 | 0.000000,16.009017 105 | 0.098957,-0.062259 106 | 3.036145,-20.633620 107 | 2.347626,40.859469 108 | 0.381840,46.643503 109 | 0.759970,-22.898904 110 | 0.803923,25.281624 111 | 1.574139,-0.296753 112 | 0.396939,12.482867 113 | 1.741947,-40.254021 114 | 2.802466,23.783462 115 | 0.490864,1.837217 116 | 1.643929,7.360538 117 | 2.613774,35.040941 118 | 4.565837,9.305899 119 | 2.516668,-4.310861 120 | 0.511729,6.346454 121 | 1.716285,14.751962 122 | 0.826613,-12.670543 123 | 1.685843,-18.881640 124 | 0.031578,-0.158408 125 | 0.273748,8.248386 126 | 3.026404,-5.379948 127 | 0.605695,-5.339917 128 | 2.172564,-27.293314 129 | 0.855369,-9.108753 130 | 0.090628,-0.372062 131 | 0.541053,6.215339 132 | 2.504455,0.157362 133 | 0.995477,-10.208158 134 | 2.810559,19.359804 135 | 3.375887,-31.304859 136 | 4.196875,-10.215360 137 | 1.943319,-14.879305 138 | 0.234628,18.572751 139 | 0.681321,15.216872 140 | -1.059590,-18.712944 141 | -1.778285,43.316002 142 | -1.306135,-41.075070 143 | -4.528961,7.465165 144 | -1.033348,-7.408959 145 | -0.766558,2.924135 146 | -2.230491,-13.765040 147 | -0.022741,-7.236172 148 | -3.281609,23.842286 149 | -0.019482,15.502568 150 | -4.112062,4.670564 151 | -1.443892,6.356287 152 | -0.767195,-25.800837 153 | -3.206783,20.350864 154 | -1.157453,-38.925213 155 | -0.772873,-40.515433 156 | -3.309236,6.097469 157 | -1.072527,-46.604672 158 | -0.541117,10.620028 159 | -0.034954,-0.068956 160 | -1.586204,-11.831817 161 | -0.024113,-1.586906 162 | -2.591853,-6.136434 163 | -1.482618,9.805794 164 | -0.055338,14.671882 165 | -0.178376,12.257197 166 | -1.193886,35.231351 167 | -0.985082,-8.575271 168 | -0.145100,0.063859 169 | -1.805018,-3.678913 170 | -0.301440,-1.372470 171 | -0.666780,-37.508620 172 | -1.571694,32.339027 173 | -0.385056,8.898119 174 | -0.035014,3.082707 175 | -3.701533,20.653267 176 | -2.719594,37.432005 177 | -1.407666,-24.499841 178 | -3.566575,16.510114 179 | -2.694838,-18.562688 180 | -1.640426,4.211898 181 | -1.886805,-7.061981 182 | -0.273383,-39.491711 183 | -2.872290,-40.060604 184 | -0.335629,10.789056 185 | -3.301052,22.132005 186 | -2.942794,-12.081280 187 | -0.993704,6.219005 188 | -1.527658,26.205688 189 | -4.093993,0.257237 190 | -3.592829,9.224818 191 | -0.273859,-4.500654 192 | -1.420696,-30.191335 193 | -4.588370,11.474120 194 | -0.083334,-0.854549 195 | -3.504071,21.021304 196 | -3.720887,21.378771 197 | -4.931076,5.287210 198 | -1.192518,-9.865364 199 | -0.181329,-7.879330 200 | -1.293589,28.411498 201 | -0.700521,-9.515536 202 | -0.257764,37.235543 203 | -3.570452,-22.345335 204 | -0.025336,6.717437 205 | -0.074717,-2.987862 206 | -1.392928,2.930282 207 | -3.577625,7.291766 208 | -0.138712,-0.569467 209 | -0.074355,-3.230971 210 | -0.087963,-0.407190 211 | -0.989995,0.998618 212 | -1.186953,13.809344 213 | -3.739248,-8.605242 214 | -0.069924,-0.419484 215 | -1.147308,-23.234419 216 | -2.956574,-7.789528 217 | -2.808368,2.832829 218 | -3.151973,6.837844 219 | -2.323564,29.955209 220 | -1.536988,16.367261 221 | -0.877529,1.961509 222 | -2.467498,33.517296 223 | -0.248698,-4.328488 224 | -1.057951,-8.864688 225 | -4.103457,27.139597 226 | -0.628316,18.932003 227 | -0.562247,-2.226094 228 | -0.161075,42.706223 229 | -2.745072,14.645006 230 | -4.565783,3.737712 231 | -2.254990,-16.383464 232 | -0.097596,1.945559 233 | -2.290588,30.308991 234 | -0.384349,17.716947 235 | -0.112944,-11.196909 236 | -0.004826,0.007643 237 | -1.754438,-11.289253 238 | -1.052446,-33.097124 239 | -1.525570,-13.621017 240 | -0.040982,0.501770 241 | -2.828133,41.057416 242 | -0.408751,23.862737 243 | -2.998871,1.319823 244 | -4.596549,-11.801933 245 | -0.594947,23.171654 246 | -2.807360,-23.824996 247 | -0.654717,10.461401 248 | -3.430433,-31.018102 249 | -3.237724,-36.724766 250 | -3.484792,-20.609001 251 | -2.443845,22.097339 252 | -2.118268,-17.300815 253 | -1.028965,-5.489546 254 | -2.947820,-34.734919 255 | -2.636314,-11.017128 256 | -0.053756,-5.686787 257 | -1.405090,19.859494 258 | -0.623382,-1.726447 259 | -1.545427,5.895230 260 | -4.460149,-22.024059 261 | -0.108026,11.427988 262 | -2.228887,-0.560298 263 | -3.621746,-21.112931 264 | -3.177413,24.328325 265 | -0.153620,6.872543 266 | -0.028619,-3.027544 267 | -0.962966,-28.416946 268 | -4.007125,-8.692997 269 | -0.602002,-2.925763 270 | -2.719880,2.743570 271 | -0.213073,-6.037072 272 | -0.893138,11.076695 273 | -2.949057,18.976250 274 | -3.208786,26.545384 275 | -1.613460,39.301134 276 | -0.313480,23.620023 277 | -3.910680,-5.190176 278 | -0.262753,-1.959927 279 | -0.118371,-2.359704 280 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TrainingDataFor_Case_5: -------------------------------------------------------------------------------- 1 | 10.037494,34.033203 2 | -3.878877,-20.042899 3 | 4.043760,14.154157 4 | 3.489537,-2.801112 5 | 2.754847,6.825205 6 | -1.805714,-7.640616 7 | 0.262652,0.903750 8 | -5.327746,-20.034416 9 | 5.075323,5.958347 10 | 9.697309,26.124533 11 | 8.958776,26.495387 12 | 8.772049,20.514565 13 | 1.867080,1.458870 14 | -1.640371,-11.157236 15 | 1.636940,4.055561 16 | -3.366159,-16.518760 17 | -0.195531,-0.927872 18 | 0.273283,-1.000582 19 | -3.454980,-16.808293 20 | -5.567166,-22.483828 21 | 1.914031,5.791437 22 | 8.418022,16.523086 23 | 9.967955,20.191696 24 | 4.817557,5.227258 25 | 6.936128,24.159832 26 | -0.225194,-2.084308 27 | 3.336792,10.348344 28 | 11.578764,38.203677 29 | 4.050823,13.734753 30 | 6.689977,20.355350 31 | 0.050180,-12.155453 32 | -6.267986,-35.921760 33 | 3.296813,5.905047 34 | 3.107246,4.073708 35 | -3.710878,-18.713771 36 | -4.083635,-17.494422 37 | 1.456749,-3.150224 38 | 2.609666,-6.460061 39 | 3.162760,3.803100 40 | 0.971225,-11.437868 41 | 5.320185,16.543698 42 | 6.529518,24.005955 43 | 5.357975,14.330107 44 | 4.813560,17.350914 45 | 7.544478,17.735042 46 | 0.324498,0.189230 47 | -7.281363,-28.388478 48 | -4.345340,-19.775099 49 | 1.789044,-4.141277 50 | -0.162266,-6.025441 51 | -4.097050,-20.759440 52 | 1.079514,-2.334451 53 | 2.241840,7.545239 54 | 1.909468,3.454901 55 | 3.554352,10.724585 56 | 5.702177,14.967827 57 | -4.670714,-26.592807 58 | -1.106348,-5.632776 59 | 3.381990,9.208512 60 | -3.922630,-21.912631 61 | -0.136022,-9.443834 62 | 7.607600,11.104313 63 | 2.035908,0.086967 64 | -3.414459,-18.011763 65 | 11.506977,38.061756 66 | 4.188798,-0.844966 67 | -2.652125,-15.734149 68 | -0.146219,-14.653003 69 | 0.189488,-6.137932 70 | -0.108299,-0.744211 71 | 3.142533,4.660123 72 | -0.842054,-20.007504 73 | -4.141962,-18.583873 74 | 0.027658,0.057683 75 | -2.427810,-13.479280 76 | -3.578907,-18.310251 77 | -10.620123,-40.138981 78 | 12.149158,44.555972 79 | -0.426687,-7.655498 80 | 7.119368,19.248289 81 | 3.767139,1.527220 82 | 0.874572,-1.891263 83 | -0.087179,-0.345382 84 | -6.303429,-35.212271 85 | 13.001155,40.428513 86 | -3.912356,-24.303282 87 | 0.071332,-7.811305 88 | 3.358789,-3.624105 89 | 6.722593,22.070087 90 | -4.490039,-26.637866 91 | 1.457782,-9.098683 92 | -0.054704,-0.470692 93 | -7.443105,-29.976536 94 | 4.585856,9.147032 95 | 0.253280,-1.697482 96 | 4.281409,14.767856 97 | -0.522098,-3.625686 98 | 0.708328,2.094863 99 | -8.644781,-37.630044 100 | -1.882965,-7.647401 101 | -4.687049,-27.608046 102 | 2.024131,3.698732 103 | 0.656370,1.980473 104 | 4.143439,15.463523 105 | 0.079472,-0.085749 106 | -2.407683,-20.716359 107 | 12.842842,38.859606 108 | 12.441056,44.955337 109 | -5.192598,-22.315337 110 | 7.319896,24.212103 111 | 1.443696,-0.694059 112 | 3.614218,11.954788 113 | -8.735916,-39.333248 114 | 8.862587,22.247729 115 | 0.949644,1.647570 116 | 3.492961,6.684254 117 | 11.593975,33.170455 118 | 6.818803,7.807082 119 | 1.315181,-4.815333 120 | 2.136875,5.997759 121 | 5.475893,13.805093 122 | -2.480931,-12.452747 123 | -3.258529,-18.674592 124 | -0.010497,-0.161183 125 | 2.399260,7.896478 126 | 1.530849,-5.979922 127 | -0.797016,-5.314729 128 | -4.965494,-26.925618 129 | -1.531296,-9.019765 130 | -0.008757,-0.382841 131 | 2.131266,5.863521 132 | 2.459845,-0.496201 133 | -1.680509,-10.117972 134 | 7.725478,17.972708 135 | -4.841438,-31.111915 136 | 1.409940,-10.953511 137 | -1.973945,-14.875273 138 | 5.033615,17.879174 139 | 4.596522,14.522031 140 | -5.866752,-17.801074 141 | 9.493315,42.300299 142 | -11.892640,-39.337419 143 | -2.442513,8.382977 144 | -2.915717,-6.889055 145 | 0.016384,3.022897 146 | -5.717144,-12.718714 147 | -1.894825,-6.983720 148 | 3.001047,23.879223 149 | 3.993542,14.979373 150 | -2.763116,5.575698 151 | 0.250435,6.513408 152 | -7.418802,-24.723130 153 | 2.169677,20.487402 154 | -11.192600,-37.299298 155 | -11.232704,-38.934869 156 | -1.618336,6.746196 157 | -13.098158,-44.739066 158 | 2.225986,10.398211 159 | -0.051610,-0.057560 160 | -4.594455,-11.018118 161 | -0.434013,-1.526592 162 | -4.091764,-5.256519 163 | 1.105827,9.855399 164 | 3.743910,14.186273 165 | 3.000098,11.885711 166 | 7.965339,34.339872 167 | -3.170960,-8.028118 168 | -0.123627,0.099238 169 | -2.695686,-3.086384 170 | -0.646390,-1.247686 171 | -10.352005,-36.057970 172 | 6.851816,31.643886 173 | 1.931067,8.694582 174 | 0.764042,2.986728 175 | 1.770053,20.907551 176 | 7.061189,36.860424 177 | -7.700726,-23.300698 178 | 0.828085,16.870642 179 | -7.407391,-17.232704 180 | -0.494410,4.492955 181 | -3.650288,-6.333009 182 | -10.485274,-38.075307 183 | -13.142866,-37.952169 184 | 2.468221,10.508295 185 | 2.539613,22.232251 186 | -5.969386,-10.907969 187 | 0.649752,6.264287 188 | 5.306927,25.708138 189 | -3.887915,1.308075 190 | -1.082848,9.840382 191 | -1.429383,-4.276418 192 | -9.186380,-28.794887 193 | -1.462304,12.270707 194 | -0.301668,-0.803863 195 | 2.056041,21.211941 196 | 1.939132,21.613344 197 | -3.394623,6.383309 198 | -3.705228,-9.220563 199 | -2.214471,-7.563916 200 | 6.103926,27.778205 201 | -3.139453,-9.009994 202 | 9.388287,36.033487 203 | -9.232190,-20.659835 204 | 1.714128,6.495103 205 | -0.845487,-2.866715 206 | -0.587052,3.190951 207 | -1.568472,7.969262 208 | -0.281375,-0.514161 209 | -0.908059,-3.101634 210 | -0.190354,-0.370549 211 | -0.697800,1.220820 212 | 2.427613,13.646008 213 | -5.839037,-7.344237 214 | -0.176112,-0.387093 215 | -7.121724,-22.145780 216 | -4.871909,-6.758888 217 | -1.979485,3.463162 218 | -1.274808,7.420641 219 | 5.508588,29.535893 220 | 2.751542,16.207362 221 | -0.339952,2.121794 222 | 6.291494,33.013857 223 | -1.360519,-4.116631 224 | -3.316253,-8.288813 225 | 3.060609,27.276891 226 | 4.293056,18.449531 227 | -1.119245,-2.004722 228 | 10.897597,41.292733 229 | 1.138871,14.856466 230 | -3.442817,4.792065 231 | -6.418506,-15.241576 232 | 0.409277,1.904525 233 | 5.632006,29.869085 234 | 4.214231,17.212733 235 | -3.007069,-10.786151 236 | -0.002683,0.008632 237 | -4.616531,-10.450499 238 | -9.582751,-31.696973 239 | -4.998966,-12.762046 240 | 0.090282,0.495279 241 | 7.894674,40.390393 242 | 5.781308,23.155426 243 | -2.555091,2.051016 244 | -7.494491,-10.210117 245 | 5.422591,22.536082 246 | -8.878064,-22.286580 247 | 2.075202,10.274390 248 | -11.341620,-29.073325 249 | -12.632470,-34.635416 250 | -8.700052,-19.004836 251 | 3.358639,21.976904 252 | -6.523871,-16.163056 253 | -2.414703,-5.036178 254 | -11.837434,-32.788403 255 | -5.397926,-9.959400 256 | -1.523773,-5.479101 257 | 3.782803,19.546462 258 | -1.048978,-1.506277 259 | 0.033030,6.094341 260 | -10.008419,-20.119236 261 | 2.853436,11.066548 262 | -2.297956,0.035672 263 | -8.962767,-19.456148 264 | 3.227489,24.321733 265 | 1.630360,6.678126 266 | -0.811230,-2.916976 267 | -8.285001,-27.199428 268 | -6.120498,-7.359670 269 | -1.338733,-2.670260 270 | -1.917114,3.354042 271 | -1.768322,-5.776216 272 | 2.004154,10.930427 273 | 2.062844,19.092922 274 | 3.771002,26.471367 275 | 8.613400,38.379575 276 | 5.810513,22.896325 277 | -5.120743,-4.001166 278 | -0.761066,-1.825139 279 | -0.725074,-2.248662 280 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TrainingDataFor_Case_6: -------------------------------------------------------------------------------- 1 | 18.503915,30.275655 2 | -8.934192,-18.356027 3 | 7.569338,12.625263 4 | 2.645653,-3.608825 5 | 4.427471,5.879635 6 | -3.721722,-6.912915 7 | 0.487610,0.804976 8 | -10.331496,-17.972838 9 | 6.444519,4.441731 10 | 16.128408,22.724513 11 | 15.511024,23.273876 12 | 13.782709,17.545175 13 | 2.181044,0.925924 14 | -4.472182,-10.352503 15 | 2.630819,3.493700 16 | -7.526830,-15.084671 17 | -0.429020,-0.845648 18 | 0.005001,-1.037219 19 | -7.687561,-15.341350 20 | -11.196712,-20.276822 21 | 3.347747,5.098711 22 | 12.407674,13.781331 23 | 14.854301,16.923785 24 | 6.006317,3.802268 25 | 12.952810,21.541404 26 | -0.756979,-1.955003 27 | 5.901442,9.132108 28 | 21.072067,33.905114 29 | 7.467611,12.218322 30 | 11.730373,17.930265 31 | -3.097592,-11.754253 32 | -15.351646,-33.075482 33 | 4.712816,4.850559 34 | 4.055723,3.130685 35 | -8.427914,-17.115669 36 | -8.472378,-15.841392 37 | 0.591774,-3.419917 38 | 0.848757,-6.915371 39 | 4.039306,2.854930 40 | -2.022206,-11.299503 41 | 9.420729,14.603020 42 | 12.520229,21.498008 43 | 8.884311,12.455075 44 | 9.140289,15.513855 45 | 11.877573,15.178080 46 | 0.362417,0.098796 47 | -14.380735,-25.536609 48 | -9.315448,-17.976622 49 | 0.656242,-4.463205 50 | -1.716236,-5.778132 51 | -9.330384,-18.991684 52 | 0.438530,-2.534305 53 | 4.118303,6.707910 54 | 2.738599,2.842971 55 | 6.208967,9.439220 56 | 9.381839,12.981978 57 | -11.394288,-24.477809 58 | -2.526520,-5.154500 59 | 5.650089,8.019417 60 | -9.460376,-20.150724 61 | -2.575631,-9.086838 62 | 10.222384,8.756951 63 | 1.989045,-0.442928 64 | -7.959902,-16.514300 65 | 20.965993,33.786609 66 | 3.827375,-1.900315 67 | -6.634053,-14.511601 68 | -3.933713,-14.115869 69 | -1.405583,-5.977830 70 | -0.297225,-0.690823 71 | 4.241582,3.687986 72 | -5.991685,-19.107825 73 | -8.810689,-16.878624 74 | 0.041645,0.048560 75 | -5.833779,-12.391621 76 | -8.196001,-16.760055 77 | -20.646984,-36.022588 78 | 23.267119,39.893330 79 | -2.393536,-7.284209 80 | 11.858605,16.749791 81 | 4.034051,0.500174 82 | 0.355276,-2.053176 83 | -0.173599,-0.311050 84 | -15.202251,-32.380994 85 | 23.021820,35.685998 86 | -10.069198,-22.462576 87 | -1.952813,-7.563603 88 | 2.306354,-4.369935 89 | 12.205685,19.578132 90 | -11.231432,-24.568095 91 | -0.946803,-9.165955 92 | -0.174665,-0.440495 93 | -14.947986,-27.028692 94 | 6.797023,7.648448 95 | -0.194691,-1.705196 96 | 7.957726,13.156543 97 | -1.442705,-3.367015 98 | 1.226382,1.840154 99 | -18.089589,-34.110397 100 | -3.798098,-6.899475 101 | -11.672830,-25.454227 102 | 2.912462,3.048817 103 | 1.146589,1.743109 104 | 8.004509,13.864216 105 | 0.054570,-0.103396 106 | -7.687431,-19.387312 107 | 22.462839,34.211525 108 | 23.652435,40.203538 109 | -10.791299,-20.211018 110 | 13.337030,21.492567 111 | 1.214867,-1.044065 112 | 6.585193,10.612011 113 | -18.618440,-35.731979 114 | 14.318738,19.195850 115 | 1.343709,1.345645 116 | 5.103954,5.552449 117 | 19.784065,29.039458 118 | 8.607080,5.776226 119 | 0.024068,-4.991649 120 | 3.616397,5.240326 121 | 8.862327,11.917431 122 | -5.619404,-11.386318 123 | -7.980837,-17.194901 124 | -0.051856,-0.152974 125 | 4.361266,7.006438 126 | -0.069031,-6.172374 127 | -2.145412,-4.927351 128 | -11.765161,-24.722986 129 | -3.813605,-8.316096 130 | -0.107545,-0.367530 131 | 3.576235,5.112115 132 | 2.247602,-1.115948 133 | -4.241971,-9.338263 134 | 12.113918,15.360802 135 | -12.728826,-28.798746 136 | -1.473079,-10.945199 137 | -5.756689,-13.857516 138 | 9.489570,15.967160 139 | 8.198477,12.837537 140 | -10.274104,-15.676090 141 | 20.117961,38.401901 142 | -21.668681,-34.918987 143 | -0.189613,8.729503 144 | -4.599385,-5.899673 145 | 0.798209,2.915654 146 | -8.814182,-10.805629 147 | -3.637780,-6.255339 148 | 9.079186,22.288830 149 | 7.734412,13.435359 150 | -1.225869,6.100858 151 | 1.927696,6.226652 152 | -13.564829,-21.960583 153 | 7.398277,19.227757 154 | -20.464990,-33.131497 155 | -20.927044,-34.700957 156 | 0.182852,6.935181 157 | -24.231172,-39.824566 158 | 4.841393,9.467773 159 | -0.064749,-0.042241 160 | -7.289602,-9.453552 161 | -0.814335,-1.362244 162 | -5.312828,-4.018381 163 | 3.618912,9.233375 164 | 7.288017,12.733892 165 | 5.974120,10.704232 166 | 16.581739,31.108188 167 | -5.140742,-6.933862 168 | -0.093730,0.127854 169 | -3.402648,-2.283523 170 | -0.947290,-1.037874 171 | -19.331758,-32.150028 172 | 14.808387,28.792266 173 | 4.115591,7.898525 174 | 1.511030,2.687209 175 | 7.121012,19.737020 176 | 16.360765,33.776865 177 | -13.468995,-20.513652 178 | 5.166313,16.081465 179 | -11.615142,-14.728340 180 | 0.685298,4.467824 181 | -5.165011,-5.172453 182 | -19.982612,-34.064134 183 | -22.517778,-33.257356 184 | 5.103865,9.511411 185 | 8.207208,20.817405 186 | -8.589174,-8.991298 187 | 2.248929,5.882668 188 | 11.779854,23.458621 189 | -3.416883,2.269770 190 | 1.500927,9.785341 191 | -2.487496,-3.760751 192 | -16.326027,-25.436115 193 | 1.763416,12.231065 194 | -0.499444,-0.698395 195 | 7.476037,19.957019 196 | 7.467003,20.375003 197 | -1.626832,7.044396 198 | -5.965432,-7.947397 199 | -4.096701,-6.733035 200 | 13.085468,25.251874 201 | -5.364437,-7.890436 202 | 18.394541,32.375808 203 | -14.264770,-17.566402 204 | 3.336777,5.830139 205 | -1.558638,-2.550206 206 | 0.258830,3.234162 207 | 0.547569,8.103666 208 | -0.404862,-0.423816 209 | -1.679879,-2.760925 210 | -0.279773,-0.308655 211 | -0.358052,1.359825 212 | 5.876741,12.552719 213 | -7.540905,-5.582734 214 | -0.270298,-0.328322 215 | -12.610807,-19.547943 216 | -6.455232,-5.267642 217 | -1.015703,3.857486 218 | 0.689233,7.497733 219 | 12.965339,27.103754 220 | 6.852560,14.942958 221 | 0.220792,2.137481 222 | 14.621732,30.260579 223 | -2.379623,-3.624232 224 | -5.348557,-7.148069 225 | 10.016100,25.555309 226 | 8.921864,16.709754 227 | -1.599968,-1.646731 228 | 21.213616,37.065211 229 | 4.945201,14.055483 230 | -2.085228,5.519846 231 | -10.144611,-13.061001 232 | 0.888259,1.733702 233 | 13.170788,27.393650 234 | 8.525617,15.535500 235 | -5.696267,-9.640335 236 | -0.000358,0.009032 237 | -7.164014,-8.899561 238 | -17.460007,-28.136727 239 | -8.131691,-11.033362 240 | 0.215394,0.455036 241 | 18.079473,36.970832 242 | 11.577380,20.870111 243 | -1.937187,2.642436 244 | -9.881695,-7.922499 245 | 11.070588,20.364714 246 | -14.343743,-19.229372 247 | 4.663699,9.387197 248 | -18.479894,-25.147248 249 | -21.166334,-30.185719 250 | -13.322419,-16.105523 251 | 8.932237,20.358779 252 | -10.484882,-13.923811 253 | -3.635882,-4.239603 254 | -19.920347,-28.607412 255 | -7.791679,-8.222956 256 | -2.889947,-4.898024 257 | 8.712903,17.901371 258 | -1.403088,-1.183456 259 | 1.609236,5.878133 260 | -14.874632,-16.843320 261 | 5.620441,9.950941 262 | -2.210422,0.629211 263 | -13.692990,-16.473461 264 | 9.412442,22.657654 265 | 3.303233,6.028606 266 | -1.538557,-2.607621 267 | -15.042426,-24.128314 268 | -7.816770,-5.524794 269 | -1.984230,-2.232784 270 | -0.983700,3.735942 271 | -3.203062,-5.121721 272 | 4.764867,10.039269 273 | 6.934167,17.908443 274 | 10.493802,24.593370 275 | 18.253270,34.842511 276 | 11.538530,20.612280 277 | -5.981836,-2.539484 278 | -1.207514,-1.565970 279 | -1.282364,-1.984378 280 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/Original_Files/TrainingDataFor_Case_7: -------------------------------------------------------------------------------- 1 | 25.709326,24.454871 2 | -13.380656,-15.418221 3 | 10.579077,10.235979 4 | 1.621472,-4.170603 5 | 5.798370,4.533377 6 | -5.384102,-5.714110 7 | 0.679338,0.651344 8 | -14.631171,-14.686440 9 | 7.374532,2.622418 10 | 21.460382,17.775854 11 | 21.006221,18.466290 12 | 17.854100,13.380110 13 | 2.346374,0.329878 14 | -6.999221,-8.842264 15 | 3.445413,2.693749 16 | -11.174559,-12.622586 17 | -0.633271,-0.705795 18 | -0.263621,-1.003171 19 | -11.396247,-12.828919 20 | -16.063221,-16.687983 21 | 4.553318,4.058516 22 | 15.551764,10.100401 23 | 18.728350,12.502545 24 | 6.785756,2.118160 25 | 18.086779,17.454964 26 | -1.237178,-1.692467 27 | 8.063919,7.293533 28 | 29.129342,27.295973 29 | 10.375492,9.869233 30 | 15.971365,14.283262 31 | -6.034269,-10.552021 32 | -23.389116,-27.975164 33 | 5.807647,3.465514 34 | 4.727809,1.974312 35 | -12.570601,-14.351162 36 | -12.283743,-13.108797 37 | -0.313530,-3.456549 38 | -0.969993,-6.899410 39 | 4.640581,1.712202 40 | -4.877828,-10.391097 41 | 12.879265,11.667170 42 | 17.657706,17.525008 43 | 11.805196,9.731249 44 | 12.844122,12.619552 45 | 15.401231,11.586758 46 | 0.375638,0.001629 47 | -20.500084,-20.944462 48 | -13.650724,-14.953068 49 | -0.521281,-4.480973 50 | -3.153247,-5.137052 51 | -13.927869,-15.929677 52 | -0.232339,-2.561451 53 | 5.714110,5.413448 54 | 3.381098,2.037298 55 | 8.440451,7.510587 56 | 12.422144,10.111430 57 | -17.341361,-20.694689 58 | -3.774514,-4.324953 59 | 7.533145,6.283811 60 | -14.353413,-17.015580 61 | -4.839716,-8.110589 62 | 12.140531,5.812817 63 | 1.806632,-0.942639 64 | -11.962890,-13.891414 65 | 28.996212,27.208959 66 | 3.205123,-2.826161 67 | -10.163882,-12.300110 68 | -7.453131,-12.616763 69 | -2.904865,-5.410349 70 | -0.465896,-0.590356 71 | 5.051575,2.464518 72 | -10.732992,-16.905980 73 | -12.878981,-14.023125 74 | 0.052794,0.036126 75 | -8.842186,-10.459494 76 | -12.254550,-14.067689 77 | -29.266787,-29.451316 78 | 32.799465,32.512025 79 | -4.197270,-6.416512 80 | 15.789698,13.109823 81 | 4.026048,-0.560958 82 | -0.188230,-2.075168 83 | -0.248190,-0.255520 84 | -23.065065,-27.343006 85 | 31.473586,28.511542 86 | -15.539841,-19.091082 87 | -3.843877,-6.800454 88 | 1.096744,-4.817962 89 | 16.856980,15.751960 90 | -17.207421,-20.824049 91 | -3.286865,-8.608582 92 | -0.282721,-0.380279 93 | -21.434186,-22.238889 94 | 8.544984,5.628634 95 | -0.629394,-1.596703 96 | 11.091737,10.648634 97 | -2.264994,-2.878887 98 | 1.660861,1.460041 99 | -26.301622,-28.266184 100 | -5.454397,-5.681361 101 | -17.863127,-21.565744 102 | 3.602315,2.191130 103 | 1.558669,1.386955 104 | 11.320085,11.320085 105 | 0.025950,-0.113997 106 | -12.443294,-16.737052 107 | 30.552030,27.231985 108 | 33.251939,32.711935 109 | -15.654590,-16.729350 110 | 18.445268,17.308348 111 | 0.903248,-1.322920 112 | 9.107399,8.546042 113 | -27.232149,-29.695634 114 | 18.799090,14.835805 115 | 1.646201,0.952015 116 | 6.367120,4.042253 117 | 26.625904,22.929469 118 | 9.808798,3.351730 119 | -1.268686,-4.827791 120 | 4.849467,4.125774 121 | 11.644809,9.217615 122 | -8.374923,-9.543930 123 | -12.159265,-14.543407 124 | -0.089682,-0.134340 125 | 6.026059,5.638921 126 | -1.664207,-5.944189 127 | -3.347601,-4.204183 128 | -17.763053,-20.835523 129 | -5.836024,-7.045698 130 | -0.199004,-0.327172 131 | 4.777491,4.012326 132 | 1.882188,-1.659645 133 | -6.514349,-7.922166 134 | 15.676814,11.702083 135 | -19.748766,-24.522990 136 | -4.255711,-10.190989 137 | -9.147123,-11.895392 138 | 13.298826,12.967011 139 | 11.241720,10.278186 140 | -13.981293,-12.482806 141 | 29.371601,31.886476 142 | -29.968038,-28.120884 143 | 2.076210,8.481128 144 | -5.969612,-4.508238 145 | 1.525637,2.609714 146 | -11.310549,-8.156158 147 | -5.132826,-5.100666 148 | 14.538594,19.179491 149 | 10.948195,10.975747 150 | 0.394920,6.210254 151 | 3.473587,5.515560 152 | -18.786436,-17.701458 153 | 12.122696,16.657772 154 | -28.342725,-26.705839 155 | -29.195241,-28.102233 156 | 1.971578,6.651545 157 | -33.712871,-32.196088 158 | 7.126866,7.892122 159 | -0.073475,-0.024044 160 | -9.487974,-7.244742 161 | -1.139162,-1.105061 162 | -6.171831,-2.506397 163 | 5.885374,7.982112 164 | 10.335458,10.413717 165 | 8.541016,8.793278 166 | 24.068122,25.756532 167 | -6.760191,-5.367074 168 | -0.057446,0.147756 169 | -3.877725,-1.325044 170 | -1.183633,-0.757333 171 | -26.994084,-26.051115 172 | 21.755790,23.978501 173 | 6.019644,6.564196 174 | 2.155044,2.204561 175 | 11.986686,17.221444 176 | 24.545381,28.391468 177 | -18.319373,-16.328634 178 | 9.152464,14.196362 179 | -15.031340,-11.220264 180 | 1.818305,4.138218 181 | -6.327747,-3.659402 182 | -28.118168,-27.731546 183 | -30.358141,-26.296109 184 | 7.391690,7.866340 185 | 13.315495,17.983887 186 | -10.623625,-6.461885 187 | 3.694845,5.100156 188 | 17.450003,19.610437 189 | -2.712996,3.076784 190 | 3.982417,9.063445 191 | -3.376090,-2.988795 192 | -22.353082,-20.343914 193 | 4.868961,11.357896 194 | -0.663183,-0.545332 195 | 12.386554,17.342059 196 | 12.486010,17.748139 197 | 0.251825,7.225419 198 | -7.819103,-6.132628 199 | -5.699747,-5.443308 200 | 19.175257,21.004668 201 | -7.223843,-6.233157 202 | 26.147238,26.511772 203 | -18.325229,-13.275847 204 | 4.732030,4.767861 205 | -2.165571,-2.059905 206 | 1.087073,3.056971 207 | 2.626294,7.685819 208 | -0.500758,-0.304589 209 | -2.337219,-2.232064 210 | -0.350126,-0.225728 211 | 0.006097,1.406161 212 | 8.925378,10.603983 213 | -8.728873,-3.440778 214 | -0.346064,-0.247176 215 | -17.240484,-15.617946 216 | -7.598641,-3.417414 217 | 0.017297,3.988929 218 | 2.606304,7.063868 219 | 19.538524,22.824540 220 | 10.486586,12.660216 221 | 0.766490,2.007503 222 | 21.955523,25.445092 223 | -3.236559,-2.884847 224 | -7.016366,-5.520196 225 | 16.289011,22.092176 226 | 12.942661,13.831235 227 | -1.971655,-1.176518 228 | 30.083963,30.311757 229 | 8.414524,12.296642 230 | -0.585535,5.871458 231 | -13.179377,-9.990339 232 | 1.306707,1.444729 233 | 19.812003,23.051384 234 | 12.255997,12.799549 235 | -7.997274,-7.837546 236 | 0.001992,0.008817 237 | -9.223282,-6.742133 238 | -24.147393,-22.659009 239 | -10.710255,-8.552773 240 | 0.325826,0.383783 241 | 27.032185,31.031769 242 | 16.584472,17.162533 243 | -1.187266,3.053778 244 | -11.595478,-5.094976 245 | 15.964143,16.805525 246 | -18.831919,-14.861713 247 | 6.934373,7.860282 248 | -24.358793,-19.507428 249 | -28.257748,-23.678915 250 | -17.036884,-12.108645 251 | 13.897118,17.353238 252 | -13.731366,-10.735682 253 | -4.609283,-3.154107 254 | -26.645720,-22.476873 255 | -9.654441,-5.926131 256 | -4.059177,-3.983154 257 | 13.049234,15.036332 258 | -1.661580,-0.779985 259 | 3.075776,5.261339 260 | -18.727163,-12.419560 261 | 8.004422,8.157194 262 | -1.972252,1.179871 263 | -17.490058,-12.368135 264 | 14.955953,19.449494 265 | 4.750996,4.968247 266 | -2.161033,-2.120560 267 | -20.774735,-19.412895 268 | -8.980342,-3.313412 269 | -2.494506,-1.643147 270 | 0.016752,3.863243 271 | -4.419519,-4.118189 272 | 7.200862,8.463951 273 | 11.332937,15.503533 274 | 16.501467,21.039375 275 | 26.649210,28.930987 276 | 16.480214,16.923542 277 | -6.435277,-0.904740 278 | -1.571672,-1.200083 279 | -1.752264,-1.584861 280 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/ToyData.m: -------------------------------------------------------------------------------- 1 | clear all 2 | clc 3 | cla 4 | 5 | NumberOfPoints = 25; 6 | 7 | M(1,1) = rand(1); 8 | M(1,2) = (1-M(1,1))*rand(1); 9 | factor = 5; 10 | elementCounter = 2; 11 | sizeOfM = size(M); 12 | while (sizeOfM(1) < NumberOfPoints) 13 | x = rand(1); 14 | x = -1+2*x; 15 | y_bound = 1 - x^2; 16 | y_bound = sqrt(y_bound); 17 | y = -1*y_bound + 2*y_bound*rand(1); 18 | 19 | r = x^2 + y^2; 20 | if r <= 1 21 | M(elementCounter, 1) = x; 22 | M(elementCounter, 2) = factor*y; 23 | elementCounter = elementCounter +1; 24 | end 25 | sizeOfM = size(M); 26 | end 27 | 28 | plot(M(:,1),M(:,2),'r*') 29 | 30 | 31 | Labels = zeros(NumberOfPoints,1); 32 | positiveExampleCounter = 1; 33 | negativeExampleCounter = 1; 34 | for i=1:NumberOfPoints 35 | if M(i,1) >= 0 36 | Labels(i) = 1; 37 | PositiveExamples(positiveExampleCounter, : ) = M(i, : ); 38 | positiveExampleCounter = positiveExampleCounter + 1; 39 | else 40 | NegativeExamples(negativeExampleCounter, : ) = M(i, : ); 41 | negativeExampleCounter = negativeExampleCounter + 1; 42 | end 43 | end 44 | 45 | Elipse = calculateEllipse(0, 0, 1, 5, 0, 10000); 46 | %Elipse = Elipse'; 47 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5); hold on; plot(PositiveExamples(:,1),PositiveExamples(:,2),'r*');hold on; plot(NegativeExamples(:,1),NegativeExamples(:,2),'b*') 48 | %plot(PositiveExamples(:,1),PositiveExamples(:,2),'r*');hold on; plot(NegativeExamples(:,1),NegativeExamples(:,2),'b*') 49 | 50 | 51 | angleCounter = 1; 52 | for rotation_angle = -1.0*pi/4:pi/12:pi/4 53 | RotationMatrix= [ cos(rotation_angle) -sin(rotation_angle); sin(rotation_angle) cos(rotation_angle)]; 54 | RotatedPositiveExamples = zeros(length(PositiveExamples) ,2); 55 | for i = 1:1:length(PositiveExamples ) 56 | RotatedPositiveExamples(i, : ) = PositiveExamples(i, :) * RotationMatrix; 57 | end 58 | 59 | RotatedNegativeExamples = zeros(length(NegativeExamples) ,2); 60 | for i = 1:1:length(NegativeExamples ) 61 | RotatedNegativeExamples(i, : ) = NegativeExamples(i, :) * RotationMatrix; 62 | end 63 | 64 | RotatedElipse = zeros(length(Elipse) ,2); 65 | for i = 1:1:length(Elipse ) 66 | RotatedElipse(i, : ) = Elipse(i, :) * RotationMatrix; 67 | end 68 | 69 | 70 | %plot(RotatedElipse(:,1),RotatedElipse(:,2)); hold on; plot(RotatedPositiveExamples(:,1),RotatedPositiveExamples(:,2),'r*');hold on; plot(RotatedNegativeExamples(:,1),RotatedNegativeExamples(:,2),'b*') 71 | %pbaspect([4*r1 r2 1 ]); 72 | TensorOfRotationMatrix(angleCounter,:,:) = RotationMatrix; 73 | TensorOfRotatedPositiveExamples(angleCounter,:,:) = RotatedPositiveExamples; 74 | TensorOfRotatedNegativeExamples(angleCounter,:,:) = RotatedNegativeExamples; 75 | TensorOfRotatedElipse(angleCounter,:,:) = RotatedElipse; 76 | 77 | angleCounter = angleCounter + 1; 78 | clear RotationMatrix; 79 | clear RotatedPositiveExamples; 80 | clear RotatedNegativeExamples; 81 | clear RotatedElipse; 82 | end 83 | 84 | for numberOfTasks = 1:1:angleCounter-1 85 | plot(TensorOfRotatedElipse(numberOfTasks,:,1),TensorOfRotatedElipse(numberOfTasks,:,2),'g', 'LineWidth', 5); hold on; plot(TensorOfRotatedPositiveExamples(numberOfTasks,:,1),TensorOfRotatedPositiveExamples(numberOfTasks,:,2),'r*');hold on; plot(TensorOfRotatedNegativeExamples(numberOfTasks,:,1),TensorOfRotatedNegativeExamples(numberOfTasks,:,2),'b*') 86 | end 87 | 88 | numberOfPositiveExamples = length(TensorOfRotatedPositiveExamples(1,:,:)); 89 | numberOfNegativeExamples = length(TensorOfRotatedNegativeExamples(1,:,:)); 90 | numberOfPositiveExamplesForTraining = floor(0.7*numberOfPositiveExamples); 91 | numberOfNegativeExamplesForTest = floor(0.7*numberOfNegativeExamples); 92 | 93 | for numberOfTasks = 1:1:angleCounter-1 94 | TensorOfTrainingData(numberOfTasks,:,:) = [TensorOfRotatedPositiveExamples(numberOfTasks,1:numberOfPositiveExamplesForTraining,:), TensorOfRotatedNegativeExamples(numberOfTasks,1:numberOfNegativeExamplesForTest,:)]; 95 | TensorOfTestData(numberOfTasks,:,:) = [TensorOfRotatedPositiveExamples(numberOfTasks,numberOfPositiveExamplesForTraining+1:numberOfPositiveExamples, :), TensorOfRotatedNegativeExamples(numberOfTasks,numberOfNegativeExamplesForTest+1:numberOfNegativeExamples, :)]; 96 | end 97 | 98 | TrainingLabels = [ones(numberOfPositiveExamplesForTraining,1); 0*ones(numberOfNegativeExamplesForTest,1)]; 99 | TestLabels = [ones( numberOfPositiveExamples - numberOfPositiveExamplesForTraining,1); 0*ones(numberOfNegativeExamples - numberOfNegativeExamplesForTest,1)]; 100 | 101 | TrainingLabels = [TrainingLabels; TrainingLabels; TrainingLabels; TrainingLabels; TrainingLabels; TrainingLabels]; 102 | 103 | 104 | initialCaseIndex = ones(numberOfPositiveExamplesForTraining+numberOfNegativeExamplesForTest,1); 105 | CaseIndexes = [ 0*initialCaseIndex; initialCaseIndex; 2*initialCaseIndex; 3*initialCaseIndex; 4*initialCaseIndex; 5*initialCaseIndex ]; 106 | 107 | length(CaseIndexes) 108 | 109 | 110 | %{ 111 | Training = 'TrainingData_For_Case_'; 112 | Test = 'TestData_For_Case_'; 113 | LabelsForTraining = 'Labels_For_TrainingData_For_Case_'; 114 | LabelsForTest = 'Labels_For_TestData_For_Case_'; 115 | CaseIndexFile = 'CaseIndices_For_TrainingData_For_Case_'; 116 | 117 | 118 | 119 | 120 | for numberOfTasks = 1:1:angleCounter-1 121 | taskCounterForTrainingData = 1; 122 | TrainingDataFileName = strcat( Training, num2str(numberOfTasks-1), '.csv'); 123 | TestDataFileName = strcat( Test, num2str(numberOfTasks-1), '.csv'); 124 | TrainingLabelsFileName = strcat(LabelsForTraining, num2str(numberOfTasks-1),'.csv'); 125 | TestLabelsFileName = strcat(LabelsForTest, num2str(numberOfTasks-1), '.csv'); 126 | CaseIndexFileName = strcat(CaseIndexFile, num2str(numberOfTasks-1), '.csv'); 127 | sizeOfTrainingData = size(TensorOfTrainingData(1,:,:)); 128 | sizeOfTestData = size(TensorOfTestData(1,:,:)); 129 | a = zeros( (angleCounter-2)*sizeOfTrainingData(2), sizeOfTrainingData(3) ); 130 | 131 | for writeCounter = 1:1:angleCounter-1 132 | if writeCounter ~= numberOfTasks 133 | temp = reshape(TensorOfTrainingData(writeCounter,:,:), [sizeOfTrainingData(2) sizeOfTrainingData(3)]); 134 | for exampleCounter = 1:1:length(temp) 135 | a( (taskCounterForTrainingData -1)*sizeOfTrainingData(2) + exampleCounter , :) = temp(exampleCounter , :); 136 | end 137 | taskCounterForTrainingData = taskCounterForTrainingData +1; 138 | else 139 | b = reshape(TensorOfTestData(writeCounter,:,:), [sizeOfTestData(2) sizeOfTestData(3)]); 140 | dlmwrite(TestDataFileName, b, 'precision', '%.6f','newline','pc'); 141 | dlmwrite(TestLabelsFileName, TestLabels, 'precision', '%.0f','newline','pc'); 142 | end 143 | 144 | shuffledIndexes = randperm(length(a))'; 145 | Shuffled_a = a( shuffledIndexes , : ); 146 | Shuffled_TrainingLabels = TrainingLabels( shuffledIndexes , : ); 147 | Shuffled_CaseIndexes = CaseIndexes( shuffledIndexes , : ); 148 | dlmwrite(TrainingDataFileName, Shuffled_a, 'precision', '%.6f','newline','pc'); 149 | dlmwrite(TrainingLabelsFileName, Shuffled_TrainingLabels, 'precision', '%.0f','newline','pc'); 150 | dlmwrite(CaseIndexFileName, Shuffled_CaseIndexes,'precision', '%.0f','newline','pc'); 151 | end 152 | 153 | end 154 | 155 | %} 156 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/ToyData.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aniketde/DomainGeneralizationMarginal/dd5a7337217d8fcd626e640428df0f4a34657846/Synthetic_Data_Generation_Code/TL/ToyData.mat -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/ToyData_New_Version.m: -------------------------------------------------------------------------------- 1 | clear all 2 | clc 3 | 4 | NumberOfPointsPerTask = 100; 5 | Number_Of_Tasks = 3; 6 | factor = 0.2; 7 | TensorOfTasks = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor); 8 | [MatrixOfLabels, PositiveExamples, NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks); 9 | 10 | Elipse = calculateEllipse(0, 0, 1, factor, 0, 1000); 11 | %{ 12 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5) 13 | hold on; 14 | plot(PositiveExamples(1,:,1),PositiveExamples(1,:,2),'r*') 15 | hold on; 16 | plot(NegativeExamples(1,:,1),NegativeExamples(1,:,2),'b*') 17 | %} 18 | 19 | 20 | numberExamplesPerTaskForTraining = 25; 21 | numberOfPositiveExamplesForTraining = floor(numberExamplesPerTaskForTraining * 0.5); 22 | numberOfNegativeExamplesForTraining = numberExamplesPerTaskForTraining - numberOfPositiveExamplesForTraining; 23 | 24 | initialCaseIndex = ones(numberExamplesPerTaskForTraining,1); 25 | CaseIndexes = zeros(numberExamplesPerTaskForTraining,1); 26 | for i=1:1:Number_Of_Tasks-2 27 | CaseIndexes = [ CaseIndexes; i*initialCaseIndex ]; 28 | end 29 | 30 | 31 | rotation_angles = calculateRotationAngles(-1*pi,0, Number_Of_Tasks); 32 | for taskCounter = 1:1:Number_Of_Tasks 33 | matrix = reshape(PositiveExamples(taskCounter,:,:),size(PositiveExamples,2),size(PositiveExamples,3)); 34 | RotatedPositiveExamples = rotateCellTensor( matrix,rotation_angles(taskCounter)); 35 | clear matrix; 36 | matrix = reshape(NegativeExamples(taskCounter,:,:),size(NegativeExamples,2),size(NegativeExamples,3)); 37 | RotatedNegativeExamples = rotateCellTensor( matrix,rotation_angles(taskCounter)); 38 | clear matrix; 39 | RotatedElipse = rotateMatrix(Elipse, rotation_angles(taskCounter)); 40 | TensorOfRotatedPositiveExamples{taskCounter} = RotatedPositiveExamples; 41 | TensorOfRotatedNegativeExamples{taskCounter} = RotatedNegativeExamples; 42 | TensorOfRotatedElipse{taskCounter} = RotatedElipse; 43 | 44 | 45 | for exampleCounter = 1:1:numberOfPositiveExamplesForTraining 46 | TensorOfTrainingDataPerTask(taskCounter,exampleCounter,1) = RotatedPositiveExamples(exampleCounter , 1 ); 47 | TensorOfTrainingDataPerTask(taskCounter,exampleCounter,2) = RotatedPositiveExamples(exampleCounter , 2 ); 48 | end 49 | 50 | for exampleCounter = 1:1:numberOfNegativeExamplesForTraining 51 | TensorOfTrainingDataPerTask(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 1) = RotatedPositiveExamples(exampleCounter,1); 52 | TensorOfTrainingDataPerTask(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 2) = RotatedPositiveExamples(exampleCounter,2); 53 | end 54 | 55 | clear RotationMatrix; 56 | clear RotatedPositiveExamples; 57 | clear RotatedNegativeExamples; 58 | clear RotatedElipse; 59 | end 60 | for numberOfTasks = 1:1:Number_Of_Tasks 61 | plot(TensorOfRotatedElipse(numberOfTasks,:,1),TensorOfRotatedElipse(numberOfTasks,:,2),'g', 'LineWidth', 0.4); 62 | hold on; 63 | plot(TensorOfRotatedPositiveExamples(numberOfTasks,:,1),TensorOfRotatedPositiveExamples(numberOfTasks,:,2),'r*'); 64 | hold on; 65 | plot(TensorOfRotatedNegativeExamples(numberOfTasks,:,1),TensorOfRotatedNegativeExamples(numberOfTasks,:,2),'b*') 66 | end 67 | 68 | for testTaskCounter = 1:1:Number_Of_Tasks 69 | for trainingTaskCounter = 1:1:Number_Of_Tasks 70 | if(testTaskCounter == trainingTaskCounter)% Get Tes Data 71 | TensorOfTestData(testTaskCounter,:,:) = [TensorOfRotatedPositiveExamples(testTaskCounter,:,:), TensorOfRotatedNegativeExamples(testTaskCounter,:,:)]; 72 | else% construct training data 73 | 74 | TensorOfTrainingData(testTaskCounter,:,:) = [TensorOfTrainingData(testTaskCounter,:,:), TensorOfTrainingDataPerTask(taskCounter,:,:)]; 75 | end 76 | 77 | end 78 | end 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/ToyData_New_Version_cell.m: -------------------------------------------------------------------------------- 1 | function ToyData_New_Version_cell(nb_Tasks, nb_TrnExaPerTask, random, repeat_Number) 2 | Number_Of_Tasks = nb_Tasks; 3 | numberExamplesPerTaskForTraining = nb_TrnExaPerTask; 4 | NumberOfPointsPerTask = 10000 + numberExamplesPerTaskForTraining; 5 | Run = random; 6 | numberOfPositiveExamplesForTraining = floor(numberExamplesPerTaskForTraining * 0.5); 7 | numberOfNegativeExamplesForTraining = numberExamplesPerTaskForTraining - numberOfPositiveExamplesForTraining; 8 | 9 | factor = 0.2; 10 | TensorOfTasks = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor); 11 | [PositiveExamples, NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks); 12 | 13 | Elipse = calculateEllipse(0, 0, 1, factor, 0, 1000); 14 | 15 | %{ 16 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5) 17 | hold on; 18 | plot(PositiveExamples{1}(:,1),PositiveExamples{1}(:,2),'r*') 19 | hold on; 20 | plot(NegativeExamples{1}(:,1),NegativeExamples{1}(:,2),'b*') 21 | %} 22 | initialCaseIndex = ones(numberExamplesPerTaskForTraining,1); 23 | CaseIndexes = zeros(numberExamplesPerTaskForTraining,1); 24 | for i=1:1:Number_Of_Tasks-2 25 | CaseIndexes = [ CaseIndexes; i*initialCaseIndex ]; 26 | end 27 | 28 | rotation_angles = calculateRotationAngles(-0.75*pi,-0.25.*pi, Number_Of_Tasks);%0.4 29 | TensorOfTestData = cell(Number_Of_Tasks,1); 30 | TensorOfRotatedPositiveExamples = cell(Number_Of_Tasks,1); 31 | TensorOfRotatedNegativeExamples = cell(Number_Of_Tasks,1); 32 | TensorOfRotatedElipse = cell(Number_Of_Tasks,1); 33 | TrainingLabelsPerTask = cell(Number_Of_Tasks,1); 34 | TensorOfLabelsForTestData = cell(Number_Of_Tasks,1); 35 | for taskCounter = 1:1:Number_Of_Tasks 36 | RotatedPositiveExamples = rotateMatrix( PositiveExamples{taskCounter},rotation_angles(taskCounter)); 37 | RotatedNegativeExamples = rotateMatrix( NegativeExamples{taskCounter},rotation_angles(taskCounter)); 38 | RotatedElipse = rotateMatrix(Elipse, rotation_angles(taskCounter)); 39 | TensorOfRotatedPositiveExamples{taskCounter} = RotatedPositiveExamples; 40 | TensorOfRotatedNegativeExamples{taskCounter} = RotatedNegativeExamples; 41 | TensorOfRotatedElipse{taskCounter} = RotatedElipse; 42 | 43 | for exampleCounter = 1:1:numberOfPositiveExamplesForTraining 44 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,1) = RotatedPositiveExamples(exampleCounter , 1 ); 45 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,2) = RotatedPositiveExamples(exampleCounter , 2 ); 46 | end 47 | 48 | for exampleCounter = 1:1:numberOfNegativeExamplesForTraining 49 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 1) = RotatedNegativeExamples(exampleCounter,1); 50 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 2) = RotatedNegativeExamples(exampleCounter,2); 51 | end 52 | TrainingLabelsPerTask{taskCounter} = [zeros( numberOfPositiveExamplesForTraining, 1); ones(numberOfNegativeExamplesForTraining,1) ]; 53 | 54 | TensorOfTestData{taskCounter} = [ RotatedPositiveExamples(numberOfPositiveExamplesForTraining+1: length(RotatedPositiveExamples), :) ; RotatedNegativeExamples(numberOfNegativeExamplesForTraining+1:length(RotatedNegativeExamples) , : ) ]; 55 | TensorOfLabelsForTestData{taskCounter} = [zeros( length(RotatedPositiveExamples)- numberOfPositiveExamplesForTraining, 1); ones(length(RotatedNegativeExamples) - numberOfNegativeExamplesForTraining,1)]; 56 | 57 | clear RotationMatrix; 58 | clear RotatedPositiveExamples; 59 | clear RotatedNegativeExamples; 60 | clear RotatedElipse; 61 | end 62 | 63 | TensorOfTrainingDataPerTask = cell(Number_Of_Tasks,1); 64 | for taskCounter = 1:1:Number_Of_Tasks 65 | TensorOfTrainingDataPerTask{taskCounter} = TensorOfTrainingDataPerTask_Matrix(taskCounter,:,:); 66 | end 67 | 68 | 69 | %for numberOfTasks = 1:1:Number_Of_Tasks 70 | % plot(TensorOfRotatedElipse{numberOfTasks}(:,1),TensorOfRotatedElipse{numberOfTasks}(:,2),'g', 'LineWidth', 0.4); 71 | % hold on; 72 | % plot(TensorOfRotatedPositiveExamples{numberOfTasks}(:,1),TensorOfRotatedPositiveExamples{numberOfTasks}(:,2),'r*'); 73 | % hold on; 74 | % plot(TensorOfRotatedNegativeExamples{numberOfTasks}(:,1),TensorOfRotatedNegativeExamples{numberOfTasks}(:,2),'b*') 75 | %end 76 | 77 | 78 | checkForFirstTime = 1; 79 | 80 | TensorOfTrainingData = cell(Number_Of_Tasks,1); 81 | TensorOfLabelsForTrainingData = cell(Number_Of_Tasks,1); 82 | for testTaskCounter = 1:1:Number_Of_Tasks 83 | for trainingTaskCounter = 1:1:Number_Of_Tasks 84 | if testTaskCounter ~= trainingTaskCounter 85 | tmp1 = TensorOfTrainingData{testTaskCounter}; 86 | tmp2 = TensorOfTrainingDataPerTask{trainingTaskCounter}; 87 | TensorOfTrainingData{testTaskCounter} = [tmp1, tmp2]; 88 | 89 | lbl1 = TensorOfLabelsForTrainingData{testTaskCounter}; 90 | lbl2 = TrainingLabelsPerTask{trainingTaskCounter}; 91 | 92 | TensorOfLabelsForTrainingData{testTaskCounter} = [lbl1; lbl2]; 93 | end 94 | end 95 | end 96 | 97 | 98 | for taskCounter=1:1:Number_Of_Tasks 99 | TrainingFileName = strcat('TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 100 | TestFileName = strcat('TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 101 | LabelsTrainingFileName = strcat('LabelsFor_TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 102 | LabelsTestFileName = strcat('LabelsFor_TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 103 | CaseIndexesFileName = strcat('CaseIndexes_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 104 | 105 | convertedTrainingData = TensorOfTrainingData{taskCounter}; 106 | sizeOfTrainingData = size(convertedTrainingData); 107 | convertedTrainingDataReshaped = reshape(convertedTrainingData, sizeOfTrainingData(2), 2); 108 | shuffledIndexes = randperm(sizeOfTrainingData(2))'; 109 | 110 | convertedTestData = TensorOfTestData{taskCounter}; 111 | 112 | Shuffled_TrainingData = convertedTrainingDataReshaped( shuffledIndexes , : ); 113 | tmpTrainingLabels = TensorOfLabelsForTrainingData{taskCounter}; 114 | Shuffled_TrainingLabels = tmpTrainingLabels( shuffledIndexes , : ); 115 | Shuffled_CaseIndexes = CaseIndexes( shuffledIndexes , : ); 116 | 117 | dlmwrite(TrainingFileName, Shuffled_TrainingData, 'precision', '%.6f','newline','pc'); 118 | dlmwrite(LabelsTrainingFileName, Shuffled_TrainingLabels, 'precision', '%.6f','newline','pc'); 119 | dlmwrite(CaseIndexesFileName, Shuffled_CaseIndexes, 'precision', '%.6f','newline','pc'); 120 | 121 | dlmwrite(TestFileName, convertedTestData, 'precision', '%.6f','newline','pc'); 122 | tmpTestLabels = TensorOfLabelsForTestData{taskCounter}; 123 | dlmwrite(LabelsTestFileName, tmpTestLabels, 'precision', '%.6f','newline','pc'); 124 | 125 | 126 | end 127 | 128 | 129 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/calculateEllipse.m: -------------------------------------------------------------------------------- 1 | function [X Y] = calculateEllipse(x, y, a, b, angle, steps) 2 | %# This functions returns points to draw an ellipse 3 | %# 4 | %# @param x X coordinate 5 | %# @param y Y coordinate 6 | %# @param a Semimajor axis 7 | %# @param b Semiminor axis 8 | %# @param angle Angle of the ellipse (in degrees) 9 | %# 10 | 11 | error(nargchk(5, 6, nargin)); 12 | if nargin<6, steps = 36; end 13 | 14 | beta = -angle * (pi / 180); 15 | sinbeta = sin(beta); 16 | cosbeta = cos(beta); 17 | 18 | alpha = linspace(0, 360, steps)' .* (pi / 180); 19 | sinalpha = sin(alpha); 20 | cosalpha = cos(alpha); 21 | 22 | X = x + (a * cosalpha * cosbeta - b * sinalpha * sinbeta); 23 | Y = y + (a * cosalpha * sinbeta + b * sinalpha * cosbeta); 24 | 25 | if nargout==1, 26 | X = [X Y]; 27 | end 28 | end -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/calculateRotationAngles.m: -------------------------------------------------------------------------------- 1 | function rotation_angles = calculateRotationAngles(startAngle, endAngle,Number_Of_Tasks) 2 | 3 | %angleIncrement = (startAngle - endAngle )/(Number_Of_Tasks +1); 4 | 5 | %for i = 1:1:Number_Of_Tasks 6 | % rotation_angles(i) = (startAngle + i * angleIncrement); 7 | %end 8 | %{ 9 | totalAngle = (startAngle - endAngle ); 10 | 11 | angleIncrement = totalAngle/(Number_Of_Tasks-1); 12 | 13 | rotation_angles(1) = startAngle 14 | for i = 2:1:Number_Of_Tasks - 1; 15 | rotation_angles(i) = ( rotation_angles(i-1) + abs((0.95*angleIncrement) + (1-0.95).*rand()*angleIncrement)); 16 | end 17 | rotation_angles(Number_Of_Tasks) = endAngle; 18 | %} 19 | 20 | rotation_angles = unifrnd(startAngle,endAngle,1,Number_Of_Tasks); -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/getLabelsAndClassBasedData.m: -------------------------------------------------------------------------------- 1 | function [PositiveExamples,NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks) 2 | for taskCounter = 1:1:Number_Of_Tasks 3 | positiveExampleCounter = 1; 4 | negativeExampleCounter = 1; 5 | for pointCounter = 1:1:NumberOfPointsPerTask 6 | if(TensorOfTasks(taskCounter,pointCounter,2)>0) 7 | PositiveExamples_tmp(positiveExampleCounter, : ) = TensorOfTasks(taskCounter,pointCounter, :); 8 | positiveExampleCounter = positiveExampleCounter + 1; 9 | else 10 | NegativeExamples_tmp(negativeExampleCounter, : ) = TensorOfTasks(taskCounter,pointCounter, :); 11 | negativeExampleCounter = negativeExampleCounter + 1; 12 | end 13 | end 14 | PositiveExamples{taskCounter} = PositiveExamples_tmp; 15 | NegativeExamples{taskCounter} = NegativeExamples_tmp; 16 | clear PositiveExamples_tmp; 17 | clear NegativeExamples_tmp; 18 | end 19 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/getTaskData.m: -------------------------------------------------------------------------------- 1 | function [TensorOfTasks] = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor) 2 | 3 | for taskCounter = 1:1:Number_Of_Tasks 4 | TensorOfTasks(taskCounter,1,1) = 0; 5 | TensorOfTasks(taskCounter,1,2) = 0; 6 | end 7 | 8 | for taskCounter = 1:1:Number_Of_Tasks 9 | elementCounter = 2; 10 | while(elementCounter <= NumberOfPointsPerTask) 11 | x = rand(1); 12 | x = -1+2*x; 13 | y_bound = 1 - x^2; 14 | y_bound = sqrt(y_bound); 15 | y = -1*y_bound + 2*y_bound*rand(1); 16 | r = x^2 + y^2; 17 | if r<=1 %&& x <= 0.0 18 | %{ 19 | p = rand; 20 | if p >= 0.5 21 | TensorOfTasks(taskCounter, elementCounter, 1) = x+rand*0.1; 22 | TensorOfTasks(taskCounter, elementCounter, 2) = factor*(y+rand*0.1); 23 | elementCounter = elementCounter +1; 24 | else 25 | TensorOfTasks(taskCounter, elementCounter, 1) = x-rand*0.1; 26 | TensorOfTasks(taskCounter, elementCounter, 2) = factor*(y-rand*0.1); 27 | elementCounter = elementCounter +1; 28 | end 29 | %} 30 | TensorOfTasks(taskCounter, elementCounter, 1) = x; 31 | TensorOfTasks(taskCounter, elementCounter, 2) = factor*y; 32 | elementCounter = elementCounter +1; 33 | 34 | end 35 | end 36 | end 37 | 38 | %plot(TensorOfTasks(1,:,1),TensorOfTasks(1,:,2),'r*') 39 | %hold on 40 | %plot(TensorOfTasks(2,:,1),TensorOfTasks(2,:,2),'g*') 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/rotateCellTensor.m: -------------------------------------------------------------------------------- 1 | function RotatedMatrix = rotateCellTensor(matrix, rotation_angle) 2 | converted_matrix = cell2mat(matrix); 3 | RotatedMatrix = zeros(size(converted_matrix,1), size(converted_matrix,2)); 4 | 5 | RotationMatrix= [ cos(rotation_angle) -sin(rotation_angle); sin(rotation_angle) cos(rotation_angle)]; 6 | 7 | for i = 1:1:size(converted_matrix,1) 8 | RotatedMatrix(i, : ) = converted_matrix(i, :) * RotationMatrix; 9 | end -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL/rotateMatrix.m: -------------------------------------------------------------------------------- 1 | function RotatedMatrix = rotateMatrix(matrix, rotation_angle) 2 | RotatedMatrix = zeros(size(matrix,1), size(matrix,2)); 3 | 4 | RotationMatrix= [ cos(rotation_angle) -sin(rotation_angle); sin(rotation_angle) cos(rotation_angle)]; 5 | 6 | for i = 1:1:size(matrix,1) 7 | RotatedMatrix(i, : ) = matrix(i, :) * RotationMatrix; 8 | end -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/2_Dimensional_Manifold_Task.m: -------------------------------------------------------------------------------- 1 | 2 | phi = pi*0.2; 3 | a = 4; 4 | b = 2; 5 | X_c = 0; 6 | Y_c = 0; 7 | counter = 1; 8 | 9 | t = 0:.01:2*pi; 10 | X = X_c + a*cos(t)*cos(phi) - b*sin(t)*sin(phi); 11 | Y = Y_c + a*cos(t)*sin(phi) - b*sin(t)*cos(phi); 12 | plot(X,Y) -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/Final_Synthetic_Data_Generation_From_Urun.m: -------------------------------------------------------------------------------- 1 | clear all 2 | close all 3 | nb_Tasks = 256 4 | nb_TrnExaPerTask = 1000 5 | random = 1 6 | repeat_Number = 2 7 | 8 | [TensorOfTrainingDataPerTask_Matrix,TrainingLabelsPerTask] = ToyData_New_Version_cell(nb_Tasks, nb_TrnExaPerTask, random, repeat_Number); 9 | figure 10 | datasets = cell(nb_Tasks,1); 11 | for ii = 1:nb_Tasks 12 | x = reshape(TensorOfTrainingDataPerTask_Matrix(ii,:,:), [nb_TrnExaPerTask,2] ); 13 | y = TrainingLabelsPerTask{ii}; 14 | datasets{ii}.testx = x; 15 | datasets{ii}.testy = y; 16 | hold on 17 | scatter(x(:,1),x(:,2),[],y) 18 | end 19 | 20 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/Gaussian_Exponential.m: -------------------------------------------------------------------------------- 1 | 2 | counter = 1; 3 | for u = 0:0.01:1 4 | y(counter) = 1 / (1 + exp(-u)); 5 | counter = counter + 1; 6 | end 7 | 8 | 9 | plot(y); -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/ToyData.m: -------------------------------------------------------------------------------- 1 | clear all 2 | clc 3 | cla 4 | 5 | NumberOfPoints = 25; 6 | 7 | M(1,1) = rand(1); 8 | M(1,2) = (1-M(1,1))*rand(1); 9 | factor = 5; 10 | elementCounter = 2; 11 | sizeOfM = size(M); 12 | while (sizeOfM(1) < NumberOfPoints) 13 | x = rand(1); 14 | x = -1+2*x; 15 | y_bound = 1 - x^2; 16 | y_bound = sqrt(y_bound); 17 | y = -1*y_bound + 2*y_bound*rand(1); 18 | 19 | r = x^2 + y^2; 20 | if r <= 1 21 | M(elementCounter, 1) = x; 22 | M(elementCounter, 2) = factor*y; 23 | elementCounter = elementCounter +1; 24 | end 25 | sizeOfM = size(M); 26 | end 27 | 28 | plot(M(:,1),M(:,2),'r*') 29 | 30 | 31 | Labels = zeros(NumberOfPoints,1); 32 | positiveExampleCounter = 1; 33 | negativeExampleCounter = 1; 34 | for i=1:NumberOfPoints 35 | if M(i,1) >= 0 36 | Labels(i) = 1; 37 | PositiveExamples(positiveExampleCounter, : ) = M(i, : ); 38 | positiveExampleCounter = positiveExampleCounter + 1; 39 | else 40 | NegativeExamples(negativeExampleCounter, : ) = M(i, : ); 41 | negativeExampleCounter = negativeExampleCounter + 1; 42 | end 43 | end 44 | 45 | Elipse = calculateEllipse(0, 0, 1, 5, 0, 10000); 46 | %Elipse = Elipse'; 47 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5); hold on; plot(PositiveExamples(:,1),PositiveExamples(:,2),'r*');hold on; plot(NegativeExamples(:,1),NegativeExamples(:,2),'b*') 48 | %plot(PositiveExamples(:,1),PositiveExamples(:,2),'r*');hold on; plot(NegativeExamples(:,1),NegativeExamples(:,2),'b*') 49 | 50 | 51 | angleCounter = 1; 52 | for rotation_angle = -1.0*pi/4:pi/12:pi/4 53 | RotationMatrix= [ cos(rotation_angle) -sin(rotation_angle); sin(rotation_angle) cos(rotation_angle)]; 54 | RotatedPositiveExamples = zeros(length(PositiveExamples) ,2); 55 | for i = 1:1:length(PositiveExamples ) 56 | RotatedPositiveExamples(i, : ) = PositiveExamples(i, :) * RotationMatrix; 57 | end 58 | 59 | RotatedNegativeExamples = zeros(length(NegativeExamples) ,2); 60 | for i = 1:1:length(NegativeExamples ) 61 | RotatedNegativeExamples(i, : ) = NegativeExamples(i, :) * RotationMatrix; 62 | end 63 | 64 | RotatedElipse = zeros(length(Elipse) ,2); 65 | for i = 1:1:length(Elipse ) 66 | RotatedElipse(i, : ) = Elipse(i, :) * RotationMatrix; 67 | end 68 | 69 | 70 | %plot(RotatedElipse(:,1),RotatedElipse(:,2)); hold on; plot(RotatedPositiveExamples(:,1),RotatedPositiveExamples(:,2),'r*');hold on; plot(RotatedNegativeExamples(:,1),RotatedNegativeExamples(:,2),'b*') 71 | %pbaspect([4*r1 r2 1 ]); 72 | TensorOfRotationMatrix(angleCounter,:,:) = RotationMatrix; 73 | TensorOfRotatedPositiveExamples(angleCounter,:,:) = RotatedPositiveExamples; 74 | TensorOfRotatedNegativeExamples(angleCounter,:,:) = RotatedNegativeExamples; 75 | TensorOfRotatedElipse(angleCounter,:,:) = RotatedElipse; 76 | 77 | angleCounter = angleCounter + 1; 78 | clear RotationMatrix; 79 | clear RotatedPositiveExamples; 80 | clear RotatedNegativeExamples; 81 | clear RotatedElipse; 82 | end 83 | 84 | for numberOfTasks = 1:1:angleCounter-1 85 | plot(TensorOfRotatedElipse(numberOfTasks,:,1),TensorOfRotatedElipse(numberOfTasks,:,2),'g', 'LineWidth', 5); hold on; plot(TensorOfRotatedPositiveExamples(numberOfTasks,:,1),TensorOfRotatedPositiveExamples(numberOfTasks,:,2),'r*');hold on; plot(TensorOfRotatedNegativeExamples(numberOfTasks,:,1),TensorOfRotatedNegativeExamples(numberOfTasks,:,2),'b*') 86 | end 87 | 88 | numberOfPositiveExamples = length(TensorOfRotatedPositiveExamples(1,:,:)); 89 | numberOfNegativeExamples = length(TensorOfRotatedNegativeExamples(1,:,:)); 90 | numberOfPositiveExamplesForTraining = floor(0.7*numberOfPositiveExamples); 91 | numberOfNegativeExamplesForTest = floor(0.7*numberOfNegativeExamples); 92 | 93 | for numberOfTasks = 1:1:angleCounter-1 94 | TensorOfTrainingData(numberOfTasks,:,:) = [TensorOfRotatedPositiveExamples(numberOfTasks,1:numberOfPositiveExamplesForTraining,:), TensorOfRotatedNegativeExamples(numberOfTasks,1:numberOfNegativeExamplesForTest,:)]; 95 | TensorOfTestData(numberOfTasks,:,:) = [TensorOfRotatedPositiveExamples(numberOfTasks,numberOfPositiveExamplesForTraining+1:numberOfPositiveExamples, :), TensorOfRotatedNegativeExamples(numberOfTasks,numberOfNegativeExamplesForTest+1:numberOfNegativeExamples, :)]; 96 | end 97 | 98 | TrainingLabels = [ones(numberOfPositiveExamplesForTraining,1); 0*ones(numberOfNegativeExamplesForTest,1)]; 99 | TestLabels = [ones( numberOfPositiveExamples - numberOfPositiveExamplesForTraining,1); 0*ones(numberOfNegativeExamples - numberOfNegativeExamplesForTest,1)]; 100 | 101 | TrainingLabels = [TrainingLabels; TrainingLabels; TrainingLabels; TrainingLabels; TrainingLabels; TrainingLabels]; 102 | 103 | 104 | initialCaseIndex = ones(numberOfPositiveExamplesForTraining+numberOfNegativeExamplesForTest,1); 105 | CaseIndexes = [ 0*initialCaseIndex; initialCaseIndex; 2*initialCaseIndex; 3*initialCaseIndex; 4*initialCaseIndex; 5*initialCaseIndex ]; 106 | 107 | length(CaseIndexes) 108 | 109 | 110 | %{ 111 | Training = 'TrainingData_For_Case_'; 112 | Test = 'TestData_For_Case_'; 113 | LabelsForTraining = 'Labels_For_TrainingData_For_Case_'; 114 | LabelsForTest = 'Labels_For_TestData_For_Case_'; 115 | CaseIndexFile = 'CaseIndices_For_TrainingData_For_Case_'; 116 | 117 | 118 | 119 | 120 | for numberOfTasks = 1:1:angleCounter-1 121 | taskCounterForTrainingData = 1; 122 | TrainingDataFileName = strcat( Training, num2str(numberOfTasks-1), '.csv'); 123 | TestDataFileName = strcat( Test, num2str(numberOfTasks-1), '.csv'); 124 | TrainingLabelsFileName = strcat(LabelsForTraining, num2str(numberOfTasks-1),'.csv'); 125 | TestLabelsFileName = strcat(LabelsForTest, num2str(numberOfTasks-1), '.csv'); 126 | CaseIndexFileName = strcat(CaseIndexFile, num2str(numberOfTasks-1), '.csv'); 127 | sizeOfTrainingData = size(TensorOfTrainingData(1,:,:)); 128 | sizeOfTestData = size(TensorOfTestData(1,:,:)); 129 | a = zeros( (angleCounter-2)*sizeOfTrainingData(2), sizeOfTrainingData(3) ); 130 | 131 | for writeCounter = 1:1:angleCounter-1 132 | if writeCounter ~= numberOfTasks 133 | temp = reshape(TensorOfTrainingData(writeCounter,:,:), [sizeOfTrainingData(2) sizeOfTrainingData(3)]); 134 | for exampleCounter = 1:1:length(temp) 135 | a( (taskCounterForTrainingData -1)*sizeOfTrainingData(2) + exampleCounter , :) = temp(exampleCounter , :); 136 | end 137 | taskCounterForTrainingData = taskCounterForTrainingData +1; 138 | else 139 | b = reshape(TensorOfTestData(writeCounter,:,:), [sizeOfTestData(2) sizeOfTestData(3)]); 140 | dlmwrite(TestDataFileName, b, 'precision', '%.6f','newline','pc'); 141 | dlmwrite(TestLabelsFileName, TestLabels, 'precision', '%.0f','newline','pc'); 142 | end 143 | 144 | shuffledIndexes = randperm(length(a))'; 145 | Shuffled_a = a( shuffledIndexes , : ); 146 | Shuffled_TrainingLabels = TrainingLabels( shuffledIndexes , : ); 147 | Shuffled_CaseIndexes = CaseIndexes( shuffledIndexes , : ); 148 | dlmwrite(TrainingDataFileName, Shuffled_a, 'precision', '%.6f','newline','pc'); 149 | dlmwrite(TrainingLabelsFileName, Shuffled_TrainingLabels, 'precision', '%.0f','newline','pc'); 150 | dlmwrite(CaseIndexFileName, Shuffled_CaseIndexes,'precision', '%.0f','newline','pc'); 151 | end 152 | 153 | end 154 | 155 | %} 156 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/ToyData_New_Version.m: -------------------------------------------------------------------------------- 1 | clear all 2 | clc 3 | 4 | NumberOfPointsPerTask = 100; 5 | Number_Of_Tasks = 3; 6 | factor = 0.2; 7 | TensorOfTasks = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor); 8 | [MatrixOfLabels, PositiveExamples, NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks); 9 | 10 | Elipse = calculateEllipse(0, 0, 1, factor, 0, 1000); 11 | %{ 12 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5) 13 | hold on; 14 | plot(PositiveExamples(1,:,1),PositiveExamples(1,:,2),'r*') 15 | hold on; 16 | plot(NegativeExamples(1,:,1),NegativeExamples(1,:,2),'b*') 17 | %} 18 | 19 | 20 | numberExamplesPerTaskForTraining = 25; 21 | numberOfPositiveExamplesForTraining = floor(numberExamplesPerTaskForTraining * 0.5); 22 | numberOfNegativeExamplesForTraining = numberExamplesPerTaskForTraining - numberOfPositiveExamplesForTraining; 23 | 24 | initialCaseIndex = ones(numberExamplesPerTaskForTraining,1); 25 | CaseIndexes = zeros(numberExamplesPerTaskForTraining,1); 26 | for i=1:1:Number_Of_Tasks-2 27 | CaseIndexes = [ CaseIndexes; i*initialCaseIndex ]; 28 | end 29 | 30 | 31 | rotation_angles = calculateRotationAngles(-1*pi,0, Number_Of_Tasks); 32 | for taskCounter = 1:1:Number_Of_Tasks 33 | matrix = reshape(PositiveExamples(taskCounter,:,:),size(PositiveExamples,2),size(PositiveExamples,3)); 34 | RotatedPositiveExamples = rotateCellTensor( matrix,rotation_angles(taskCounter)); 35 | clear matrix; 36 | matrix = reshape(NegativeExamples(taskCounter,:,:),size(NegativeExamples,2),size(NegativeExamples,3)); 37 | RotatedNegativeExamples = rotateCellTensor( matrix,rotation_angles(taskCounter)); 38 | clear matrix; 39 | RotatedElipse = rotateMatrix(Elipse, rotation_angles(taskCounter)); 40 | TensorOfRotatedPositiveExamples{taskCounter} = RotatedPositiveExamples; 41 | TensorOfRotatedNegativeExamples{taskCounter} = RotatedNegativeExamples; 42 | TensorOfRotatedElipse{taskCounter} = RotatedElipse; 43 | 44 | 45 | for exampleCounter = 1:1:numberOfPositiveExamplesForTraining 46 | TensorOfTrainingDataPerTask(taskCounter,exampleCounter,1) = RotatedPositiveExamples(exampleCounter , 1 ); 47 | TensorOfTrainingDataPerTask(taskCounter,exampleCounter,2) = RotatedPositiveExamples(exampleCounter , 2 ); 48 | end 49 | 50 | for exampleCounter = 1:1:numberOfNegativeExamplesForTraining 51 | TensorOfTrainingDataPerTask(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 1) = RotatedPositiveExamples(exampleCounter,1); 52 | TensorOfTrainingDataPerTask(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 2) = RotatedPositiveExamples(exampleCounter,2); 53 | end 54 | 55 | clear RotationMatrix; 56 | clear RotatedPositiveExamples; 57 | clear RotatedNegativeExamples; 58 | clear RotatedElipse; 59 | end 60 | for numberOfTasks = 1:1:Number_Of_Tasks 61 | plot(TensorOfRotatedElipse(numberOfTasks,:,1),TensorOfRotatedElipse(numberOfTasks,:,2),'g', 'LineWidth', 0.4); 62 | hold on; 63 | plot(TensorOfRotatedPositiveExamples(numberOfTasks,:,1),TensorOfRotatedPositiveExamples(numberOfTasks,:,2),'r*'); 64 | hold on; 65 | plot(TensorOfRotatedNegativeExamples(numberOfTasks,:,1),TensorOfRotatedNegativeExamples(numberOfTasks,:,2),'b*') 66 | end 67 | 68 | for testTaskCounter = 1:1:Number_Of_Tasks 69 | for trainingTaskCounter = 1:1:Number_Of_Tasks 70 | if(testTaskCounter == trainingTaskCounter)% Get Tes Data 71 | TensorOfTestData(testTaskCounter,:,:) = [TensorOfRotatedPositiveExamples(testTaskCounter,:,:), TensorOfRotatedNegativeExamples(testTaskCounter,:,:)]; 72 | else% construct training data 73 | 74 | TensorOfTrainingData(testTaskCounter,:,:) = [TensorOfTrainingData(testTaskCounter,:,:), TensorOfTrainingDataPerTask(taskCounter,:,:)]; 75 | end 76 | 77 | end 78 | end 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/ToyData_New_Version_cell.m: -------------------------------------------------------------------------------- 1 | function [TensorOfTrainingDataPerTask_Matrix,TrainingLabelsPerTask] = ToyData_New_Version_cell(nb_Tasks, nb_TrnExaPerTask, random, repeat_Number) 2 | Number_Of_Tasks = nb_Tasks; 3 | numberExamplesPerTaskForTraining = nb_TrnExaPerTask; 4 | NumberOfPointsPerTask = 100 + numberExamplesPerTaskForTraining; 5 | Run = random; 6 | numberOfPositiveExamplesForTraining = floor(numberExamplesPerTaskForTraining * 0.5); 7 | numberOfNegativeExamplesForTraining = numberExamplesPerTaskForTraining - numberOfPositiveExamplesForTraining; 8 | 9 | factor = 0.2; 10 | TensorOfTasks = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor); 11 | [PositiveExamples, NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks); 12 | 13 | Elipse = calculateEllipse(0, 0, 1, factor, 0, 1000); 14 | 15 | %{ 16 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5) 17 | hold on; 18 | plot(PositiveExamples{1}(:,1),PositiveExamples{1}(:,2),'r*') 19 | hold on; 20 | plot(NegativeExamples{1}(:,1),NegativeExamples{1}(:,2),'b*') 21 | %} 22 | initialCaseIndex = ones(numberExamplesPerTaskForTraining,1); 23 | CaseIndexes = zeros(numberExamplesPerTaskForTraining,1); 24 | for i=1:1:Number_Of_Tasks-2 25 | CaseIndexes = [ CaseIndexes; i*initialCaseIndex ]; 26 | end 27 | 28 | rotation_angles = calculateRotationAngles(-0.75*pi,-0.25.*pi, Number_Of_Tasks);%0.4 29 | TensorOfTestData = cell(Number_Of_Tasks,1); 30 | TensorOfRotatedPositiveExamples = cell(Number_Of_Tasks,1); 31 | TensorOfRotatedNegativeExamples = cell(Number_Of_Tasks,1); 32 | TensorOfRotatedElipse = cell(Number_Of_Tasks,1); 33 | TrainingLabelsPerTask = cell(Number_Of_Tasks,1); 34 | TensorOfLabelsForTestData = cell(Number_Of_Tasks,1); 35 | for taskCounter = 1:1:Number_Of_Tasks 36 | RotatedPositiveExamples = rotateMatrix( PositiveExamples{taskCounter},rotation_angles(taskCounter)); 37 | RotatedNegativeExamples = rotateMatrix( NegativeExamples{taskCounter},rotation_angles(taskCounter)); 38 | RotatedElipse = rotateMatrix(Elipse, rotation_angles(taskCounter)); 39 | TensorOfRotatedPositiveExamples{taskCounter} = RotatedPositiveExamples; 40 | TensorOfRotatedNegativeExamples{taskCounter} = RotatedNegativeExamples; 41 | TensorOfRotatedElipse{taskCounter} = RotatedElipse; 42 | 43 | for exampleCounter = 1:1:numberOfPositiveExamplesForTraining 44 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,1) = RotatedPositiveExamples(exampleCounter , 1 ); 45 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,2) = RotatedPositiveExamples(exampleCounter , 2 ); 46 | end 47 | 48 | for exampleCounter = 1:1:numberOfNegativeExamplesForTraining 49 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 1) = RotatedNegativeExamples(exampleCounter,1); 50 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 2) = RotatedNegativeExamples(exampleCounter,2); 51 | end 52 | TrainingLabelsPerTask{taskCounter} = [zeros( numberOfPositiveExamplesForTraining, 1); ones(numberOfNegativeExamplesForTraining,1) ]; 53 | 54 | TensorOfTestData{taskCounter} = [ RotatedPositiveExamples(numberOfPositiveExamplesForTraining+1: length(RotatedPositiveExamples), :) ; RotatedNegativeExamples(numberOfNegativeExamplesForTraining+1:length(RotatedNegativeExamples) , : ) ]; 55 | TensorOfLabelsForTestData{taskCounter} = [zeros( length(RotatedPositiveExamples)- numberOfPositiveExamplesForTraining, 1); ones(length(RotatedNegativeExamples) - numberOfNegativeExamplesForTraining,1)]; 56 | 57 | clear RotationMatrix; 58 | clear RotatedPositiveExamples; 59 | clear RotatedNegativeExamples; 60 | clear RotatedElipse; 61 | end 62 | 63 | TensorOfTrainingDataPerTask = cell(Number_Of_Tasks,1); 64 | for taskCounter = 1:1:Number_Of_Tasks 65 | TensorOfTrainingDataPerTask{taskCounter} = TensorOfTrainingDataPerTask_Matrix(taskCounter,:,:); 66 | end 67 | 68 | 69 | for numberOfTasks = 1:1:Number_Of_Tasks 70 | plot(TensorOfRotatedElipse{numberOfTasks}(:,1),TensorOfRotatedElipse{numberOfTasks}(:,2),'g', 'LineWidth', 0.4); 71 | hold on; 72 | plot(TensorOfRotatedPositiveExamples{numberOfTasks}(:,1),TensorOfRotatedPositiveExamples{numberOfTasks}(:,2),'r*'); 73 | hold on; 74 | plot(TensorOfRotatedNegativeExamples{numberOfTasks}(:,1),TensorOfRotatedNegativeExamples{numberOfTasks}(:,2),'b*') 75 | end 76 | 77 | 78 | checkForFirstTime = 1; 79 | 80 | TensorOfTrainingData = cell(Number_Of_Tasks,1); 81 | TensorOfLabelsForTrainingData = cell(Number_Of_Tasks,1); 82 | for testTaskCounter = 1:1:Number_Of_Tasks 83 | for trainingTaskCounter = 1:1:Number_Of_Tasks 84 | if testTaskCounter ~= trainingTaskCounter 85 | tmp1 = TensorOfTrainingData{testTaskCounter}; 86 | tmp2 = TensorOfTrainingDataPerTask{trainingTaskCounter}; 87 | TensorOfTrainingData{testTaskCounter} = [tmp1, tmp2]; 88 | 89 | lbl1 = TensorOfLabelsForTrainingData{testTaskCounter}; 90 | lbl2 = TrainingLabelsPerTask{trainingTaskCounter}; 91 | 92 | TensorOfLabelsForTrainingData{testTaskCounter} = [lbl1; lbl2]; 93 | end 94 | end 95 | end 96 | 97 | %{ 98 | for taskCounter=1:1:Number_Of_Tasks 99 | TrainingFileName = strcat('TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 100 | TestFileName = strcat('TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 101 | LabelsTrainingFileName = strcat('LabelsFor_TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 102 | LabelsTestFileName = strcat('LabelsFor_TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 103 | CaseIndexesFileName = strcat('CaseIndexes_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 104 | 105 | convertedTrainingData = TensorOfTrainingData{taskCounter}; 106 | sizeOfTrainingData = size(convertedTrainingData); 107 | convertedTrainingDataReshaped = reshape(convertedTrainingData, sizeOfTrainingData(2), 2); 108 | shuffledIndexes = randperm(sizeOfTrainingData(2))'; 109 | 110 | convertedTestData = TensorOfTestData{taskCounter}; 111 | 112 | Shuffled_TrainingData = convertedTrainingDataReshaped( shuffledIndexes , : ); 113 | tmpTrainingLabels = TensorOfLabelsForTrainingData{taskCounter}; 114 | Shuffled_TrainingLabels = tmpTrainingLabels( shuffledIndexes , : ); 115 | Shuffled_CaseIndexes = CaseIndexes( shuffledIndexes , : ); 116 | 117 | dlmwrite(TrainingFileName, Shuffled_TrainingData, 'precision', '%.6f','newline','pc'); 118 | dlmwrite(LabelsTrainingFileName, Shuffled_TrainingLabels, 'precision', '%.6f','newline','pc'); 119 | dlmwrite(CaseIndexesFileName, Shuffled_CaseIndexes, 'precision', '%.6f','newline','pc'); 120 | 121 | dlmwrite(TestFileName, convertedTestData, 'precision', '%.6f','newline','pc'); 122 | tmpTestLabels = TensorOfLabelsForTestData{taskCounter}; 123 | dlmwrite(LabelsTestFileName, tmpTestLabels, 'precision', '%.6f','newline','pc'); 124 | 125 | 126 | end 127 | 128 | %} 129 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/ToyData_New_Version_cell_single_Task_svg.m: -------------------------------------------------------------------------------- 1 | function ToyData_New_Version_cell_single_Task_svg(nb_Tasks, nb_TrnExaPerTask, random, repeat_Number) 2 | Number_Of_Tasks = nb_Tasks; 3 | numberExamplesPerTaskForTraining = nb_TrnExaPerTask; 4 | NumberOfPointsPerTask = 10000 + numberExamplesPerTaskForTraining; 5 | Run = random; 6 | numberOfPositiveExamplesForTraining = floor(numberExamplesPerTaskForTraining * 0.5); 7 | numberOfNegativeExamplesForTraining = numberExamplesPerTaskForTraining - numberOfPositiveExamplesForTraining; 8 | 9 | factor = 0.2; 10 | TensorOfTasks = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor); 11 | [PositiveExamples, NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks); 12 | 13 | Elipse = calculateEllipse(0, 0, 1, factor, 0, 1000); 14 | 15 | %{ 16 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5) 17 | hold on; 18 | plot(PositiveExamples{1}(:,1),PositiveExamples{1}(:,2),'r*') 19 | hold on; 20 | plot(NegativeExamples{1}(:,1),NegativeExamples{1}(:,2),'b*') 21 | %} 22 | initialCaseIndex = ones(numberExamplesPerTaskForTraining,1); 23 | CaseIndexes = zeros(numberExamplesPerTaskForTraining,1); 24 | for i=1:1:Number_Of_Tasks-2 25 | CaseIndexes = [ CaseIndexes; i*initialCaseIndex ]; 26 | end 27 | 28 | rotation_angles = calculateRotationAngles(-0.75*pi,-0.25.*pi, Number_Of_Tasks);%0.4 29 | TensorOfTestData = cell(Number_Of_Tasks,1); 30 | TensorOfRotatedPositiveExamples = cell(Number_Of_Tasks,1); 31 | TensorOfRotatedNegativeExamples = cell(Number_Of_Tasks,1); 32 | TensorOfRotatedElipse = cell(Number_Of_Tasks,1); 33 | TrainingLabelsPerTask = cell(Number_Of_Tasks,1); 34 | TensorOfLabelsForTestData = cell(Number_Of_Tasks,1); 35 | for taskCounter = 1:1:Number_Of_Tasks 36 | RotatedPositiveExamples = rotateMatrix( PositiveExamples{taskCounter},rotation_angles(taskCounter)); 37 | RotatedNegativeExamples = rotateMatrix( NegativeExamples{taskCounter},rotation_angles(taskCounter)); 38 | RotatedElipse = rotateMatrix(Elipse, rotation_angles(taskCounter)); 39 | TensorOfRotatedPositiveExamples{taskCounter} = RotatedPositiveExamples; 40 | TensorOfRotatedNegativeExamples{taskCounter} = RotatedNegativeExamples; 41 | TensorOfRotatedElipse{taskCounter} = RotatedElipse; 42 | 43 | for exampleCounter = 1:1:numberOfPositiveExamplesForTraining 44 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,1) = RotatedPositiveExamples(exampleCounter , 1 ); 45 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,2) = RotatedPositiveExamples(exampleCounter , 2 ); 46 | end 47 | 48 | for exampleCounter = 1:1:numberOfNegativeExamplesForTraining 49 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 1) = RotatedNegativeExamples(exampleCounter,1); 50 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 2) = RotatedNegativeExamples(exampleCounter,2); 51 | end 52 | TrainingLabelsPerTask{taskCounter} = [zeros( numberOfPositiveExamplesForTraining, 1); ones(numberOfNegativeExamplesForTraining,1) ]; 53 | 54 | TensorOfTestData{taskCounter} = [ RotatedPositiveExamples(numberOfPositiveExamplesForTraining+1: length(RotatedPositiveExamples), :) ; RotatedNegativeExamples(numberOfNegativeExamplesForTraining+1:length(RotatedNegativeExamples) , : ) ]; 55 | TensorOfLabelsForTestData{taskCounter} = [zeros( length(RotatedPositiveExamples)- numberOfPositiveExamplesForTraining, 1); ones(length(RotatedNegativeExamples) - numberOfNegativeExamplesForTraining,1)]; 56 | 57 | clear RotationMatrix; 58 | clear RotatedPositiveExamples; 59 | clear RotatedNegativeExamples; 60 | clear RotatedElipse; 61 | end 62 | 63 | TensorOfTrainingDataPerTask = cell(Number_Of_Tasks,1); 64 | for taskCounter = 1:1:Number_Of_Tasks 65 | TensorOfTrainingDataPerTask{taskCounter} = TensorOfTrainingDataPerTask_Matrix(taskCounter,:,:); 66 | end 67 | 68 | checkForFirstTime = 1; 69 | 70 | TensorOfTrainingData = cell(Number_Of_Tasks,1); 71 | TensorOfLabelsForTrainingData = cell(Number_Of_Tasks,1); 72 | for testTaskCounter = 1:1:Number_Of_Tasks 73 | for trainingTaskCounter = 1:1:Number_Of_Tasks 74 | if testTaskCounter == trainingTaskCounter 75 | tmp1 = TensorOfTrainingData{testTaskCounter}; 76 | tmp2 = TensorOfTrainingDataPerTask{trainingTaskCounter}; 77 | TensorOfTrainingData{testTaskCounter} = [tmp1, tmp2]; 78 | 79 | lbl1 = TensorOfLabelsForTrainingData{testTaskCounter}; 80 | lbl2 = TrainingLabelsPerTask{trainingTaskCounter}; 81 | 82 | TensorOfLabelsForTrainingData{testTaskCounter} = [lbl1; lbl2]; 83 | end 84 | end 85 | end 86 | 87 | 88 | for taskCounter=1:1:Number_Of_Tasks 89 | TrainingFileName = strcat('TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 90 | TestFileName = strcat('TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 91 | LabelsTrainingFileName = strcat('LabelsFor_TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 92 | LabelsTestFileName = strcat('LabelsFor_TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 93 | CaseIndexesFileName = strcat('CaseIndexes_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 94 | 95 | convertedTrainingData = TensorOfTrainingData{taskCounter}; 96 | sizeOfTrainingData = size(convertedTrainingData); 97 | convertedTrainingDataReshaped = reshape(convertedTrainingData, sizeOfTrainingData(2), 2); 98 | shuffledIndexes = randperm(sizeOfTrainingData(2))'; 99 | 100 | convertedTestData = TensorOfTestData{taskCounter}; 101 | 102 | Shuffled_TrainingData = convertedTrainingDataReshaped( shuffledIndexes , : ); 103 | tmpTrainingLabels = TensorOfLabelsForTrainingData{taskCounter}; 104 | Shuffled_TrainingLabels = tmpTrainingLabels( shuffledIndexes , : ); 105 | Shuffled_CaseIndexes = CaseIndexes( shuffledIndexes , : ); 106 | 107 | dlmwrite(TrainingFileName, Shuffled_TrainingData, 'precision', '%.6f','newline','pc'); 108 | dlmwrite(LabelsTrainingFileName, Shuffled_TrainingLabels, 'precision', '%.6f','newline','pc'); 109 | dlmwrite(CaseIndexesFileName, Shuffled_CaseIndexes, 'precision', '%.6f','newline','pc'); 110 | 111 | dlmwrite(TestFileName, convertedTestData, 'precision', '%.6f','newline','pc'); 112 | tmpTestLabels = TensorOfLabelsForTestData{taskCounter}; 113 | dlmwrite(LabelsTestFileName, tmpTestLabels, 'precision', '%.6f','newline','pc'); 114 | 115 | 116 | end 117 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/ToyData_New_Version_cell_svg.m: -------------------------------------------------------------------------------- 1 | function ToyData_New_Version_cell(nb_Tasks, nb_TrnExaPerTask, random, repeat_Number) 2 | Number_Of_Tasks = nb_Tasks; 3 | numberExamplesPerTaskForTraining = nb_TrnExaPerTask; 4 | NumberOfPointsPerTask = 100 + numberExamplesPerTaskForTraining; 5 | Run = random; 6 | numberOfPositiveExamplesForTraining = floor(numberExamplesPerTaskForTraining * 0.5); 7 | numberOfNegativeExamplesForTraining = numberExamplesPerTaskForTraining - numberOfPositiveExamplesForTraining; 8 | 9 | factor = 0.2; 10 | TensorOfTasks = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor); 11 | [PositiveExamples, NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks); 12 | 13 | Elipse = calculateEllipse(0, 0, 1, factor, 0, 1000); 14 | 15 | %{ 16 | plot(Elipse(: , 1),Elipse(:,2),'g', 'LineWidth', 5) 17 | hold on; 18 | plot(PositiveExamples{1}(:,1),PositiveExamples{1}(:,2),'r*') 19 | hold on; 20 | plot(NegativeExamples{1}(:,1),NegativeExamples{1}(:,2),'b*') 21 | %} 22 | initialCaseIndex = ones(numberExamplesPerTaskForTraining,1); 23 | CaseIndexes = zeros(numberExamplesPerTaskForTraining,1); 24 | for i=1:1:Number_Of_Tasks-2 25 | CaseIndexes = [ CaseIndexes; i*initialCaseIndex ]; 26 | end 27 | 28 | rotation_angles = calculateRotationAngles(-0.75*pi,-0.25.*pi, Number_Of_Tasks);%0.4 29 | TensorOfTestData = cell(Number_Of_Tasks,1); 30 | TensorOfRotatedPositiveExamples = cell(Number_Of_Tasks,1); 31 | TensorOfRotatedNegativeExamples = cell(Number_Of_Tasks,1); 32 | TensorOfRotatedElipse = cell(Number_Of_Tasks,1); 33 | TrainingLabelsPerTask = cell(Number_Of_Tasks,1); 34 | TensorOfLabelsForTestData = cell(Number_Of_Tasks,1); 35 | for taskCounter = 1:1:Number_Of_Tasks 36 | RotatedPositiveExamples = rotateMatrix( PositiveExamples{taskCounter},rotation_angles(taskCounter)); 37 | RotatedNegativeExamples = rotateMatrix( NegativeExamples{taskCounter},rotation_angles(taskCounter)); 38 | RotatedElipse = rotateMatrix(Elipse, rotation_angles(taskCounter)); 39 | TensorOfRotatedPositiveExamples{taskCounter} = RotatedPositiveExamples; 40 | TensorOfRotatedNegativeExamples{taskCounter} = RotatedNegativeExamples; 41 | TensorOfRotatedElipse{taskCounter} = RotatedElipse; 42 | 43 | for exampleCounter = 1:1:numberOfPositiveExamplesForTraining 44 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,1) = RotatedPositiveExamples(exampleCounter , 1 ); 45 | TensorOfTrainingDataPerTask_Matrix(taskCounter,exampleCounter,2) = RotatedPositiveExamples(exampleCounter , 2 ); 46 | end 47 | 48 | for exampleCounter = 1:1:numberOfNegativeExamplesForTraining 49 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 1) = RotatedNegativeExamples(exampleCounter,1); 50 | TensorOfTrainingDataPerTask_Matrix(taskCounter,numberOfPositiveExamplesForTraining+exampleCounter, 2) = RotatedNegativeExamples(exampleCounter,2); 51 | end 52 | TrainingLabelsPerTask{taskCounter} = [zeros( numberOfPositiveExamplesForTraining, 1); ones(numberOfNegativeExamplesForTraining,1) ]; 53 | 54 | TensorOfTestData{taskCounter} = [ RotatedPositiveExamples(numberOfPositiveExamplesForTraining+1: length(RotatedPositiveExamples), :) ; RotatedNegativeExamples(numberOfNegativeExamplesForTraining+1:length(RotatedNegativeExamples) , : ) ]; 55 | TensorOfLabelsForTestData{taskCounter} = [zeros( length(RotatedPositiveExamples)- numberOfPositiveExamplesForTraining, 1); ones(length(RotatedNegativeExamples) - numberOfNegativeExamplesForTraining,1)]; 56 | 57 | clear RotationMatrix; 58 | clear RotatedPositiveExamples; 59 | clear RotatedNegativeExamples; 60 | clear RotatedElipse; 61 | end 62 | 63 | TensorOfTrainingDataPerTask = cell(Number_Of_Tasks,1); 64 | for taskCounter = 1:1:Number_Of_Tasks 65 | TensorOfTrainingDataPerTask{taskCounter} = TensorOfTrainingDataPerTask_Matrix(taskCounter,:,:); 66 | end 67 | 68 | % Draw a new figure and set the default values for the text font 69 | fig = figure; 70 | set(fig,'DefaultAxesFontName', 'Arial') 71 | set(fig,'DefaultAxesFontSize', 16) 72 | % Let's plot the data 73 | for numberOfTasks = 1:1:Number_Of_Tasks 74 | h = plot(TensorOfRotatedElipse{numberOfTasks}(:,1),TensorOfRotatedElipse{numberOfTasks}(:,2),'g', 'LineWidth', 0.4); 75 | axis([-1.1 1.1 -1.1 1.1]); 76 | hold on; 77 | h = plot(TensorOfRotatedPositiveExamples{numberOfTasks}(:,1),TensorOfRotatedPositiveExamples{numberOfTasks}(:,2),'r*'); 78 | axis([-1.1 1.1 -1.1 1.1]); 79 | hold on; 80 | h= plot(TensorOfRotatedNegativeExamples{numberOfTasks}(:,1),TensorOfRotatedNegativeExamples{numberOfTasks}(:,2),'b*'); 81 | end 82 | plot2svg('Task.svg') 83 | 84 | 85 | 86 | 87 | checkForFirstTime = 1; 88 | 89 | TensorOfTrainingData = cell(Number_Of_Tasks,1); 90 | TensorOfLabelsForTrainingData = cell(Number_Of_Tasks,1); 91 | for testTaskCounter = 1:1:Number_Of_Tasks 92 | for trainingTaskCounter = 1:1:Number_Of_Tasks 93 | if testTaskCounter ~= trainingTaskCounter 94 | tmp1 = TensorOfTrainingData{testTaskCounter}; 95 | tmp2 = TensorOfTrainingDataPerTask{trainingTaskCounter}; 96 | TensorOfTrainingData{testTaskCounter} = [tmp1, tmp2]; 97 | 98 | lbl1 = TensorOfLabelsForTrainingData{testTaskCounter}; 99 | lbl2 = TrainingLabelsPerTask{trainingTaskCounter}; 100 | 101 | TensorOfLabelsForTrainingData{testTaskCounter} = [lbl1; lbl2]; 102 | end 103 | end 104 | end 105 | 106 | %{ 107 | for taskCounter=1:1:Number_Of_Tasks 108 | TrainingFileName = strcat('TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 109 | TestFileName = strcat('TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run),'.csv'); 110 | LabelsTrainingFileName = strcat('LabelsFor_TrainingData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 111 | LabelsTestFileName = strcat('LabelsFor_TestData_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 112 | CaseIndexesFileName = strcat('CaseIndexes_For_Case_',num2str(taskCounter-1),'_numberOfTasks_',num2str(Number_Of_Tasks),'_numberOfTotalTrainingPoints_',num2str(Number_Of_Tasks*numberExamplesPerTaskForTraining),'_numberOfTrainingPointsPerEachTask_',num2str(numberExamplesPerTaskForTraining),'_','Repeat_Number_',num2str(repeat_Number),'_','Run_',num2str(Run), '.csv'); 113 | 114 | convertedTrainingData = TensorOfTrainingData{taskCounter}; 115 | sizeOfTrainingData = size(convertedTrainingData); 116 | convertedTrainingDataReshaped = reshape(convertedTrainingData, sizeOfTrainingData(2), 2); 117 | shuffledIndexes = randperm(sizeOfTrainingData(2))'; 118 | 119 | convertedTestData = TensorOfTestData{taskCounter}; 120 | 121 | Shuffled_TrainingData = convertedTrainingDataReshaped( shuffledIndexes , : ); 122 | tmpTrainingLabels = TensorOfLabelsForTrainingData{taskCounter}; 123 | Shuffled_TrainingLabels = tmpTrainingLabels( shuffledIndexes , : ); 124 | Shuffled_CaseIndexes = CaseIndexes( shuffledIndexes , : ); 125 | 126 | dlmwrite(TrainingFileName, Shuffled_TrainingData, 'precision', '%.6f','newline','pc'); 127 | dlmwrite(LabelsTrainingFileName, Shuffled_TrainingLabels, 'precision', '%.6f','newline','pc'); 128 | dlmwrite(CaseIndexesFileName, Shuffled_CaseIndexes, 'precision', '%.6f','newline','pc'); 129 | 130 | dlmwrite(TestFileName, convertedTestData, 'precision', '%.6f','newline','pc'); 131 | tmpTestLabels = TensorOfLabelsForTestData{taskCounter}; 132 | dlmwrite(LabelsTestFileName, tmpTestLabels, 'precision', '%.6f','newline','pc'); 133 | 134 | 135 | end 136 | 137 | %} 138 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/calculateEllipse.m: -------------------------------------------------------------------------------- 1 | function [X Y] = calculateEllipse(x, y, a, b, angle, steps) 2 | %# This functions returns points to draw an ellipse 3 | %# 4 | %# @param x X coordinate 5 | %# @param y Y coordinate 6 | %# @param a Semimajor axis 7 | %# @param b Semiminor axis 8 | %# @param angle Angle of the ellipse (in degrees) 9 | %# 10 | 11 | error(nargchk(5, 6, nargin)); 12 | if nargin<6, steps = 36; end 13 | 14 | beta = -angle * (pi / 180); 15 | sinbeta = sin(beta); 16 | cosbeta = cos(beta); 17 | 18 | alpha = linspace(0, 360, steps)' .* (pi / 180); 19 | sinalpha = sin(alpha); 20 | cosalpha = cos(alpha); 21 | 22 | X = x + (a * cosalpha * cosbeta - b * sinalpha * sinbeta); 23 | Y = y + (a * cosalpha * sinbeta + b * sinalpha * cosbeta); 24 | 25 | if nargout==1, 26 | X = [X Y]; 27 | end 28 | end -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/calculateRotationAngles.m: -------------------------------------------------------------------------------- 1 | function rotation_angles = calculateRotationAngles(startAngle, endAngle,Number_Of_Tasks) 2 | 3 | %angleIncrement = (startAngle - endAngle )/(Number_Of_Tasks +1); 4 | 5 | %for i = 1:1:Number_Of_Tasks 6 | % rotation_angles(i) = (startAngle + i * angleIncrement); 7 | %end 8 | %{ 9 | totalAngle = (startAngle - endAngle ); 10 | 11 | angleIncrement = totalAngle/(Number_Of_Tasks-1); 12 | 13 | rotation_angles(1) = startAngle 14 | for i = 2:1:Number_Of_Tasks - 1; 15 | rotation_angles(i) = ( rotation_angles(i-1) + abs((0.95*angleIncrement) + (1-0.95).*rand()*angleIncrement)); 16 | end 17 | rotation_angles(Number_Of_Tasks) = endAngle; 18 | %} 19 | 20 | rotation_angles = unifrnd(startAngle,endAngle,1,Number_Of_Tasks); -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/getLabelsAndClassBasedData.m: -------------------------------------------------------------------------------- 1 | function [PositiveExamples,NegativeExamples] = getLabelsAndClassBasedData(TensorOfTasks,NumberOfPointsPerTask, Number_Of_Tasks) 2 | for taskCounter = 1:1:Number_Of_Tasks 3 | positiveExampleCounter = 1; 4 | negativeExampleCounter = 1; 5 | for pointCounter = 1:1:NumberOfPointsPerTask 6 | if(TensorOfTasks(taskCounter,pointCounter,2)>0) 7 | PositiveExamples_tmp(positiveExampleCounter, : ) = TensorOfTasks(taskCounter,pointCounter, :); 8 | positiveExampleCounter = positiveExampleCounter + 1; 9 | else 10 | NegativeExamples_tmp(negativeExampleCounter, : ) = TensorOfTasks(taskCounter,pointCounter, :); 11 | negativeExampleCounter = negativeExampleCounter + 1; 12 | end 13 | end 14 | PositiveExamples{taskCounter} = PositiveExamples_tmp; 15 | NegativeExamples{taskCounter} = NegativeExamples_tmp; 16 | clear PositiveExamples_tmp; 17 | clear NegativeExamples_tmp; 18 | end 19 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/getTaskData.m: -------------------------------------------------------------------------------- 1 | function [TensorOfTasks] = getTaskData(NumberOfPointsPerTask, Number_Of_Tasks, factor) 2 | 3 | for taskCounter = 1:1:Number_Of_Tasks 4 | TensorOfTasks(taskCounter,1,1) = 0; 5 | TensorOfTasks(taskCounter,1,2) = 0; 6 | end 7 | 8 | for taskCounter = 1:1:Number_Of_Tasks 9 | elementCounter = 2; 10 | while(elementCounter <= NumberOfPointsPerTask) 11 | x = rand(1); 12 | x = -1+2*x; 13 | y_bound = 1 - x^2; 14 | y_bound = sqrt(y_bound); 15 | y = -1*y_bound + 2*y_bound*rand(1); 16 | r = x^2 + y^2; 17 | if r<=1 %&& x <= 0.0 18 | %{ 19 | p = rand; 20 | if p >= 0.5 21 | TensorOfTasks(taskCounter, elementCounter, 1) = x+rand*0.1; 22 | TensorOfTasks(taskCounter, elementCounter, 2) = factor*(y+rand*0.1); 23 | elementCounter = elementCounter +1; 24 | else 25 | TensorOfTasks(taskCounter, elementCounter, 1) = x-rand*0.1; 26 | TensorOfTasks(taskCounter, elementCounter, 2) = factor*(y-rand*0.1); 27 | elementCounter = elementCounter +1; 28 | end 29 | %} 30 | TensorOfTasks(taskCounter, elementCounter, 1) = x; 31 | TensorOfTasks(taskCounter, elementCounter, 2) = factor*y; 32 | elementCounter = elementCounter +1; 33 | 34 | end 35 | end 36 | end 37 | 38 | %plot(TensorOfTasks(1,:,1),TensorOfTasks(1,:,2),'r*') 39 | %hold on 40 | %plot(TensorOfTasks(2,:,1),TensorOfTasks(2,:,2),'g*') 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/rotateCellTensor.m: -------------------------------------------------------------------------------- 1 | function RotatedMatrix = rotateCellTensor(matrix, rotation_angle) 2 | converted_matrix = cell2mat(matrix); 3 | RotatedMatrix = zeros(size(converted_matrix,1), size(converted_matrix,2)); 4 | 5 | RotationMatrix= [ cos(rotation_angle) -sin(rotation_angle); sin(rotation_angle) cos(rotation_angle)]; 6 | 7 | for i = 1:1:size(converted_matrix,1) 8 | RotatedMatrix(i, : ) = converted_matrix(i, :) * RotationMatrix; 9 | end -------------------------------------------------------------------------------- /Synthetic_Data_Generation_Code/TL_Code/rotateMatrix.m: -------------------------------------------------------------------------------- 1 | function RotatedMatrix = rotateMatrix(matrix, rotation_angle) 2 | RotatedMatrix = zeros(size(matrix,1), size(matrix,2)); 3 | 4 | RotationMatrix= [ cos(rotation_angle) -sin(rotation_angle); sin(rotation_angle) cos(rotation_angle)]; 5 | 6 | for i = 1:1:size(matrix,1) 7 | RotatedMatrix(i, : ) = matrix(i, :) * RotationMatrix; 8 | end -------------------------------------------------------------------------------- /cross_validation_pooling_transfer.m: -------------------------------------------------------------------------------- 1 | function [res_avg_test,res_avg_train,res_avg_test_pooled,res_avg_train_pooled] = cross_validation_pooling_transfer(useAllExamples,numberOfExamplesPerTask,numberOfTrainingUser,datasets,L,Q,D,cross_val,rand_perm_test,numb_iter,task_type,bw1_est,bw2_est,bw3_est,c_est,bw1_est_pooling,c_est_pooling) 2 | 3 | 4 | %% Initialization 5 | datasets_training_num = numberOfTrainingUser; 6 | datasets_training_num_array = (1:datasets_training_num)'; 7 | if useAllExamples == 0 8 | datasets_training_num_per_task = numberOfExamplesPerTask*ones(datasets_training_num,4); 9 | for ii = 1:datasets_training_num 10 | permrand = randperm(length(datasets{ii}.testy),numberOfExamplesPerTask);%1:N; 11 | datasets{ii}.x = datasets{ii}.testx(permrand,:); 12 | datasets{ii}.y = datasets{ii}.testy(permrand); 13 | end 14 | else 15 | datasets_training_num_per_task = zeros(datasets_training_num,4); 16 | for ii = 1:datasets_training_num 17 | datasets{ii}.x = datasets{ii}.testx; 18 | datasets{ii}.y = datasets{ii}.testy; 19 | datasets_training_num_per_task(ii,:) = repmat(length(datasets{ii}.testy),[1,4]); 20 | end 21 | end 22 | 23 | 24 | if cross_val == 1 25 | bw_kde1_log = logspace(-2,4,20); 26 | cost_log = logspace(-1,1,10); 27 | fold_cv = 5; %because of 5 fold cross-validation 28 | size_cv = datasets_training_num/fold_cv; %because of 5 fold cross-validation 29 | %% Data collect 30 | [X, Y, ~] = util_mrg_datasets(datasets, datasets_training_num_array, datasets_training_num_per_task); 31 | [~, ~, ~,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,P_X_test,P_X_train] = util_mrg_datasets_CV(datasets, datasets_training_num_array, datasets_training_num_per_task,fold_cv,size_cv,X,Y); 32 | %util_mrg_datasets_CV 33 | 34 | %% estimation of bandwidth for pooling 35 | err = pooled_CV(bw_kde1_log,cost_log,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,Q,task_type); 36 | [~, idx] = min(err(:)); 37 | [r1, r2] = ind2sub(size(err),idx); 38 | err(r1,r2) 39 | bw_kde1_est = bw_kde1_log(r1); 40 | cost_est = cost_log(r2); 41 | bw_kde1_est_pooling = bw_kde1_est; 42 | cost_est_pooling = cost_est; 43 | %% estimation of bandwidth for ktl first loop 44 | bw_kde1_log = bw_kde1_est; 45 | bw_kde2_log = logspace(-2,4,20); 46 | bw_kde3_log = logspace(-2,4,20); 47 | cost_log = cost_est; 48 | err = transfer_CV(bw_kde1_log,bw_kde2_log,bw_kde3_log,cost_log,size_cv,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,L,Q,P_X_train,P_X_test,datasets,task_type); 49 | ani_err = reshape(err,[length(bw_kde2_log), length(bw_kde3_log)]); 50 | [~, idx] = min(err(:)); 51 | [~, r1, r2] = ind2sub(size(err),idx); 52 | err(1,r1,r2); 53 | bw_kde2_est = bw_kde2_log(r1); 54 | bw_kde3_est = bw_kde3_log(r2); 55 | ani_err(r1,r2); 56 | 57 | 58 | %% estimation of bandwidth for ktl first loop 59 | bw_kde1_log = logspace(-2,4,20); 60 | bw_kde2_log = bw_kde2_est; 61 | bw_kde3_log = bw_kde3_est; 62 | cost_log = logspace(-1,1,10); 63 | err = transfer_CV(bw_kde1_log,bw_kde2_log,bw_kde3_log,cost_log,size_cv,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,L,Q,P_X_train,P_X_test,datasets,task_type); 64 | err = reshape(err,[length(bw_kde1_log), length(cost_log)]); 65 | [val_idx, idx] = min(err(:)); 66 | [r1, r2] = ind2sub(size(err),idx); 67 | bw_kde1_est = bw_kde1_log(r1); 68 | cost_est = cost_log(r2); 69 | err(r1,r2); 70 | 71 | 72 | %% estimation of bandwidth for ktl first loop 73 | bw_kde1_log = bw_kde1_est; 74 | bw_kde2_log = logspace(-2,4,20); 75 | bw_kde3_log = logspace(-2,4,20); 76 | cost_log = cost_est; 77 | err = transfer_CV(bw_kde1_log,bw_kde2_log,bw_kde3_log,cost_log,size_cv,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,L,Q,P_X_train,P_X_test,datasets,task_type); 78 | ani_err = reshape(err,[length(bw_kde2_log), length(bw_kde3_log)]); 79 | [~, idx] = min(err(:)); 80 | [~, r1, r2] = ind2sub(size(err),idx); 81 | err(1,r1,r2); 82 | bw_kde2_est = bw_kde2_log(r1); 83 | bw_kde3_est = bw_kde3_log(r2); 84 | ani_err(r1,r2); 85 | 86 | else 87 | 88 | bw_kde1_est = bw1_est; 89 | bw_kde2_est = bw2_est; 90 | bw_kde3_est = bw3_est; 91 | cost_est = c_est; 92 | bw_kde1_est_pooling = bw1_est_pooling; 93 | cost_est_pooling = c_est_pooling; 94 | end 95 | %% comparison 96 | 97 | for ii = datasets_training_num+1:rand_perm_test(end) 98 | datasets_training_num_per_task(ii,:) = length(datasets{ii}.testy)*ones(1,4); 99 | end 100 | 101 | % for jj = datasets_training_num+1:rand_perm_test(end) 102 | % permrand = randperm(length(datasets{jj}.testy),numberOfExamplesPerTask);%1:N; 103 | % datasets{jj}.x = datasets{jj}.testx(permrand,:); 104 | % datasets{jj}.y = datasets{jj}.testy(permrand); 105 | % end 106 | 107 | if useAllExamples == 0 108 | for jj = datasets_training_num+1:rand_perm_test(end) 109 | permrand = randperm(length(datasets{jj}.testy),numberOfExamplesPerTask);%1:N; 110 | datasets{jj}.x = datasets{jj}.testx(permrand,:); 111 | datasets{jj}.y = datasets{jj}.testy(permrand); 112 | end 113 | else 114 | for jj = datasets_training_num+1:rand_perm_test(end) 115 | datasets{jj}.x = datasets{jj}.testx; 116 | datasets{jj}.y = datasets{jj}.testy; 117 | datasets_training_num_per_task(jj,:) = repmat(length(datasets{jj}.testy),[1,4]); 118 | end 119 | end 120 | 121 | 122 | [res_avg_test, ~,res_avg_train,~] = pooled_transfer_comparison(datasets_training_num,bw_kde1_est,bw_kde2_est,bw_kde3_est,cost_est,rand_perm_test,L,Q,D,numb_iter,datasets,datasets_training_num_per_task,task_type); 123 | [~, res_avg_test_pooled,~,res_avg_train_pooled] = pooled_transfer_comparison(datasets_training_num,bw_kde1_est_pooling,bw_kde2_est,bw_kde3_est,cost_est_pooling,rand_perm_test,L,Q,D,numb_iter,datasets,datasets_training_num_per_task,task_type); 124 | 125 | -------------------------------------------------------------------------------- /demo_transfer_pooling.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | rng('shuffle') 5 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 6 | % This compares marginal predictor method [1] with pooling method. 7 | % It uses kernel approximation and then liblinear as a solver for speed up 8 | % input - train and test datasets = datasets in cell format. 9 | % - datasets{i}.testx contains all features and Dataset{i}.testy 10 | % contains all labels. Don't get mislead by testx name. It contains 11 | % all datapoints. 12 | % - numberOfTrainingUser = number of datasets that are used for training 13 | % In datasets First numberOfTrainingUser are considered as training 14 | % datasets 15 | % - numberOfExamplesPerTask 16 | % - rand_perm_test - datasets to be used as test datasets 17 | % - task_type - it could be 'regression' or 'binary' 18 | % - cross_val - 1 if you want to do cross val otherwise 0 19 | % - L,Q,D - number of random fourier features to approximate kernel 20 | % output - res_avg_test = test error using marginal predictors method 21 | % - res_avg_train = train error using marginal predictors method 22 | % - res_avg_test_pooled = test error using pooling method 23 | % - res_avg_train_pooled = train error using pooling method 24 | % - In case of regression - squared error 25 | % - In case of binary classification - % 0-1 error 26 | % Warning - THIS METHOD DOES FIVE FOLD CROSS VALIDATION. 27 | % SO numberOfTrainingUser SHOULD BE ONLY MULTIPLE OF 5 28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29 | 30 | 31 | %% load the training data based on the input 32 | current_path = pwd; 33 | 34 | %Please download liblinear and run make file before running these 35 | %experiments 36 | liblinear_path = strcat(current_path,'\liblinear-1.95'); 37 | addpath(genpath(liblinear_path)) 38 | load Copy_of_synth_data % synth_parkinson_regression_data 39 | 40 | task_type = 'binary'; % It could be either 'binary' or 'regression' 41 | numberOfTrainingUser = 20; %5,10,15,20,25,30,35, should be multuple of 5 and first (1:numberOfTrainingUser) will be selected as training datasets 42 | useAllExamples = 0; 43 | numberOfExamplesPerTask = 32; 44 | 45 | 46 | L = 100; 47 | Q = 100; 48 | D = 100; 49 | numb_iter = 1; 50 | rand_perm_test = 21:30; % test datasets 51 | cross_val = 1; % 1 if you want to do cross validation, 0 if you don't want to 52 | % If you don't want to do cross validation then input all parameters here. 53 | if cross_val == 0 54 | bw1_est = 100; 55 | bw2_est = 100; 56 | bw3_est = 100; 57 | c_est = 1; 58 | bw1_est_pooling = 100; 59 | c_est_pooling = 1; 60 | elseif cross_val == 1 61 | bw1_est = 100; 62 | bw2_est = 100; 63 | bw3_est = 100; 64 | c_est = 1; 65 | bw1_est_pooling = 100; 66 | c_est_pooling = 1; 67 | end 68 | 69 | [res_avg_test,res_avg_train,res_avg_test_pooled,res_avg_train_pooled] = cross_validation_pooling_transfer(useAllExamples,numberOfExamplesPerTask,numberOfTrainingUser,datasets,L,Q,D,cross_val,rand_perm_test,numb_iter,task_type,bw1_est,bw2_est,bw3_est,c_est,bw1_est_pooling,c_est_pooling); 70 | % if strcmp(task_type,'binary') 71 | % res_avg_test = 100 - res_avg_test; 72 | % res_avg_train = 100 - res_avg_train; 73 | % res_avg_test_pooled = 100- res_avg_test_pooled; 74 | % res_avg_train_pooled = 100- res_avg_train_pooled; 75 | % end 76 | save('Copy_of_synth_data_results','res_avg_test','res_avg_train','res_avg_test_pooled','res_avg_train_pooled') 77 | -------------------------------------------------------------------------------- /demo_transfer_pooling_Flow_Cyto.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | rng('shuffle') 5 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 6 | % This compares marginal predictor method [1] with pooling method. 7 | % It uses kernel approximation and then liblinear as a solver for speed up 8 | % input - train and test datasets = datasets in cell format. 9 | % - datasets{i}.testx contains all features and Dataset{i}.testy 10 | % contains all labels. Don't get mislead by testx name. It contains 11 | % all datapoints. 12 | % - numberOfTrainingUser = number of datasets that are used for training 13 | % In datasets First numberOfTrainingUser are considered as training 14 | % datasets 15 | % - numberOfExamplesPerTask 16 | % - rand_perm_test - datasets to be used as test datasets 17 | % - task_type - it could be 'regression' or 'binary' 18 | % - cross_val - 1 if you want to do cross val otherwise 0 19 | % - L,Q,D - number of random fourier features to approximate kernel 20 | % output - res_avg_test = test error using marginal predictors method 21 | % - res_avg_train = train error using marginal predictors method 22 | % - res_avg_test_pooled = test error using pooling method 23 | % - res_avg_train_pooled = train error using pooling method 24 | % - In case of regression - squared error 25 | % - In case of binary classification - % 0-1 error 26 | % Warning - THIS METHOD WORKS ONLY FOR FIVE FOLD CROSS VALIDATION. 27 | % SO numberOfTrainingUser SHOULD BE ONLY MULTIPLE OF 5 28 | % Author - Aniket Deshmukh, Clayton Scott 29 | % [1] Blanchard, Gilles, Gyemin Lee, and Clayton Scott. "Generalizing from several related classification tasks to a new unlabeled sample." 30 | % In Advances in neural information processing systems, pp. 2178-2186. 2011. 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | 33 | 34 | %% load the training data based on the input 35 | current_path = pwd; 36 | liblinear_path = strcat(current_path,'\liblinear-1.95'); 37 | addpath(genpath(liblinear_path)) 38 | load flow_cyto_multi_35 % synth_parkinson_regression_data 39 | 40 | task_type = 'multiclass'; % It could be either 'binary' or 'regression' 41 | numberOfTrainingUser = 30; %5,10,15,20,25,30,35, should be multuple of 5 and first (1:numberOfTrainingUser) will be selected as training datasets 42 | useAllExamples = 0; 43 | numberOfExamplesPerTask = 1000; 44 | 45 | 46 | L = 100; 47 | Q = 100; 48 | D = 100; 49 | numb_iter = 5; 50 | rand_perm_test = 31:35; % test datasets 51 | cross_val = 1; % 1 if you want to do cross validation, 0 if you don't want to 52 | % If you don't want to do cross validation then input all parameters here. 53 | if cross_val == 0 54 | bw1_est = 100; 55 | bw2_est = 100; 56 | bw3_est = 100; 57 | c_est = 1; 58 | bw1_est_pooling = 100; 59 | c_est_pooling = 1; 60 | elseif cross_val == 1 61 | bw1_est = 100; 62 | bw2_est = 100; 63 | bw3_est = 100; 64 | c_est = 1; 65 | bw1_est_pooling = 100; 66 | c_est_pooling = 1; 67 | end 68 | 69 | [res_avg_test,res_avg_train,res_avg_test_pooled,res_avg_train_pooled] = cross_validation_pooling_transfer(useAllExamples,numberOfExamplesPerTask,numberOfTrainingUser,datasets,L,Q,D,cross_val,rand_perm_test,numb_iter,task_type,bw1_est,bw2_est,bw3_est,c_est,bw1_est_pooling,c_est_pooling); 70 | % if strcmp(task_type,'binary') 71 | % res_avg_test = 100 - res_avg_test; 72 | % res_avg_train = 100 - res_avg_train; 73 | % res_avg_test_pooled = 100- res_avg_test_pooled; 74 | % res_avg_train_pooled = 100- res_avg_train_pooled; 75 | % end 76 | save('flow_cyto_multi_35_1000_results','res_avg_test','res_avg_train','res_avg_test_pooled','res_avg_train_pooled') 77 | -------------------------------------------------------------------------------- /demo_transfer_pooling_satellite.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | rng('shuffle') 5 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 6 | % This compares marginal predictor method [1] with pooling method. 7 | % It uses kernel approximation and then liblinear as a solver for speed up 8 | % input - train and test datasets = datasets in cell format. 9 | % - datasets{i}.testx contains all features and Dataset{i}.testy 10 | % contains all labels. Don't get mislead by testx name. It contains 11 | % all datapoints. 12 | % - numberOfTrainingUser = number of datasets that are used for training 13 | % In datasets First numberOfTrainingUser are considered as training 14 | % datasets 15 | % - numberOfExamplesPerTask 16 | % - rand_perm_test - datasets to be used as test datasets 17 | % - task_type - it could be 'regression' or 'binary' 18 | % - cross_val - 1 if you want to do cross val otherwise 0 19 | % - L,Q,D - number of random fourier features to approximate kernel 20 | % output - res_avg_test = test error using marginal predictors method 21 | % - res_avg_train = train error using marginal predictors method 22 | % - res_avg_test_pooled = test error using pooling method 23 | % - res_avg_train_pooled = train error using pooling method 24 | % - In case of regression - squared error 25 | % - In case of binary classification - % 0-1 error 26 | % Warning - THIS METHOD WORKS ONLY FOR FIVE FOLD CROSS VALIDATION. 27 | % SO numberOfTrainingUser SHOULD BE ONLY MULTIPLE OF 5 28 | % Author - Aniket Deshmukh, Clayton Scott 29 | % [1] Blanchard, Gilles, Gyemin Lee, and Clayton Scott. "Generalizing from several related classification tasks to a new unlabeled sample." 30 | % In Advances in neural information processing systems, pp. 2178-2186. 2011. 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | 33 | 34 | %% load the training data based on the input 35 | current_path = pwd; 36 | liblinear_path = strcat(current_path,'\liblinear-1.95'); 37 | addpath(genpath(liblinear_path)) 38 | load satellite_multi_class_500 % synth_parkinson_regression_data 39 | 40 | task_type = 'multiclass'; % It could be either 'binary','multiclass' or 'regression' 41 | numberOfTrainingUser = 400; %5,10,15,20,25,30,35, should be multuple of 5 and first (1:numberOfTrainingUser) will be selected as training datasets 42 | useAllExamples = 1; 43 | numberOfExamplesPerTask = 80; 44 | 45 | 46 | L = 100; 47 | Q = 100; 48 | D = 100; 49 | numb_iter = 1; 50 | rand_perm_test = 401:500; % test datasets 51 | cross_val = 1; % 1 if you want to do cross validation, 0 if you don't want to 52 | % If you don't want to do cross validation then input all parameters here. 53 | if cross_val == 0 54 | bw1_est = 100; 55 | bw2_est = 100; 56 | bw3_est = 100; 57 | c_est = 1; 58 | bw1_est_pooling = 100; 59 | c_est_pooling = 1; 60 | elseif cross_val == 1 61 | bw1_est = 100; 62 | bw2_est = 100; 63 | bw3_est = 100; 64 | c_est = 1; 65 | bw1_est_pooling = 100; 66 | c_est_pooling = 1; 67 | end 68 | 69 | [res_avg_test,res_avg_train,res_avg_test_pooled,res_avg_train_pooled] = cross_validation_pooling_transfer(useAllExamples,numberOfExamplesPerTask,numberOfTrainingUser,datasets,L,Q,D,cross_val,rand_perm_test,numb_iter,task_type,bw1_est,bw2_est,bw3_est,c_est,bw1_est_pooling,c_est_pooling); 70 | % if strcmp(task_type,'binary') 71 | % res_avg_test = 100 - res_avg_test; 72 | % res_avg_train = 100 - res_avg_train; 73 | % res_avg_test_pooled = 100- res_avg_test_pooled; 74 | % res_avg_train_pooled = 100- res_avg_train_pooled; 75 | % end 76 | save('satellite_multi_class_500_results_no_iter','res_avg_test','res_avg_train','res_avg_test_pooled','res_avg_train_pooled') 77 | -------------------------------------------------------------------------------- /pooled_CV.m: -------------------------------------------------------------------------------- 1 | function [err_iii] = pooled_CV(bw_kde1_log,cost_log,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,Q,task_type) 2 | 3 | err_iii = zeros(length(bw_kde1_log),length(cost_log)); 4 | for bb1 = 1:length(bw_kde1_log) 5 | bw_kde1 = bw_kde1_log(bb1); 6 | for cc = 1:length(cost_log) 7 | cost = cost_log(cc); 8 | tic 9 | for iii = 1:fold_cv 10 | 11 | for rand_num = 1:numb_iter 12 | X_test =X_test_cv{iii}; 13 | Y_test = Y_test_cv{iii}; 14 | X_train = X_train_cv{iii}; %training points 15 | Y_train = Y_train_cv{iii}; %training points 16 | Wq = randn(size(X_train,2),Q)/(bw_kde1); 17 | Z = [cos(X_train*Wq) sin(X_train*Wq)]/sqrt(Q); 18 | Z_hat = sparse(Z); 19 | if strcmp(task_type,'regression') 20 | model = train(Y_train, Z_hat, ['-s 11 -q -c ' num2str(cost)]); 21 | elseif strcmp(task_type,'binary') 22 | model = train(Y_train, Z_hat, ['-s 1 -q -c ' num2str(cost)]); 23 | elseif strcmp(task_type,'multiclass') 24 | model = train(Y_train, Z_hat, ['-s 4 -q -c ' num2str(cost)]); 25 | end 26 | %%testing 27 | 28 | Z = [cos(X_test*Wq) sin(X_test*Wq)]/sqrt(Q); 29 | Z_hat = sparse(Z); 30 | [~, accuracy, ~] = predict(Y_test, Z_hat, model); 31 | if strcmp(task_type,'regression') 32 | res_accu_numb_iter(rand_num) = accuracy(2); 33 | elseif strcmp(task_type,'binary') 34 | res_accu_numb_iter(rand_num) = accuracy(1); 35 | elseif strcmp(task_type,'multiclass') 36 | res_accu_numb_iter(rand_num) = accuracy(1); 37 | end 38 | end 39 | res_accu(iii) = mean(res_accu_numb_iter); 40 | if strcmp (task_type,'regression') 41 | mtl_kderbf1_err(iii) = res_accu(iii);%(100-res_accu(iii)); 42 | elseif strcmp(task_type,'binary') 43 | mtl_kderbf1_err(iii) =(100-res_accu(iii)); 44 | elseif strcmp(task_type,'multiclass') 45 | mtl_kderbf1_err(iii) =(100-res_accu(iii)); 46 | end 47 | end 48 | toc 49 | err_iii(bb1,cc) = mean(mtl_kderbf1_err); 50 | end 51 | end 52 | 53 | 54 | -------------------------------------------------------------------------------- /pooled_test_accuracy.m: -------------------------------------------------------------------------------- 1 | function res_accu = pooled_test_accuracy(datasets,model,W,D,task_type) 2 | 3 | tube_num = length(datasets); 4 | res_accu = zeros(tube_num,1); 5 | for jj=1:tube_num 6 | 7 | %Extracting test files 8 | Y_test = datasets{jj}.testy; 9 | X_test = [datasets{jj}.testx]; 10 | size_test = size(X_test,1); 11 | %Big Kernel Matrix 12 | %K_test = zeros(size(X_train,1),size(X_test,1)); 13 | Z = [cos(X_test*W) sin(X_test*W)]/sqrt(D); 14 | Z_hat = Z; 15 | Z_hat = sparse(Z_hat); 16 | 17 | [~, accuracy, ~] = predict(Y_test, Z_hat, model); 18 | 19 | disp(['test : ' num2str(jj) ' accuracy : ' num2str(accuracy(1))]); 20 | 21 | if strcmp(task_type,'regression') 22 | res_accu(jj) = accuracy(2); 23 | elseif strcmp(task_type,'binary') 24 | res_accu(jj) = accuracy(1); 25 | elseif strcmp(task_type,'multiclass') 26 | res_accu(jj) = accuracy(1); 27 | end 28 | 29 | clear Z Z_hat Y_test X_test xse 30 | end 31 | 32 | end 33 | -------------------------------------------------------------------------------- /pooled_transfer_comparison.m: -------------------------------------------------------------------------------- 1 | function [res_avg_test, res_avg_test_pooled,res_avg_train,res_avg_train_pooled] = pooled_transfer_comparison(datasets_training_num,bw_kde1,bw_kde2,bw_kde3,cost,rand_perm_test,L_grid,Q,D,numb_iter,datasets,datasets_training_num_per_task,task_type ) 2 | %% Initialization 3 | tube_num = length(datasets); 4 | rand_perm = 1:datasets_training_num; 5 | tube_src = (rand_perm)'; 6 | tube_src_num = length(tube_src); 7 | res_avg = zeros(size(numb_iter,length(L_grid))); 8 | res_cell = cell(size(numb_iter,length(L_grid))); 9 | res_test = res_avg; 10 | res_train = res_avg; 11 | res_accu_all = res_cell; 12 | res_cell_pooled = res_cell; 13 | res_test_pooled = res_avg; 14 | res_train_pooled = res_avg; 15 | for D_i = 1:length(L_grid) 16 | 17 | for rand_numb = 1:numb_iter 18 | 19 | [X_train, Y_train, xse] = util_mrg_datasets(datasets, tube_src, datasets_training_num_per_task); 20 | 21 | tic 22 | L = ceil(L_grid(D_i)); 23 | Wl = randn(size(X_train,2),L)/(bw_kde2); 24 | Zx = zeros(tube_src_num,2*L); 25 | Z_x = zeros(size(X_train,1),2*L); 26 | jj = 0; 27 | for ii=1:tube_src_num 28 | xi = datasets{rand_perm(ii)}.x; 29 | Zx(ii,:) = [sum(cos(xi*Wl)) sum(sin(xi*Wl))]/(sqrt(L)*length(xi)); 30 | e = ones(length(xi),1); 31 | ind_jj = jj+1:jj+length(xi); 32 | Z_x(ind_jj,:) = kron(Zx(ii,:),e); 33 | jj = jj + length(xi); 34 | end 35 | 36 | new_vec = [bw_kde1*Z_x bw_kde3*X_train]; 37 | Wq = randn(size(new_vec,2),Q)/(bw_kde1*bw_kde3); 38 | 39 | Z = [cos(new_vec*Wq) sin(new_vec*Wq)]/sqrt(Q); 40 | Z_hat = sparse(Z); 41 | 42 | if strcmp(task_type,'regression') 43 | model = train(Y_train, Z_hat, ['-s 11 -q -c ' num2str(cost)]); 44 | elseif strcmp(task_type,'binary') 45 | model = train(Y_train, Z_hat, ['-s 1 -q -c ' num2str(cost)]); 46 | elseif strcmp(task_type,'multiclass') 47 | model = train(Y_train, Z_hat, ['-s 4 -q -c ' num2str(cost)]); 48 | end 49 | 50 | 51 | 52 | 53 | Wd = randn(size(X_train,2),D)/(bw_kde1); 54 | Z_pooled = [cos(X_train*Wd) sin(X_train*Wd)]/sqrt(D); 55 | Z_hat_pooled = Z_pooled; 56 | Z_hat_pooled = sparse(Z_hat_pooled); 57 | 58 | if strcmp(task_type,'regression') 59 | model_pooled = train(Y_train, Z_hat_pooled, ['-s 11 -q -c ' num2str(cost)]); 60 | elseif strcmp(task_type,'binary') 61 | model_pooled = train(Y_train, Z_hat_pooled, ['-s 1 -q -c ' num2str(cost)]); 62 | elseif strcmp(task_type,'multiclass') 63 | model_pooled = train(Y_train, Z_hat_pooled, ['-s 4 -q -c ' num2str(cost)]); 64 | end 65 | 66 | 67 | clear Z Z_hat new_vec e Z_x xs xse xt ys yt 68 | 69 | %% Task similarity for everything 70 | Zx_full = zeros(tube_num,2*L); 71 | 72 | for ii=1:tube_num 73 | xi = datasets{(ii)}.x;%X_train(size_train*(ii-1)+1:size_train*ii,:); 74 | Zx_full(ii,:) = [sum(cos(xi*Wl)) sum(sin(xi*Wl))]/(sqrt(L)*length(xi)); 75 | end 76 | 77 | %% initialization for testing 78 | res_accu = transfer_test_accuracy(datasets,model,Wq,Q,Zx_full,bw_kde1,bw_kde3,task_type); 79 | if strcmp(task_type,'regression') 80 | mtl_kderbf1_err = res_accu;%(100-res_accu); 81 | elseif strcmp(task_type,'binary') 82 | mtl_kderbf1_err = (100-res_accu); 83 | elseif strcmp(task_type,'multiclass') 84 | mtl_kderbf1_err = (100-res_accu); 85 | end 86 | 87 | res = mtl_kderbf1_err; 88 | res_cell{rand_numb,D_i} = res; 89 | res_test(rand_numb,D_i) = mean(res(rand_perm_test)); 90 | res_train(rand_numb,D_i) = mean(res(rand_perm)); 91 | 92 | 93 | %% initialization for testing 94 | 95 | res_accu_pooled = pooled_test_accuracy(datasets,model_pooled,Wd,D,task_type); 96 | res_accu_all{rand_numb,D_i} = res_accu_pooled; 97 | %% 98 | % result figure 99 | if strcmp(task_type,'regression') 100 | mtl_kderbf1_err_pooled = res_accu_pooled;%(100-res_accu_pooled); 101 | elseif strcmp(task_type,'binary') 102 | mtl_kderbf1_err_pooled =(100-res_accu_pooled); 103 | elseif strcmp(task_type,'multiclass') 104 | mtl_kderbf1_err_pooled =(100-res_accu_pooled); 105 | end 106 | 107 | 108 | 109 | res_pooled = mtl_kderbf1_err_pooled; 110 | res_cell_pooled{rand_numb,D_i} = res_pooled; 111 | res_test_pooled(rand_numb,D_i) = mean(res_pooled(rand_perm_test)); 112 | res_train_pooled(rand_numb,D_i) = mean(res_pooled(rand_perm)); 113 | 114 | 115 | end 116 | 117 | end 118 | 119 | res_avg_test = mean(res_test); 120 | res_avg_train = mean(res_train); 121 | res_avg_test_pooled = mean(res_test_pooled); 122 | res_avg_train_pooled = mean(res_train_pooled); 123 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | Domain Generalization by Marginal Transfer Learning - Under Submission at JMLR 2 | 3 | This compares marginal predictor method with pooling method. 4 | It uses kernel approximation and then liblinear as a solver for speed up. 5 | This code gives comparison of pooling and transfer learning for regression and binary classification. 6 | 7 | %% Instructions - 8 | 1) Download liblinear library and put it in the main workspace. 9 | 2) Compile the library from matlab folder inside it. 10 | 3) For demo, run demo_transfer_pooling. 11 | 12 | %% Files 13 | 1) demo_transfer_pooling = Gives demo for both regression and binary classification 14 | 2) cross_validation_pooling_transfer = This is a main file and automatically chooses the optimization parameter plus kernel bandwidths. One can also give their own parameters. After choosing bandwiths it gives error comparison of pooling and transfer learning. 15 | 3) util_mrg_datasets = merge all datasets 16 | 4) util_mrg_datasets_CV = merge and split training datasets into training and validation sets 17 | 5) pooled_CV = Cross Validation for pooling method 18 | 6) transfer_CV = Cross Validation for transfer learning method 19 | 7) transfer_test_accuracy_CV = Calculates the accuracy on validtion set for transfer learning method 20 | 8) pooled_transfer_comparison = After parameters are set, this file calcualtes the actual training and test error and does comparison 21 | 9) pooled_test_accuracy = Calculates error for pooling method 22 | 10) transfer_test_accuracy = Calculates error for transfer learning method 23 | 11) synth_binary_data = synthtic data for binary classification 24 | 25 | %% Demo 26 | run demo_transfer_pooling. 27 | This compares marginal predictor method [1] with pooling method. 28 | It uses kernel approximation and then liblinear as a solver for speed up 29 | input - train and test datasets = datasets in cell format. 30 | - datasets{i}.testx contains all features and Dataset{i}.testy 31 | contains all labels. Don't get mislead by testx name. It contains 32 | all datapoints. 33 | - numberOfTrainingUser = number of datasets that are used for training 34 | In datasets First numberOfTrainingUser are considered as training 35 | datasets 36 | - numberOfExamplesPerTask 37 | - rand_perm_test - datasets to be used as test datasets 38 | - task_type - it could be 'regression' or 'binary' 39 | - cross_val - 1 if you want to do cross val otherwise 0 40 | - L,Q,D - number of random fourier features to approximate kernel 41 | output - res_avg_test = test error using marginal predictors method 42 | - res_avg_train = train error using marginal predictors method 43 | - res_avg_test_pooled = test error using pooling method 44 | - res_avg_train_pooled = train error using pooling method 45 | - In case of regression - squared error 46 | - In case of binary classification - % 0-1 error 47 | Warning - THIS METHOD WORKS ONLY FOR FIVE FOLD CROSS VALIDATION. 48 | SO numberOfTrainingUser SHOULD BE ONLY MULTIPLE OF 5 49 | 50 | -------------------------------------------------------------------------------- /sataleiite_load.m: -------------------------------------------------------------------------------- 1 | %clear 2 | load('drdatarandom_1250_20160507_1332.mat') 3 | datasets10 = cell(50,1); 4 | for ii = 1:50 5 | x = X_tilde{ii}'; 6 | y = Y{ii}'; 7 | y(y==2) = 1; 8 | y(y==3) = 2; 9 | y(y==4) = 3; 10 | x = x(:,1:2); 11 | x = [x T{ii}']; 12 | x = (x - repmat(max(x),[length(x),1]))./repmat(min(x)-max(x),[length(x),1]); 13 | datasets10{ii}.testx = x; 14 | datasets10{ii}.testy = y(:,1); 15 | end 16 | 17 | % 18 | % for ii = 51:100 19 | % datasets1{ii,1} = datasets2{ii-50,1}; 20 | % end 21 | % 22 | rand_p = randperm(500,500); 23 | for ii = 1:100 24 | datasets{ii,1} = datasets{rand_p(ii)}; 25 | end 26 | 27 | %datasets = [datasets1;datasets2;datasets3;datasets4;datasets5;datasets6;datasets7;datasets8;datasets9;datasets10]; -------------------------------------------------------------------------------- /synth_data.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aniketde/DomainGeneralizationMarginal/dd5a7337217d8fcd626e640428df0f4a34657846/synth_data.mat -------------------------------------------------------------------------------- /test_comparison_final.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | close all; 3 | clc; 4 | rng('shuffle') 5 | % THIS METHOD WORKS ONLY FOR FIVE FOLD CROSS VALIDATION. SO TUBE_SUB_TRAIN 6 | % SHOULD BE ONLY MULTIPLE OF 5 (AND NOT 16,64 - MAKE IT 15,60, etc). 7 | % TUBE_SUB_TEST can be anything. 8 | 9 | %% load the training data based on the input 10 | addpath(genpath('\\engin-labs.m.storage.umich.edu\aniketde\windat.v2\Desktop\sem 4 transfer learning\JMLR_experiments\imdb experiments\imdb_lgl\liblinear-1.95')) 11 | str1 = 'tube_sub'; 12 | string_version = '_v1'; 13 | str = strcat(str1,string_version); 14 | load(str); 15 | 16 | N = length(datasets); 17 | numberOfTrainingUser = 20; %5,10,15,20,25,30,35 18 | % rand_perm = randperm(N,N); 19 | % for ii = 1:N 20 | % tube_sub{ii} = tube_sub{rand_perm(ii)}; 21 | % end 22 | % str1 = 'tube_sub_v10'; 23 | % str2 = '.mat'; 24 | % train_file = strcat(str1,str2); 25 | % save(train_file,'tube_sub'); 26 | %% Initialization 27 | datasets_training_num = numberOfTrainingUser; 28 | numberOfExamplesPerTask_grid = 100%ceil(logspace(1.3,2,10)); 29 | 30 | for nn = 1:length(numberOfExamplesPerTask_grid) 31 | 32 | numberOfExamplesPerTask = numberOfExamplesPerTask_grid(nn); 33 | bw_kde1_est = 390.6940; 34 | bw_kde2_est = 0.1758 ; 35 | bw_kde3_est = 575.4399; 36 | cost_est = 10; 37 | lambda = 1.2500e-05; 38 | bw_kde1_log = logspace(-2,4,20); 39 | bw_kde2_log = 0.1758; 40 | bw_kde3_log = 575.4399; 41 | cost_log = logspace(-1,1,10); 42 | L = 100; 43 | Q = 100; 44 | numb_iter = 5; 45 | 46 | 47 | datasets_training_num_array = (1:datasets_training_num)'; 48 | tube_src_num = length(datasets_training_num_array); 49 | fold_cv = 5; %because of 5 fold cross-validation 50 | size_cv = datasets_training_num/fold_cv; %because of 5 fold cross-validation 51 | datasets_training_num_per_task = numberOfExamplesPerTask*ones(datasets_training_num,4); 52 | for ii = 1:datasets_training_num 53 | 54 | permrand = randperm(length(datasets{ii}.testy),numberOfExamplesPerTask);%1:N; 55 | datasets{ii}.x = datasets{ii}.testx(permrand,:); 56 | datasets{ii}.y = datasets{ii}.testy(permrand); 57 | end 58 | 59 | 60 | %% Data collect 61 | [X, Y, xse] = util_mrg_datasets(datasets, datasets_training_num_array, datasets_training_num_per_task); 62 | [x, y, xe,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,P_X_test,P_X_train] = util_mrg_datasets_CV(datasets, datasets_training_num_array, datasets_training_num_per_task,fold_cv,size_cv,X,Y); 63 | %util_mrg_datasets_CV 64 | 65 | %% estimation of bandwidth for pooling 66 | err = pooled_CV(bw_kde1_log,cost_log,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,Q); 67 | [~, idx] = min(err(:)); 68 | [r1, r2] = ind2sub(size(err),idx); 69 | err(r1,r2) 70 | bw_kde1_est = bw_kde1_log(r1); 71 | cost_est = cost_log(r2); 72 | str1 = '_coordinate_ascent_cv_estimates_pooled_diffn_'; 73 | str2 = num2str(numberOfExamplesPerTask); 74 | str3 = '.mat'; 75 | str4= num2str(numberOfTrainingUser); 76 | str = strcat(str4,string_version,str1,str2,str3); 77 | save(str,'err','bw_kde1_log','bw_kde2_log','bw_kde3_log','cost_log','N','numberOfTrainingUser','fold_cv') 78 | bw_kde1_est_pooling = bw_kde1_est; 79 | cost_est_pooling = cost_est; 80 | %% estimation of bandwidth for ktl first loop 81 | bw_kde1_log = bw_kde1_est; 82 | bw_kde2_log = logspace(-2,4,20); 83 | bw_kde3_log = logspace(-2,4,20); 84 | cost_log = cost_est; 85 | err = transfer_CV(bw_kde1_log,bw_kde2_log,bw_kde3_log,cost_log,size_cv,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,L,Q,P_X_train,P_X_test,datasets); 86 | str1 = '_coordinate_ascent_cv_estimates_diff_patients_transfer_v1_diffn_'; 87 | str2 = num2str(numberOfExamplesPerTask); 88 | str3 = '.mat'; 89 | str4= num2str(numberOfTrainingUser); 90 | str = strcat(str4,string_version,str1,str2,str3); 91 | save(str,'err','bw_kde1_log','bw_kde2_log','bw_kde3_log','cost_log','N','numberOfTrainingUser','fold_cv') 92 | ani_err = reshape(err,[length(bw_kde2_log), length(bw_kde3_log)]); 93 | [~, idx] = min(err(:)); 94 | [~, r1, r2] = ind2sub(size(err),idx); 95 | err(1,r1,r2); 96 | bw_kde2_est = bw_kde2_log(r1); 97 | bw_kde3_est = bw_kde3_log(r2); 98 | ani_err(r1,r2); 99 | 100 | 101 | %% estimation of bandwidth for ktl first loop 102 | bw_kde1_log = logspace(-2,4,20); 103 | bw_kde2_log = bw_kde2_est; 104 | bw_kde3_log = bw_kde3_est; 105 | cost_log = logspace(-1,1,10); 106 | err = transfer_CV(bw_kde1_log,bw_kde2_log,bw_kde3_log,cost_log,size_cv,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,L,Q,P_X_train,P_X_test,datasets); 107 | str1 = '_coordinate_ascent_cv_estimates_diff_patients_transfer_v2_diffn_'; 108 | str2 = num2str(numberOfExamplesPerTask); 109 | str3 = '.mat'; 110 | str4= num2str(numberOfTrainingUser); 111 | str = strcat(str4,string_version, str1,str2,str3); 112 | save(str,'err','bw_kde1_log','bw_kde2_log','bw_kde3_log','cost_log','N','numberOfTrainingUser','fold_cv') 113 | err = reshape(err,[length(bw_kde1_log), length(cost_log)]); 114 | [val_idx, idx] = min(err(:)); 115 | [r1, r2] = ind2sub(size(err),idx); 116 | bw_kde1_est = bw_kde1_log(r1); 117 | cost_est = cost_log(r2); 118 | err(r1,r2); 119 | 120 | 121 | %% estimation of bandwidth for ktl first loop 122 | bw_kde1_log = bw_kde1_est; 123 | bw_kde2_log = logspace(-2,4,20); 124 | bw_kde3_log = logspace(-2,4,20); 125 | cost_log = cost_est; 126 | err = transfer_CV(bw_kde1_log,bw_kde2_log,bw_kde3_log,cost_log,size_cv,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,L,Q,P_X_train,P_X_test,datasets); 127 | str1 = '_coordinate_ascent_cv_estimates_diff_patients_transfer_v3_diffn_'; 128 | str2 = num2str(numberOfExamplesPerTask); 129 | str3 = '.mat'; 130 | str4= num2str(numberOfTrainingUser); 131 | str = strcat(str4,string_version,str1,str2,str3); 132 | save(str,'err','bw_kde1_log','bw_kde2_log','bw_kde3_log','cost_log','N','numberOfTrainingUser','fold_cv') 133 | ani_err = reshape(err,[length(bw_kde2_log), length(bw_kde3_log)]); 134 | [~, idx] = min(err(:)); 135 | [~, r1, r2] = ind2sub(size(err),idx); 136 | err(1,r1,r2); 137 | bw_kde2_est = bw_kde2_log(r1); 138 | bw_kde3_est = bw_kde3_log(r2); 139 | ani_err(r1,r2); 140 | 141 | 142 | %% comparison 143 | rand_perm_test = 36:42; 144 | L_grid = L; 145 | D = 100; 146 | for ii = datasets_training_num+1:rand_perm_test(end) 147 | datasets_training_num_per_task(ii,:) = length(datasets{ii}.testy)*ones(1,4); 148 | end 149 | for jj = datasets_training_num+1:rand_perm_test(end) 150 | permrand = randperm(length(datasets{jj}.testy),numberOfExamplesPerTask);%1:N; 151 | datasets{jj}.x = datasets{jj}.testx(permrand,:); 152 | datasets{jj}.y = datasets{jj}.testy(permrand); 153 | end 154 | 155 | [res_avg_test, ~,res_avg_train,~] = pooled_transfer_comparison(datasets_training_num,bw_kde1_est,bw_kde2_est,bw_kde3_est,cost_est,rand_perm_test,L_grid,Q,D,numb_iter,datasets,datasets_training_num_per_task); 156 | str1 = '_liblinear_ktl_diffn_'; 157 | str2 = '.mat'; 158 | str3= num2str(numberOfTrainingUser); 159 | str = strcat(str3,string_version,str1,str2); 160 | res_avg_test_loop(nn) = res_avg_test; 161 | res_avg_train_loop(nn) = res_avg_train; 162 | save(str,'res_avg_test_loop','res_avg_train_loop') 163 | 164 | [~, res_avg_test_pooled,~,res_avg_train_pooled] = pooled_transfer_comparison(datasets_training_num,bw_kde1_est_pooling,bw_kde2_est,bw_kde3_est,cost_est_pooling,rand_perm_test,L_grid,Q,D,numb_iter,datasets,datasets_training_num_per_task); 165 | str1 = '_liblinear_pooling_diffn_'; 166 | str2 = '.mat'; 167 | str3= num2str(numberOfTrainingUser); 168 | str = strcat(str3,string_version,str1,str2); 169 | res_avg_test_pooled_loop(nn) = res_avg_test_pooled; 170 | res_avg_train_pooled_loop(nn) = res_avg_train_pooled; 171 | save(str,'res_avg_test_pooled_loop','res_avg_train_pooled_loop') 172 | 173 | 174 | end -------------------------------------------------------------------------------- /test_sub_eval_cv_liblinear_fast.m: -------------------------------------------------------------------------------- 1 | function res_accu = test_sub_eval_cv_liblinear_fast(X_test,Y_test,model,Wq,Q,Z_x,bw_kde1,bw_kde3) 2 | 3 | 4 | new_vec = [bw_kde1*Z_x bw_kde3*X_test]; 5 | Z = [cos(new_vec*Wq) sin(new_vec*Wq)]/sqrt(Q); 6 | Z_hat = sparse(Z); 7 | 8 | [~, accuracy, ~] = predict(Y_test, Z_hat, model); 9 | res_accu = accuracy(2); 10 | end 11 | 12 | -------------------------------------------------------------------------------- /test_sub_eval_liblinear_direct_sum_fulldata.m: -------------------------------------------------------------------------------- 1 | function res_accu = test_sub_eval_liblinear_direct_sum_fulldata(tube_sub,model,Wq,Q,Zx_full,bw_kde1,bw_kde3) 2 | 3 | tube_num = length(tube_sub); 4 | res_accu = zeros(tube_num,1); 5 | for jj=1:tube_num 6 | %Extracting test files 7 | Y_test = tube_sub{jj}.testy; 8 | X_test = [tube_sub{jj}.testx]; 9 | size_test = size(X_test,1); 10 | %Big Kernel Matrix 11 | %K_test = zeros(size(X_train,1),size(X_test,1)); 12 | Zx = Zx_full(jj,:); 13 | e = ones(size_test,1); 14 | Z_x = kron(Zx,e); 15 | %X_train(:,size(X_train,2)+1:2*D) = 0; 16 | new_vec = [bw_kde1*Z_x bw_kde3*X_test]; 17 | Z = [cos(new_vec*Wq) sin(new_vec*Wq)]/sqrt(Q); 18 | 19 | Z_hat = sparse(Z); 20 | 21 | [~, accuracy, ~] = predict(Y_test, Z_hat, model); 22 | 23 | disp(['test : ' num2str(jj) ' accuracy : ' num2str(accuracy(1))]); 24 | 25 | res_accu(jj) = accuracy(2); 26 | clear new_vec Z_x Zx Z X_test Y_test Z_hat e 27 | jj 28 | 29 | end 30 | 31 | end 32 | -------------------------------------------------------------------------------- /test_sub_eval_liblinear_fulldata.m: -------------------------------------------------------------------------------- 1 | function res_accu = test_sub_eval_liblinear_fulldata(tube_sub,model,W,D) 2 | 3 | tube_num = length(tube_sub); 4 | res_accu = zeros(tube_num,1); 5 | for jj=1:tube_num 6 | 7 | %Extracting test files 8 | Y_test = tube_sub{jj}.testy; 9 | X_test = [tube_sub{jj}.testx]; 10 | size_test = size(X_test,1); 11 | %Big Kernel Matrix 12 | %K_test = zeros(size(X_train,1),size(X_test,1)); 13 | Z = [cos(X_test*W) sin(X_test*W)]/sqrt(D); 14 | Z_hat = Z; 15 | Z_hat = sparse(Z_hat); 16 | 17 | [~, accuracy, ~] = predict(Y_test, Z_hat, model); 18 | 19 | disp(['test : ' num2str(jj) ' accuracy : ' num2str(accuracy(1))]); 20 | 21 | res_accu(jj) = accuracy(2); 22 | jj 23 | 24 | clear Z Z_hat Y_test X_test xse 25 | end 26 | 27 | end 28 | -------------------------------------------------------------------------------- /transfer_CV.m: -------------------------------------------------------------------------------- 1 | function [err_iii] = transfer_CV(bw_kde1_log,bw_kde2_log,bw_kde3_log,cost_log,size_cv,numb_iter,X_test_cv,Y_test_cv,X_train_cv,Y_train_cv,fold_cv,L,Q,P_X_train_cv,P_X_test_cv,datasets,task_type) 2 | 3 | err_iii = zeros(length(bw_kde1_log),length(bw_kde2_log),length(bw_kde3_log),length(cost_log)); 4 | for bb1 = 1:length(bw_kde1_log) 5 | bw_kde1 = bw_kde1_log(bb1); 6 | for bb2 = 1:length(bw_kde2_log) 7 | bw_kde2 = bw_kde2_log(bb2); 8 | for bb3 = 1:length(bw_kde3_log) 9 | bw_kde3 = bw_kde3_log(bb3); 10 | for cc = 1:length(cost_log) 11 | cost = cost_log(cc); 12 | tic 13 | for iii = 1:fold_cv 14 | 15 | for rand_num = 1:numb_iter 16 | X_test =X_test_cv{iii}; 17 | Y_test = Y_test_cv{iii}; 18 | X_train = X_train_cv{iii}; %training points 19 | Y_train = Y_train_cv{iii}; %training points 20 | P_X_train = P_X_train_cv{iii}; 21 | P_X_test = P_X_test_cv{iii}; 22 | 23 | Wl = randn(size(X_train,2),L)/(bw_kde2); 24 | 25 | Zx = zeros((fold_cv-1)*size_cv,2*L); 26 | Z_x = zeros(size(X_train,1),2*L); 27 | jj = 0; 28 | for ii=1:((fold_cv-1)*size_cv) 29 | xi = datasets{P_X_train(ii)}.x;%X_train(size_train*(ii-1)+1:size_train*ii,:); 30 | Zx(ii,:) = [sum(cos(xi*Wl)) sum(sin(xi*Wl))]/(sqrt(L)*length(xi)); 31 | e = ones(length(xi),1); 32 | ind_jj = jj+1:jj+length(xi); 33 | Z_x(ind_jj,:) = kron(Zx(ii,:),e); 34 | jj = jj + length(xi); 35 | end 36 | 37 | new_vec = [bw_kde1*Z_x bw_kde3*X_train]; 38 | 39 | Wq = randn(size(new_vec,2),Q)/(bw_kde1*bw_kde3); 40 | 41 | Z = [cos(new_vec*Wq) sin(new_vec*Wq)]/sqrt(Q); 42 | Z_hat = sparse(Z); 43 | 44 | if strcmp(task_type,'regression') 45 | model = train(Y_train, Z_hat, ['-s 11 -q -c ' num2str(cost)]); 46 | elseif strcmp(task_type,'binary') 47 | model = train(Y_train, Z_hat, ['-s 1 -q -c ' num2str(cost)]); 48 | elseif strcmp(task_type,'multiclass') 49 | model = train(Y_train, Z_hat, ['-s 4 -q -c ' num2str(cost)]); 50 | end 51 | 52 | %% initialization for testing 53 | 54 | %%testing 55 | Zx = zeros((fold_cv-4)*size_cv,2*L); 56 | Z_x = zeros(size(X_test,1),2*L); 57 | jj = 0; 58 | for ii=1:((fold_cv-4)*size_cv) 59 | %xi = X_test(size_train*(ii-1)+1:size_train*ii,:); 60 | %Zx(ii,:) = [sum(cos(xi*Wl)) sum(sin(xi*Wl))]/(sqrt(L)*length(xi)); 61 | xi = datasets{P_X_test(ii)}.x;%X_train(size_train*(ii-1)+1:size_train*ii,:); 62 | Zx(ii,:) = [sum(cos(xi*Wl)) sum(sin(xi*Wl))]/(sqrt(L)*length(xi)); 63 | e = ones(length(xi),1); 64 | ind_jj = jj+1:jj+length(xi); 65 | Z_x(ind_jj,:) = kron(Zx(ii,:),e); 66 | jj = jj + length(xi); 67 | end 68 | res_accu_numb_iter(rand_num) = transfer_test_accuracy_CV(X_test,Y_test,model,Wq,Q,Z_x,bw_kde1,bw_kde3,task_type); 69 | clear X_test X_train Y_train P_X_train P_X_test Zx Z_x new_vec Z Z_hat 70 | end 71 | 72 | res_accu(iii) = mean(res_accu_numb_iter); 73 | if strcmp(task_type,'regression') 74 | mtl_kderbf1_err(iii) = res_accu(iii);%(100-res_accu(iii)); 75 | elseif strcmp(task_type,'binary') 76 | mtl_kderbf1_err(iii) =(100-res_accu(iii)); 77 | elseif strcmp(task_type,'multiclass') 78 | mtl_kderbf1_err(iii) =(100-res_accu(iii)); 79 | end 80 | 81 | end 82 | toc 83 | err_iii(bb1,bb2,bb3,cc) = mean(mtl_kderbf1_err); 84 | end 85 | end 86 | end 87 | end 88 | -------------------------------------------------------------------------------- /transfer_test_accuracy.m: -------------------------------------------------------------------------------- 1 | function res_accu = transfer_test_accuracy(datasets,model,Wq,Q,Zx_full,bw_kde1,bw_kde3,task_type) 2 | 3 | tube_num = length(datasets); 4 | res_accu = zeros(tube_num,1); 5 | for jj=1:tube_num 6 | %Extracting test files 7 | Y_test = datasets{jj}.testy; 8 | X_test = [datasets{jj}.testx]; 9 | size_test = size(X_test,1); 10 | %Big Kernel Matrix 11 | %K_test = zeros(size(X_train,1),size(X_test,1)); 12 | Zx = Zx_full(jj,:); 13 | e = ones(size_test,1); 14 | Z_x = kron(Zx,e); 15 | %X_train(:,size(X_train,2)+1:2*D) = 0; 16 | new_vec = [bw_kde1*Z_x bw_kde3*X_test]; 17 | Z = [cos(new_vec*Wq) sin(new_vec*Wq)]/sqrt(Q); 18 | 19 | Z_hat = sparse(Z); 20 | 21 | [~, accuracy, ~] = predict(Y_test, Z_hat, model); 22 | 23 | disp(['test : ' num2str(jj) ' accuracy : ' num2str(accuracy(1))]); 24 | 25 | if strcmp(task_type,'regression') 26 | res_accu(jj) = accuracy(2); 27 | elseif strcmp(task_type,'binary') 28 | res_accu(jj) = accuracy(1); 29 | elseif strcmp(task_type,'multiclass') 30 | res_accu(jj) = accuracy(1); 31 | end 32 | 33 | clear new_vec Z_x Zx Z X_test Y_test Z_hat e 34 | jj 35 | 36 | end 37 | 38 | end 39 | -------------------------------------------------------------------------------- /transfer_test_accuracy_CV.m: -------------------------------------------------------------------------------- 1 | function res_accu = transfer_test_accuracy_CV(X_test,Y_test,model,Wq,Q,Z_x,bw_kde1,bw_kde3,task_type) 2 | 3 | 4 | new_vec = [bw_kde1*Z_x bw_kde3*X_test]; 5 | Z = [cos(new_vec*Wq) sin(new_vec*Wq)]/sqrt(Q); 6 | Z_hat = sparse(Z); 7 | 8 | [~, accuracy, ~] = predict(Y_test, Z_hat, model); 9 | if strcmp(task_type,'regression') 10 | res_accu= accuracy(2); 11 | elseif strcmp(task_type,'binary') 12 | res_accu = accuracy(1); 13 | elseif strcmp(task_type,'multiclass') 14 | res_accu = accuracy(1); 15 | end 16 | 17 | end 18 | 19 | -------------------------------------------------------------------------------- /util_mrg_datasets.m: -------------------------------------------------------------------------------- 1 | function [x, y, xe] = util_mrg_datasets(datasets, datasets_training_num_array, datasets_training_num_per_task) 2 | 3 | tube_sub_size = datasets_training_num_per_task(datasets_training_num_array,1); 4 | tube_sub_idx = cumsum([0; tube_sub_size]); 5 | 6 | x = zeros(sum(tube_sub_size), size(datasets{1}.x,2)); 7 | xe = zeros(size(x,1), size(x,2)+1); 8 | y = zeros(size(x,1),1); 9 | 10 | for ii=1:length(datasets_training_num_array) 11 | 12 | idx = tube_sub_idx(ii)+1:tube_sub_idx(ii+1); 13 | x(idx,:) = datasets{datasets_training_num_array(ii)}.x; 14 | xe(idx,:) = [datasets{datasets_training_num_array(ii)}.x, datasets_training_num_array(ii)*ones(length(idx),1)]; 15 | y(idx) = datasets{datasets_training_num_array(ii)}.y; 16 | 17 | end 18 | 19 | end 20 | 21 | -------------------------------------------------------------------------------- /util_mrg_datasets_CV.m: -------------------------------------------------------------------------------- 1 | function [x, y, xe,X_test,Y_test,X_train,Y_train,P_X_test,P_X_train] = util_mrg_datasets_CV(datasets, datasets_training_num_array, datasets_training_num_per_task,fold_cv,size_cv,X,Y) 2 | 3 | datasets_training_num_per_task = datasets_training_num_per_task(datasets_training_num_array,1); 4 | tube_sub_idx = cumsum([0; datasets_training_num_per_task]); 5 | %tube_sub_size_cv = tubesize(tubeid,1)/(tube_sub_size(1)/size_cv); 6 | %tube_sub_idx_cv = cumsum([0; tube_sub_size_cv]); 7 | 8 | x = zeros(sum(datasets_training_num_per_task), size(datasets{1}.x,2)); 9 | xe = zeros(size(x,1), size(x,2)+1); 10 | y = zeros(size(x,1),1); 11 | X_test=cell(fold_cv,1); 12 | Y_test=cell(fold_cv,1); 13 | X_train=cell(fold_cv,1); 14 | Y_train=cell(fold_cv,1); 15 | P_X_test=cell(fold_cv,1); 16 | P_X_train = cell(fold_cv,1); 17 | %numb_valid = tube_sub_size(1)*size_cv; 18 | prev_numb_valid = 0; 19 | for ii=1:fold_cv 20 | numb_valid = prev_numb_valid+ sum(datasets_training_num_per_task((ii-1)*size_cv+1:ii*size_cv)); 21 | P_X_test{ii} = datasets_training_num_array((ii-1)*size_cv+1:ii*size_cv); 22 | X_test{ii} = X(prev_numb_valid+1:numb_valid,:); %validation points 23 | Y_test{ii} = Y(prev_numb_valid+1:numb_valid,:); %validation points 24 | P_X_train{ii} = removerows(datasets_training_num_array,'ind',(ii-1)*size_cv+1:ii*size_cv); 25 | [X_train{ii},PS] = removerows(X,'ind',prev_numb_valid+1:numb_valid); %training points 26 | [Y_train{ii},PS] = removerows(Y,'ind',prev_numb_valid+1:numb_valid); %training points 27 | prev_numb_valid = numb_valid; 28 | 29 | end 30 | 31 | --------------------------------------------------------------------------------