{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import os\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "targets_path=r\"C:\\Users\\jeuux\\Desktop\\Carrera\\MoAI\\TFM\\AnnotatedData\\Accelerometer_Data\\Datasets\\HAR_Dataset\\targets.npy\"" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "targets=np.load(targets_path)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "#get list of targets\n", "target_list=np.unique(targets)\n", "\n", "#split target hierarchy inside each target (eg. ['AG Cp Av Cl'] --> ['AG', 'Cp', 'Av', 'Cl'] )\n", "targets_list=list(map(lambda target: target.split(\" \"),target_list))\n", "\n", "#selects targets inside current hierarchy\n", "targets_used = list(filter(lambda x: \"Or\" in x, targets))\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "#split target hierarchy inside each target (eg. ['AG Cp Av Cl'] --> ['AG', 'Cp', 'Av', 'Cl'] )\n", "def _split_target_hierarchy(target_list):\n", " return list(map(lambda target: target.split(\" \"),target_list))\n", "def _filter_levels(target,pos):\n", " target=target[:pos+2]\n", " return \" \".join(target)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "#2nd step\n", "level=\"Or\"\n", "#split hierarchy\n", "targets_used=_split_target_hierarchy(targets_used)\n", "#get pos...\n", "target_ex=targets_used[0]\n", "pos=next(idx for idx,_ in enumerate(target_ex) if level==target_ex[idx])\n", "#filter levels\n", "targets_used=list(map(lambda target: _select_levels(target,pos) ,targets_used))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Transformer" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [], "source": [ "import numpy as np \n", "from sklearn.base import BaseEstimator, TransformerMixin\n", "\n", "\n", "class LevelSelector( BaseEstimator, TransformerMixin):\n", " \"\"\"Custom Transformer that select the group of behaviours inside a level hierarchy\"\"\"\n", "\n", " #Class Constructor \n", " def __init__( self,level):\n", " self._level=level\n", " \n", " def _split_target_hierarchy(self,target_list):\n", " \"\"\"split target hierarchy inside each target \n", " (eg. ['AG Cp Av Cl'] --> ['AG', 'Cp', 'Av', 'Cl'] )\"\"\"\n", " return list(map(lambda target: target.split(\" \"),target_list))\n", " \n", " def _filter_levels(self,target,pos):\n", " target=target[:pos+2]\n", " return \" \".join(target)\n", " \n", " def _get_pos(self,y):\n", " y_first=y[0]\n", " return next(idx for idx,_ in enumerate(y_first) if self._level==y_first[idx])\n", "\n", " def _get_valid_idx(self,y):\n", " return [idx for idx,target in enumerate (y) if self._level in target]\n", "\n", " def fit(self,y):\n", " return self \n", " \n", " def transform( self, y ):\n", " #filter behaviours\n", " self.valid_idx= self._get_valid_idx(y)\n", " y = y[self.valid_idx]\n", " #split hierarchy\n", " y=self._split_target_hierarchy(y)\n", " #get pos\n", " pos=self._get_pos(y)\n", " #filter levels\n", " y=list(map(lambda target: self._filter_levels(target,pos) ,y))\n", " return y" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "level_sel=LevelSelector(level=\"Or\")" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [], "source": [ "targets_filtered=level_sel.transform(targets)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0,\n", " 6,\n", " 7,\n", " 8,\n", " 9,\n", " 10,\n", " 11,\n", " 12,\n", " 13,\n", " 14,\n", " 15,\n", " 16,\n", " 17,\n", " 18,\n", " 19,\n", " 20,\n", " 21,\n", " 22,\n", " 23,\n", " 24,\n", " 25,\n", " 26,\n", " 27,\n", " 28,\n", " 29,\n", " 30,\n", " 31,\n", " 32,\n", " 33,\n", " 34,\n", " 35,\n", " 36,\n", " 37,\n", " 38,\n", " 39,\n", " 40,\n", " 41,\n", " 42,\n", " 43,\n", " 44,\n", " 45,\n", " 46,\n", " 47,\n", " 48,\n", " 49,\n", " 50,\n", " 51,\n", " 52,\n", " 53,\n", " 68,\n", " 69,\n", " 70,\n", " 71,\n", " 72,\n", " 73,\n", " 74,\n", " 75,\n", " 76,\n", " 77,\n", " 78,\n", " 83,\n", " 84,\n", " 85,\n", " 86,\n", " 87,\n", " 88,\n", " 89,\n", " 90,\n", " 91,\n", " 95,\n", " 96,\n", " 97,\n", " 98,\n", " 99,\n", " 100,\n", " 101,\n", " 102,\n", " 103,\n", " 104,\n", " 107,\n", " 108,\n", " 109,\n", " 110,\n", " 111,\n", " 112,\n", " 113,\n", " 114,\n", " 115,\n", " 116,\n", " 117,\n", " 118,\n", " 119,\n", " 123,\n", " 124,\n", " 125,\n", " 126,\n", " 127,\n", " 128,\n", " 129,\n", " 130,\n", " 131,\n", " 132,\n", " 133,\n", " 134,\n", " 135,\n", " 136,\n", " 137,\n", " 138,\n", " 139,\n", " 144,\n", " 145,\n", " 146,\n", " 147,\n", " 148,\n", " 149,\n", " 150,\n", " 151,\n", " 152,\n", " 153,\n", " 154,\n", " 155,\n", " 156,\n", " 157,\n", " 158,\n", " 159,\n", " 160,\n", " 161,\n", " 162,\n", " 167,\n", " 168,\n", " 169,\n", " 189,\n", " 190,\n", " 191,\n", " 192,\n", " 193,\n", " 194,\n", " 195,\n", " 196,\n", " 197,\n", " 198,\n", " 199,\n", " 200,\n", " 201,\n", " 202,\n", " 203,\n", " 204,\n", " 205,\n", " 206,\n", " 207,\n", " 208,\n", " 209,\n", " 210,\n", " 211,\n", " 212,\n", " 213,\n", " 214,\n", " 215,\n", " 236,\n", " 237,\n", " 238,\n", " 245,\n", " 246,\n", " 247,\n", " 248,\n", " 249,\n", " 250,\n", " 251,\n", " 252,\n", " 253,\n", " 254,\n", " 255,\n", " 256,\n", " 289,\n", " 290,\n", " 291,\n", " 293,\n", " 294,\n", " 295,\n", " 296,\n", " 297,\n", " 298,\n", " 299,\n", " 300,\n", " 301,\n", " 302,\n", " 303,\n", " 304,\n", " 305,\n", " 306,\n", " 307,\n", " 308,\n", " 309,\n", " 310,\n", " 319,\n", " 320,\n", " 321,\n", " 322,\n", " 323,\n", " 324,\n", " 325,\n", " 326,\n", " 327,\n", " 328,\n", " 329,\n", " 330,\n", " 331,\n", " 332,\n", " 333,\n", " 334,\n", " 335,\n", " 336,\n", " 337,\n", " 340,\n", " 341,\n", " 342,\n", " 343,\n", " 344,\n", " 345,\n", " 346,\n", " 347,\n", " 353,\n", " 354,\n", " 355,\n", " 356,\n", " 357,\n", " 358,\n", " 359,\n", " 360,\n", " 361,\n", " 362,\n", " 363,\n", " 364,\n", " 365,\n", " 366,\n", " 367,\n", " 368,\n", " 369,\n", " 370,\n", " 371,\n", " 372,\n", " 373,\n", " 374,\n", " 375,\n", " 376,\n", " 377,\n", " 378,\n", " 379,\n", " 380,\n", " 381,\n", " 382,\n", " 383,\n", " 384,\n", " 385,\n", " 386,\n", " 387,\n", " 388,\n", " 389,\n", " 390,\n", " 391,\n", " 392,\n", " 396,\n", " 397,\n", " 398,\n", " 399,\n", " 400,\n", " 401,\n", " 402,\n", " 403,\n", " 404,\n", " 405,\n", " 406,\n", " 407,\n", " 408,\n", " 409,\n", " 410,\n", " 411,\n", " 412,\n", " 413,\n", " 414,\n", " 415,\n", " 416,\n", " 417,\n", " 418,\n", " 419,\n", " 420,\n", " 421,\n", " 422,\n", " 424,\n", " 425,\n", " 426,\n", " 427,\n", " 428,\n", " 429,\n", " 430,\n", " 431,\n", " 432,\n", " 433,\n", " 434,\n", " 435,\n", " 436,\n", " 437,\n", " 438,\n", " 439,\n", " 440,\n", " 441,\n", " 442,\n", " 443,\n", " 444,\n", " 445,\n", " 446,\n", " 447,\n", " 448,\n", " 449,\n", " 450,\n", " 451,\n", " 452,\n", " 453,\n", " 454,\n", " 455,\n", " 456,\n", " 457,\n", " 458,\n", " 459,\n", " 460,\n", " 461,\n", " 462,\n", " 463,\n", " 464,\n", " 465,\n", " 466,\n", " 467,\n", " 468,\n", " 469,\n", " 473,\n", " 474,\n", " 475,\n", " 476,\n", " 477,\n", " 478,\n", " 479,\n", " 480,\n", " 481,\n", " 482,\n", " 483,\n", " 484,\n", " 485,\n", " 486,\n", " 487,\n", " 488,\n", " 489,\n", " 490,\n", " 491,\n", " 492,\n", " 493,\n", " 494,\n", " 495,\n", " 496,\n", " 497,\n", " 498,\n", " 499,\n", " 500,\n", " 501,\n", " 502,\n", " 503,\n", " 504,\n", " 505,\n", " 506,\n", " 507,\n", " 508,\n", " 562,\n", " 563,\n", " 564,\n", " 565,\n", " 566,\n", " 567,\n", " 568,\n", " 569,\n", " 570,\n", " 571,\n", " 572,\n", " 573,\n", " 574,\n", " 575,\n", " 576,\n", " 577,\n", " 578,\n", " 579,\n", " 580,\n", " 581,\n", " 582,\n", " 583,\n", " 584,\n", " 616,\n", " 617,\n", " 618,\n", " 622,\n", " 623,\n", " 624,\n", " 625,\n", " 626,\n", " 627,\n", " 628,\n", " 629,\n", " 630,\n", " 631,\n", " 632,\n", " 633,\n", " 634,\n", " 635,\n", " 669,\n", " 670,\n", " 671,\n", " 672,\n", " 673,\n", " 674,\n", " 675,\n", " 676,\n", " 677,\n", " 678,\n", " 679,\n", " 680,\n", " 681,\n", " 682,\n", " 683,\n", " 684,\n", " 685,\n", " 686,\n", " 687,\n", " 688,\n", " 689,\n", " 690,\n", " 691,\n", " 692,\n", " 693,\n", " 694,\n", " 695,\n", " 696,\n", " 697,\n", " 698,\n", " 699,\n", " 700,\n", " 701,\n", " 702,\n", " 703,\n", " 704,\n", " 705,\n", " 721,\n", " 722,\n", " 723,\n", " 724,\n", " 725,\n", " 726,\n", " 727,\n", " 733,\n", " 734,\n", " 735,\n", " 742,\n", " 743,\n", " 744,\n", " 745,\n", " 746,\n", " 747,\n", " 750,\n", " 751,\n", " 755,\n", " 756,\n", " 757,\n", " 758,\n", " 759,\n", " 760,\n", " 761,\n", " 762,\n", " 774,\n", " 775,\n", " 776,\n", " 777,\n", " 778,\n", " 784,\n", " 785,\n", " 786,\n", " 787,\n", " 788,\n", " 789,\n", " 790,\n", " 791,\n", " 792,\n", " 799,\n", " 800,\n", " 801,\n", " 803,\n", " 804,\n", " 805,\n", " 806,\n", " 807,\n", " 808,\n", " 813,\n", " 814,\n", " 815,\n", " 816,\n", " 817,\n", " 819,\n", " 820,\n", " 821,\n", " 822,\n", " 823,\n", " 824,\n", " 825,\n", " 832,\n", " 833,\n", " 834,\n", " 835,\n", " 836,\n", " 837,\n", " 838,\n", " 839,\n", " 846,\n", " 847,\n", " 848,\n", " 858,\n", " 859,\n", " 860,\n", " 861,\n", " 862,\n", " 863,\n", " 864,\n", " 878,\n", " 883,\n", " 884,\n", " 885,\n", " 886,\n", " 887,\n", " 888,\n", " 889,\n", " 890,\n", " 894,\n", " 901,\n", " 902,\n", " 903,\n", " 904,\n", " 905,\n", " 906,\n", " 907,\n", " 908,\n", " 909,\n", " 910,\n", " 911,\n", " 912,\n", " 913,\n", " 914,\n", " 922,\n", " 923,\n", " 924,\n", " 925,\n", " 926,\n", " 927,\n", " 928,\n", " 929,\n", " 932,\n", " 933,\n", " 934,\n", " 936,\n", " 937,\n", " 938,\n", " 939,\n", " 940,\n", " 941,\n", " 942,\n", " 943,\n", " 944,\n", " 945,\n", " 946,\n", " 947,\n", " 948,\n", " 949,\n", " 950,\n", " 951,\n", " 952,\n", " 953,\n", " 954,\n", " 955,\n", " 956,\n", " 957,\n", " 958,\n", " 959,\n", " 960,\n", " 961,\n", " 962,\n", " 963,\n", " 964,\n", " 970,\n", " 971,\n", " 972,\n", " 973,\n", " 974,\n", " 975,\n", " 976,\n", " 977,\n", " 978,\n", " 979,\n", " 980,\n", " 984,\n", " 985,\n", " 986,\n", " 991,\n", " 992,\n", " 993,\n", " 994,\n", " 995,\n", " 998,\n", " 999,\n", " 1000,\n", " 1001,\n", " 1002,\n", " 1003,\n", " 1004,\n", " 1005,\n", " 1006,\n", " 1007,\n", " 1008,\n", " 1009,\n", " 1010,\n", " 1011,\n", " 1015,\n", " 1016,\n", " 1017,\n", " 1020,\n", " 1021,\n", " 1022,\n", " 1023,\n", " 1024,\n", " 1025,\n", " 1026,\n", " 1027,\n", " 1028,\n", " 1030,\n", " 1031,\n", " 1032,\n", " 1038,\n", " 1044,\n", " 1045,\n", " 1046,\n", " 1047,\n", " 1048,\n", " 1049,\n", " 1050,\n", " 1051,\n", " 1052,\n", " 1053,\n", " 1054,\n", " 1055,\n", " 1056,\n", " 1057,\n", " 1058,\n", " 1059,\n", " 1060,\n", " 1061,\n", " 1062,\n", " 1063,\n", " 1064,\n", " 1065,\n", " 1066,\n", " 1067,\n", " 1068,\n", " 1069,\n", " 1070,\n", " 1071,\n", " 1072,\n", " 1073,\n", " 1074,\n", " 1077,\n", " 1078,\n", " 1079,\n", " 1081,\n", " 1082,\n", " 1083,\n", " 1084,\n", " 1085,\n", " 1086,\n", " 1089,\n", " 1090,\n", " 1091,\n", " 1092,\n", " 1093,\n", " 1095,\n", " 1103,\n", " 1104,\n", " 1105,\n", " 1106,\n", " 1109,\n", " 1110,\n", " 1111,\n", " 1112,\n", " 1113,\n", " 1114,\n", " 1115,\n", " 1116,\n", " 1117,\n", " 1118,\n", " 1119,\n", " 1120,\n", " 1121,\n", " 1122,\n", " 1123,\n", " 1124,\n", " 1125,\n", " 1126,\n", " 1127,\n", " 1128,\n", " 1134,\n", " 1135,\n", " 1136,\n", " 1137,\n", " 1138,\n", " 1139,\n", " 1140,\n", " 1141,\n", " 1142,\n", " 1143,\n", " 1144,\n", " 1145,\n", " 1150,\n", " 1151,\n", " 1152,\n", " 1153,\n", " 1154,\n", " 1162,\n", " 1163,\n", " 1164,\n", " 1165,\n", " 1166,\n", " 1167,\n", " 1168,\n", " 1169,\n", " 1172,\n", " 1182,\n", " 1183,\n", " 1184,\n", " 1185,\n", " 1186,\n", " 1187,\n", " 1188,\n", " 1189,\n", " 1190,\n", " 1191,\n", " 1192,\n", " 1193,\n", " 1194,\n", " 1195,\n", " 1196,\n", " 1197,\n", " 1198,\n", " 1199,\n", " 1202,\n", " 1203,\n", " 1207,\n", " 1208,\n", " 1209,\n", " 1210,\n", " 1211,\n", " 1212,\n", " 1213,\n", " 1214,\n", " 1215,\n", " 1216,\n", " 1217,\n", " 1218,\n", " 1219,\n", " 1220,\n", " 1221,\n", " 1222,\n", " 1227,\n", " 1228,\n", " 1229,\n", " 1230,\n", " 1231,\n", " 1232,\n", " 1233,\n", " 1234,\n", " 1237,\n", " 1249,\n", " 1250,\n", " 1251,\n", " 1252,\n", " 1258,\n", " 1259,\n", " 1260,\n", " 1261,\n", " 1262,\n", " 1263,\n", " 1264,\n", " 1265,\n", " 1266,\n", " 1267,\n", " 1268,\n", " 1269,\n", " 1270,\n", " 1271,\n", " 1272,\n", " 1273,\n", " 1274,\n", " 1275,\n", " 1276,\n", " 1277,\n", " 1278,\n", " 1279,\n", " 1280,\n", " 1281,\n", " 1286,\n", " 1287,\n", " 1288,\n", " 1289,\n", " 1290,\n", " 1291,\n", " 1292,\n", " 1293,\n", " 1294,\n", " 1302,\n", " 1303,\n", " 1304,\n", " 1305,\n", " 1306,\n", " 1307,\n", " 1308,\n", " 1309,\n", " 1310,\n", " 1320,\n", " 1321,\n", " 1322,\n", " 1323,\n", " 1324,\n", " 1325,\n", " 1333,\n", " 1334,\n", " 1335,\n", " 1336,\n", " 1337,\n", " 1338,\n", " 1339,\n", " 1340,\n", " 1341,\n", " 1349,\n", " 1350,\n", " 1351,\n", " 1352,\n", " 1353,\n", " 1354,\n", " 1355,\n", " 1356,\n", " 1362,\n", " 1363,\n", " 1364,\n", " 1365,\n", " 1366,\n", " 1367,\n", " 1368,\n", " 1369,\n", " 1370,\n", " 1371,\n", " 1372,\n", " 1378,\n", " 1379,\n", " 1380,\n", " 1381,\n", " 1382,\n", " 1383,\n", " 1386,\n", " 1387,\n", " 1388,\n", " 1389,\n", " 1390,\n", " 1391,\n", " 1392,\n", " 1393,\n", " 1394,\n", " 1398,\n", " 1399,\n", " 1400,\n", " 1401,\n", " 1402,\n", " 1403,\n", " 1404,\n", " 1405,\n", " 1408,\n", " 1409,\n", " 1414,\n", " 1415,\n", " 1416,\n", " 1417,\n", " 1418,\n", " 1419,\n", " 1420,\n", " 1421,\n", " 1422,\n", " 1423,\n", " 1424,\n", " 1425,\n", " 1426,\n", " 1427,\n", " 1428,\n", " 1429,\n", " 1430,\n", " 1431,\n", " 1432,\n", " 1433,\n", " 1434,\n", " 1435,\n", " 1436,\n", " 1437,\n", " 1438,\n", " 1439,\n", " 1440,\n", " 1441,\n", " 1442,\n", " 1443,\n", " 1444,\n", " 1445,\n", " 1449,\n", " 1450,\n", " 1451,\n", " 1452,\n", " 1453,\n", " 1462,\n", " 1463,\n", " 1464,\n", " 1465,\n", " 1466,\n", " 1467,\n", " 1468,\n", " 1469,\n", " 1470,\n", " 1471,\n", " 1472,\n", " 1473,\n", " 1474,\n", " 1475,\n", " 1476,\n", " 1479,\n", " 1480,\n", " 1481,\n", " 1482,\n", " 1483,\n", " 1484,\n", " 1485,\n", " 1486,\n", " 1487,\n", " 1488,\n", " 1506,\n", " 1507,\n", " 1508,\n", " 1509,\n", " 1510,\n", " 1511,\n", " 1512,\n", " 1513,\n", " 1516,\n", " 1517,\n", " 1518,\n", " 1519,\n", " 1520,\n", " 1521,\n", " 1522,\n", " 1523,\n", " 1529,\n", " 1530,\n", " 1531,\n", " 1532,\n", " 1533,\n", " 1537,\n", " 1538,\n", " 1539,\n", " 1540,\n", " 1541,\n", " 1542,\n", " 1543,\n", " 1544,\n", " 1546,\n", " 1547,\n", " 1548,\n", " 1549,\n", " 1550,\n", " 1554,\n", " 1555,\n", " 1556,\n", " 1557,\n", " 1558,\n", " 1559,\n", " 1560,\n", " 1561,\n", " 1562,\n", " 1563,\n", " 1564,\n", " 1565,\n", " 1566,\n", " 1567,\n", " 1568,\n", " 1569,\n", " 1570,\n", " 1571,\n", " 1572,\n", " ...]" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "level_sel.valid_idx" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['AG Or Ma Sc Ab', 'AG Cp Ce', 'AG Cp Ce', ..., 'AG Or Mi Os',\n", " 'AG Or Mi Os', 'AG Or Mi Os'], dtype='