└── PROJECT PRATICE 1.ipynb /PROJECT PRATICE 1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "id": "2c0d28f2", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "name": "stdout", 11 | "output_type": "stream", 12 | "text": [ 13 | "Requirement already satisfied: mediapipe in d:\\program\\lib\\site-packages (0.8.9.1)\n", 14 | "Requirement already satisfied: opencv-contrib-python in d:\\program\\lib\\site-packages (from mediapipe) (4.5.5.62)\n", 15 | "Requirement already satisfied: matplotlib in d:\\program\\lib\\site-packages (from mediapipe) (3.3.4)\n", 16 | "Requirement already satisfied: absl-py in d:\\program\\lib\\site-packages (from mediapipe) (1.0.0)\n", 17 | "Requirement already satisfied: numpy in d:\\program\\lib\\site-packages (from mediapipe) (1.20.1)\n", 18 | "Requirement already satisfied: protobuf>=3.11.4 in d:\\program\\lib\\site-packages (from mediapipe) (3.19.3)\n", 19 | "Requirement already satisfied: attrs>=19.1.0 in d:\\program\\lib\\site-packages (from mediapipe) (20.3.0)\n", 20 | "Requirement already satisfied: six in d:\\program\\lib\\site-packages (from absl-py->mediapipe) (1.15.0)\n", 21 | "Requirement already satisfied: pillow>=6.2.0 in d:\\program\\lib\\site-packages (from matplotlib->mediapipe) (8.2.0)\n", 22 | "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in d:\\program\\lib\\site-packages (from matplotlib->mediapipe) (2.4.7)\n", 23 | "Requirement already satisfied: python-dateutil>=2.1 in d:\\program\\lib\\site-packages (from matplotlib->mediapipe) (2.8.1)\n", 24 | "Requirement already satisfied: kiwisolver>=1.0.1 in d:\\program\\lib\\site-packages (from matplotlib->mediapipe) (1.3.1)\n", 25 | "Requirement already satisfied: cycler>=0.10 in d:\\program\\lib\\site-packages (from matplotlib->mediapipe) (0.10.0)\n" 26 | ] 27 | } 28 | ], 29 | "source": [ 30 | "!pip install mediapipe" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 4, 36 | "id": "03ee601e", 37 | "metadata": {}, 38 | "outputs": [ 39 | { 40 | "name": "stdout", 41 | "output_type": "stream", 42 | "text": [ 43 | "Requirement already satisfied: scikit-learn in d:\\program\\lib\\site-packages (0.24.1)\n", 44 | "Requirement already satisfied: numpy>=1.13.3 in d:\\program\\lib\\site-packages (from scikit-learn) (1.20.1)\n", 45 | "Requirement already satisfied: joblib>=0.11 in d:\\program\\lib\\site-packages (from scikit-learn) (1.0.1)\n", 46 | "Requirement already satisfied: threadpoolctl>=2.0.0 in d:\\program\\lib\\site-packages (from scikit-learn) (2.1.0)\n", 47 | "Requirement already satisfied: scipy>=0.19.1 in d:\\program\\lib\\site-packages (from scikit-learn) (1.6.2)\n" 48 | ] 49 | } 50 | ], 51 | "source": [ 52 | "!pip install scikit-learn" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 26, 58 | "id": "cf18db95", 59 | "metadata": {}, 60 | "outputs": [], 61 | "source": [ 62 | "import mediapipe as mp\n", 63 | "import cv2 " 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "execution_count": 28, 69 | "id": "6b94e17f", 70 | "metadata": {}, 71 | "outputs": [], 72 | "source": [ 73 | "mp_drawing = mp.solutions.drawing_utils\n", 74 | "mp_holistic = mp.solutions.holistic" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": 9, 80 | "id": "51b4a304", 81 | "metadata": {}, 82 | "outputs": [], 83 | "source": [ 84 | "cap = cv2.VideoCapture(0)\n", 85 | "with mp_holistic.Holistic() as holistic:\n", 86 | " \n", 87 | " while cap.isOpened():\n", 88 | " ret, frame = cap.read()\n", 89 | " image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n", 90 | " image.flags.writeable = False\n", 91 | " results = holistic.process(image)\n", 92 | " image.flags.writeable = True\n", 93 | " image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)\n", 94 | " mp_drawing.draw_landmarks(image, results.face_landmarks, mp_holistic.FACEMESH_CONTOURS, \n", 95 | " mp_drawing.DrawingSpec(color=(80,110,10), thickness=1, circle_radius=1),\n", 96 | " mp_drawing.DrawingSpec(color=(80,256,121), thickness=1, circle_radius=1)\n", 97 | " )\n", 98 | "\n", 99 | " mp_drawing.draw_landmarks(image, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 100 | " mp_drawing.DrawingSpec(color=(80,22,10), thickness=2, circle_radius=4),\n", 101 | " mp_drawing.DrawingSpec(color=(80,44,121), thickness=2, circle_radius=2)\n", 102 | " )\n", 103 | "\n", 104 | " mp_drawing.draw_landmarks(image, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 105 | " mp_drawing.DrawingSpec(color=(121,22,76), thickness=2, circle_radius=4),\n", 106 | " mp_drawing.DrawingSpec(color=(121,44,250), thickness=2, circle_radius=2)\n", 107 | " )\n", 108 | "\n", 109 | " mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS, \n", 110 | " mp_drawing.DrawingSpec(color=(245,117,66), thickness=2, circle_radius=4),\n", 111 | " mp_drawing.DrawingSpec(color=(245,66,230), thickness=2, circle_radius=2)\n", 112 | " )\n", 113 | " \n", 114 | " cv2.imshow('Testing Video', image)\n", 115 | "\n", 116 | " if cv2.waitKey(10) & 0xFF == ord('q'):\n", 117 | " break\n", 118 | "\n", 119 | "cap.release()\n", 120 | "cv2.destroyAllWindows()" 121 | ] 122 | }, 123 | { 124 | "cell_type": "code", 125 | "execution_count": 10, 126 | "id": "8769ec22", 127 | "metadata": {}, 128 | "outputs": [], 129 | "source": [ 130 | "import csv\n", 131 | "import os\n", 132 | "import numpy as np\n" 133 | ] 134 | }, 135 | { 136 | "cell_type": "code", 137 | "execution_count": 11, 138 | "id": "4c376516", 139 | "metadata": {}, 140 | "outputs": [ 141 | { 142 | "data": { 143 | "text/plain": [ 144 | "501" 145 | ] 146 | }, 147 | "execution_count": 11, 148 | "metadata": {}, 149 | "output_type": "execute_result" 150 | } 151 | ], 152 | "source": [ 153 | "no_records = len(results.pose_landmarks.landmark)+len(results.face_landmarks.landmark)\n", 154 | "no_records" 155 | ] 156 | }, 157 | { 158 | "cell_type": "code", 159 | "execution_count": 13, 160 | "id": "86dd6e88", 161 | "metadata": {}, 162 | "outputs": [], 163 | "source": [ 164 | "landmarks = ['class']\n", 165 | "for val in range(1, no_records+1):\n", 166 | " landmarks += ['x{}'.format(val), 'y{}'.format(val), 'z{}'.format(val), 'v{}'.format(val)]" 167 | ] 168 | }, 169 | { 170 | "cell_type": "code", 171 | "execution_count": 14, 172 | "id": "0d1bd9e6", 173 | "metadata": {}, 174 | "outputs": [ 175 | { 176 | "data": { 177 | "text/plain": [ 178 | "['class',\n", 179 | " 'x1',\n", 180 | " 'y1',\n", 181 | " 'z1',\n", 182 | " 'v1',\n", 183 | " 'x2',\n", 184 | " 'y2',\n", 185 | " 'z2',\n", 186 | " 'v2',\n", 187 | " 'x3',\n", 188 | " 'y3',\n", 189 | " 'z3',\n", 190 | " 'v3',\n", 191 | " 'x4',\n", 192 | " 'y4',\n", 193 | " 'z4',\n", 194 | " 'v4',\n", 195 | " 'x5',\n", 196 | " 'y5',\n", 197 | " 'z5',\n", 198 | " 'v5',\n", 199 | " 'x6',\n", 200 | " 'y6',\n", 201 | " 'z6',\n", 202 | " 'v6',\n", 203 | " 'x7',\n", 204 | " 'y7',\n", 205 | " 'z7',\n", 206 | " 'v7',\n", 207 | " 'x8',\n", 208 | " 'y8',\n", 209 | " 'z8',\n", 210 | " 'v8',\n", 211 | " 'x9',\n", 212 | " 'y9',\n", 213 | " 'z9',\n", 214 | " 'v9',\n", 215 | " 'x10',\n", 216 | " 'y10',\n", 217 | " 'z10',\n", 218 | " 'v10',\n", 219 | " 'x11',\n", 220 | " 'y11',\n", 221 | " 'z11',\n", 222 | " 'v11',\n", 223 | " 'x12',\n", 224 | " 'y12',\n", 225 | " 'z12',\n", 226 | " 'v12',\n", 227 | " 'x13',\n", 228 | " 'y13',\n", 229 | " 'z13',\n", 230 | " 'v13',\n", 231 | " 'x14',\n", 232 | " 'y14',\n", 233 | " 'z14',\n", 234 | " 'v14',\n", 235 | " 'x15',\n", 236 | " 'y15',\n", 237 | " 'z15',\n", 238 | " 'v15',\n", 239 | " 'x16',\n", 240 | " 'y16',\n", 241 | " 'z16',\n", 242 | " 'v16',\n", 243 | " 'x17',\n", 244 | " 'y17',\n", 245 | " 'z17',\n", 246 | " 'v17',\n", 247 | " 'x18',\n", 248 | " 'y18',\n", 249 | " 'z18',\n", 250 | " 'v18',\n", 251 | " 'x19',\n", 252 | " 'y19',\n", 253 | " 'z19',\n", 254 | " 'v19',\n", 255 | " 'x20',\n", 256 | " 'y20',\n", 257 | " 'z20',\n", 258 | " 'v20',\n", 259 | " 'x21',\n", 260 | " 'y21',\n", 261 | " 'z21',\n", 262 | " 'v21',\n", 263 | " 'x22',\n", 264 | " 'y22',\n", 265 | " 'z22',\n", 266 | " 'v22',\n", 267 | " 'x23',\n", 268 | " 'y23',\n", 269 | " 'z23',\n", 270 | " 'v23',\n", 271 | " 'x24',\n", 272 | " 'y24',\n", 273 | " 'z24',\n", 274 | " 'v24',\n", 275 | " 'x25',\n", 276 | " 'y25',\n", 277 | " 'z25',\n", 278 | " 'v25',\n", 279 | " 'x26',\n", 280 | " 'y26',\n", 281 | " 'z26',\n", 282 | " 'v26',\n", 283 | " 'x27',\n", 284 | " 'y27',\n", 285 | " 'z27',\n", 286 | " 'v27',\n", 287 | " 'x28',\n", 288 | " 'y28',\n", 289 | " 'z28',\n", 290 | " 'v28',\n", 291 | " 'x29',\n", 292 | " 'y29',\n", 293 | " 'z29',\n", 294 | " 'v29',\n", 295 | " 'x30',\n", 296 | " 'y30',\n", 297 | " 'z30',\n", 298 | " 'v30',\n", 299 | " 'x31',\n", 300 | " 'y31',\n", 301 | " 'z31',\n", 302 | " 'v31',\n", 303 | " 'x32',\n", 304 | " 'y32',\n", 305 | " 'z32',\n", 306 | " 'v32',\n", 307 | " 'x33',\n", 308 | " 'y33',\n", 309 | " 'z33',\n", 310 | " 'v33',\n", 311 | " 'x34',\n", 312 | " 'y34',\n", 313 | " 'z34',\n", 314 | " 'v34',\n", 315 | " 'x35',\n", 316 | " 'y35',\n", 317 | " 'z35',\n", 318 | " 'v35',\n", 319 | " 'x36',\n", 320 | " 'y36',\n", 321 | " 'z36',\n", 322 | " 'v36',\n", 323 | " 'x37',\n", 324 | " 'y37',\n", 325 | " 'z37',\n", 326 | " 'v37',\n", 327 | " 'x38',\n", 328 | " 'y38',\n", 329 | " 'z38',\n", 330 | " 'v38',\n", 331 | " 'x39',\n", 332 | " 'y39',\n", 333 | " 'z39',\n", 334 | " 'v39',\n", 335 | " 'x40',\n", 336 | " 'y40',\n", 337 | " 'z40',\n", 338 | " 'v40',\n", 339 | " 'x41',\n", 340 | " 'y41',\n", 341 | " 'z41',\n", 342 | " 'v41',\n", 343 | " 'x42',\n", 344 | " 'y42',\n", 345 | " 'z42',\n", 346 | " 'v42',\n", 347 | " 'x43',\n", 348 | " 'y43',\n", 349 | " 'z43',\n", 350 | " 'v43',\n", 351 | " 'x44',\n", 352 | " 'y44',\n", 353 | " 'z44',\n", 354 | " 'v44',\n", 355 | " 'x45',\n", 356 | " 'y45',\n", 357 | " 'z45',\n", 358 | " 'v45',\n", 359 | " 'x46',\n", 360 | " 'y46',\n", 361 | " 'z46',\n", 362 | " 'v46',\n", 363 | " 'x47',\n", 364 | " 'y47',\n", 365 | " 'z47',\n", 366 | " 'v47',\n", 367 | " 'x48',\n", 368 | " 'y48',\n", 369 | " 'z48',\n", 370 | " 'v48',\n", 371 | " 'x49',\n", 372 | " 'y49',\n", 373 | " 'z49',\n", 374 | " 'v49',\n", 375 | " 'x50',\n", 376 | " 'y50',\n", 377 | " 'z50',\n", 378 | " 'v50',\n", 379 | " 'x51',\n", 380 | " 'y51',\n", 381 | " 'z51',\n", 382 | " 'v51',\n", 383 | " 'x52',\n", 384 | " 'y52',\n", 385 | " 'z52',\n", 386 | " 'v52',\n", 387 | " 'x53',\n", 388 | " 'y53',\n", 389 | " 'z53',\n", 390 | " 'v53',\n", 391 | " 'x54',\n", 392 | " 'y54',\n", 393 | " 'z54',\n", 394 | " 'v54',\n", 395 | " 'x55',\n", 396 | " 'y55',\n", 397 | " 'z55',\n", 398 | " 'v55',\n", 399 | " 'x56',\n", 400 | " 'y56',\n", 401 | " 'z56',\n", 402 | " 'v56',\n", 403 | " 'x57',\n", 404 | " 'y57',\n", 405 | " 'z57',\n", 406 | " 'v57',\n", 407 | " 'x58',\n", 408 | " 'y58',\n", 409 | " 'z58',\n", 410 | " 'v58',\n", 411 | " 'x59',\n", 412 | " 'y59',\n", 413 | " 'z59',\n", 414 | " 'v59',\n", 415 | " 'x60',\n", 416 | " 'y60',\n", 417 | " 'z60',\n", 418 | " 'v60',\n", 419 | " 'x61',\n", 420 | " 'y61',\n", 421 | " 'z61',\n", 422 | " 'v61',\n", 423 | " 'x62',\n", 424 | " 'y62',\n", 425 | " 'z62',\n", 426 | " 'v62',\n", 427 | " 'x63',\n", 428 | " 'y63',\n", 429 | " 'z63',\n", 430 | " 'v63',\n", 431 | " 'x64',\n", 432 | " 'y64',\n", 433 | " 'z64',\n", 434 | " 'v64',\n", 435 | " 'x65',\n", 436 | " 'y65',\n", 437 | " 'z65',\n", 438 | " 'v65',\n", 439 | " 'x66',\n", 440 | " 'y66',\n", 441 | " 'z66',\n", 442 | " 'v66',\n", 443 | " 'x67',\n", 444 | " 'y67',\n", 445 | " 'z67',\n", 446 | " 'v67',\n", 447 | " 'x68',\n", 448 | " 'y68',\n", 449 | " 'z68',\n", 450 | " 'v68',\n", 451 | " 'x69',\n", 452 | " 'y69',\n", 453 | " 'z69',\n", 454 | " 'v69',\n", 455 | " 'x70',\n", 456 | " 'y70',\n", 457 | " 'z70',\n", 458 | " 'v70',\n", 459 | " 'x71',\n", 460 | " 'y71',\n", 461 | " 'z71',\n", 462 | " 'v71',\n", 463 | " 'x72',\n", 464 | " 'y72',\n", 465 | " 'z72',\n", 466 | " 'v72',\n", 467 | " 'x73',\n", 468 | " 'y73',\n", 469 | " 'z73',\n", 470 | " 'v73',\n", 471 | " 'x74',\n", 472 | " 'y74',\n", 473 | " 'z74',\n", 474 | " 'v74',\n", 475 | " 'x75',\n", 476 | " 'y75',\n", 477 | " 'z75',\n", 478 | " 'v75',\n", 479 | " 'x76',\n", 480 | " 'y76',\n", 481 | " 'z76',\n", 482 | " 'v76',\n", 483 | " 'x77',\n", 484 | " 'y77',\n", 485 | " 'z77',\n", 486 | " 'v77',\n", 487 | " 'x78',\n", 488 | " 'y78',\n", 489 | " 'z78',\n", 490 | " 'v78',\n", 491 | " 'x79',\n", 492 | " 'y79',\n", 493 | " 'z79',\n", 494 | " 'v79',\n", 495 | " 'x80',\n", 496 | " 'y80',\n", 497 | " 'z80',\n", 498 | " 'v80',\n", 499 | " 'x81',\n", 500 | " 'y81',\n", 501 | " 'z81',\n", 502 | " 'v81',\n", 503 | " 'x82',\n", 504 | " 'y82',\n", 505 | " 'z82',\n", 506 | " 'v82',\n", 507 | " 'x83',\n", 508 | " 'y83',\n", 509 | " 'z83',\n", 510 | " 'v83',\n", 511 | " 'x84',\n", 512 | " 'y84',\n", 513 | " 'z84',\n", 514 | " 'v84',\n", 515 | " 'x85',\n", 516 | " 'y85',\n", 517 | " 'z85',\n", 518 | " 'v85',\n", 519 | " 'x86',\n", 520 | " 'y86',\n", 521 | " 'z86',\n", 522 | " 'v86',\n", 523 | " 'x87',\n", 524 | " 'y87',\n", 525 | " 'z87',\n", 526 | " 'v87',\n", 527 | " 'x88',\n", 528 | " 'y88',\n", 529 | " 'z88',\n", 530 | " 'v88',\n", 531 | " 'x89',\n", 532 | " 'y89',\n", 533 | " 'z89',\n", 534 | " 'v89',\n", 535 | " 'x90',\n", 536 | " 'y90',\n", 537 | " 'z90',\n", 538 | " 'v90',\n", 539 | " 'x91',\n", 540 | " 'y91',\n", 541 | " 'z91',\n", 542 | " 'v91',\n", 543 | " 'x92',\n", 544 | " 'y92',\n", 545 | " 'z92',\n", 546 | " 'v92',\n", 547 | " 'x93',\n", 548 | " 'y93',\n", 549 | " 'z93',\n", 550 | " 'v93',\n", 551 | " 'x94',\n", 552 | " 'y94',\n", 553 | " 'z94',\n", 554 | " 'v94',\n", 555 | " 'x95',\n", 556 | " 'y95',\n", 557 | " 'z95',\n", 558 | " 'v95',\n", 559 | " 'x96',\n", 560 | " 'y96',\n", 561 | " 'z96',\n", 562 | " 'v96',\n", 563 | " 'x97',\n", 564 | " 'y97',\n", 565 | " 'z97',\n", 566 | " 'v97',\n", 567 | " 'x98',\n", 568 | " 'y98',\n", 569 | " 'z98',\n", 570 | " 'v98',\n", 571 | " 'x99',\n", 572 | " 'y99',\n", 573 | " 'z99',\n", 574 | " 'v99',\n", 575 | " 'x100',\n", 576 | " 'y100',\n", 577 | " 'z100',\n", 578 | " 'v100',\n", 579 | " 'x101',\n", 580 | " 'y101',\n", 581 | " 'z101',\n", 582 | " 'v101',\n", 583 | " 'x102',\n", 584 | " 'y102',\n", 585 | " 'z102',\n", 586 | " 'v102',\n", 587 | " 'x103',\n", 588 | " 'y103',\n", 589 | " 'z103',\n", 590 | " 'v103',\n", 591 | " 'x104',\n", 592 | " 'y104',\n", 593 | " 'z104',\n", 594 | " 'v104',\n", 595 | " 'x105',\n", 596 | " 'y105',\n", 597 | " 'z105',\n", 598 | " 'v105',\n", 599 | " 'x106',\n", 600 | " 'y106',\n", 601 | " 'z106',\n", 602 | " 'v106',\n", 603 | " 'x107',\n", 604 | " 'y107',\n", 605 | " 'z107',\n", 606 | " 'v107',\n", 607 | " 'x108',\n", 608 | " 'y108',\n", 609 | " 'z108',\n", 610 | " 'v108',\n", 611 | " 'x109',\n", 612 | " 'y109',\n", 613 | " 'z109',\n", 614 | " 'v109',\n", 615 | " 'x110',\n", 616 | " 'y110',\n", 617 | " 'z110',\n", 618 | " 'v110',\n", 619 | " 'x111',\n", 620 | " 'y111',\n", 621 | " 'z111',\n", 622 | " 'v111',\n", 623 | " 'x112',\n", 624 | " 'y112',\n", 625 | " 'z112',\n", 626 | " 'v112',\n", 627 | " 'x113',\n", 628 | " 'y113',\n", 629 | " 'z113',\n", 630 | " 'v113',\n", 631 | " 'x114',\n", 632 | " 'y114',\n", 633 | " 'z114',\n", 634 | " 'v114',\n", 635 | " 'x115',\n", 636 | " 'y115',\n", 637 | " 'z115',\n", 638 | " 'v115',\n", 639 | " 'x116',\n", 640 | " 'y116',\n", 641 | " 'z116',\n", 642 | " 'v116',\n", 643 | " 'x117',\n", 644 | " 'y117',\n", 645 | " 'z117',\n", 646 | " 'v117',\n", 647 | " 'x118',\n", 648 | " 'y118',\n", 649 | " 'z118',\n", 650 | " 'v118',\n", 651 | " 'x119',\n", 652 | " 'y119',\n", 653 | " 'z119',\n", 654 | " 'v119',\n", 655 | " 'x120',\n", 656 | " 'y120',\n", 657 | " 'z120',\n", 658 | " 'v120',\n", 659 | " 'x121',\n", 660 | " 'y121',\n", 661 | " 'z121',\n", 662 | " 'v121',\n", 663 | " 'x122',\n", 664 | " 'y122',\n", 665 | " 'z122',\n", 666 | " 'v122',\n", 667 | " 'x123',\n", 668 | " 'y123',\n", 669 | " 'z123',\n", 670 | " 'v123',\n", 671 | " 'x124',\n", 672 | " 'y124',\n", 673 | " 'z124',\n", 674 | " 'v124',\n", 675 | " 'x125',\n", 676 | " 'y125',\n", 677 | " 'z125',\n", 678 | " 'v125',\n", 679 | " 'x126',\n", 680 | " 'y126',\n", 681 | " 'z126',\n", 682 | " 'v126',\n", 683 | " 'x127',\n", 684 | " 'y127',\n", 685 | " 'z127',\n", 686 | " 'v127',\n", 687 | " 'x128',\n", 688 | " 'y128',\n", 689 | " 'z128',\n", 690 | " 'v128',\n", 691 | " 'x129',\n", 692 | " 'y129',\n", 693 | " 'z129',\n", 694 | " 'v129',\n", 695 | " 'x130',\n", 696 | " 'y130',\n", 697 | " 'z130',\n", 698 | " 'v130',\n", 699 | " 'x131',\n", 700 | " 'y131',\n", 701 | " 'z131',\n", 702 | " 'v131',\n", 703 | " 'x132',\n", 704 | " 'y132',\n", 705 | " 'z132',\n", 706 | " 'v132',\n", 707 | " 'x133',\n", 708 | " 'y133',\n", 709 | " 'z133',\n", 710 | " 'v133',\n", 711 | " 'x134',\n", 712 | " 'y134',\n", 713 | " 'z134',\n", 714 | " 'v134',\n", 715 | " 'x135',\n", 716 | " 'y135',\n", 717 | " 'z135',\n", 718 | " 'v135',\n", 719 | " 'x136',\n", 720 | " 'y136',\n", 721 | " 'z136',\n", 722 | " 'v136',\n", 723 | " 'x137',\n", 724 | " 'y137',\n", 725 | " 'z137',\n", 726 | " 'v137',\n", 727 | " 'x138',\n", 728 | " 'y138',\n", 729 | " 'z138',\n", 730 | " 'v138',\n", 731 | " 'x139',\n", 732 | " 'y139',\n", 733 | " 'z139',\n", 734 | " 'v139',\n", 735 | " 'x140',\n", 736 | " 'y140',\n", 737 | " 'z140',\n", 738 | " 'v140',\n", 739 | " 'x141',\n", 740 | " 'y141',\n", 741 | " 'z141',\n", 742 | " 'v141',\n", 743 | " 'x142',\n", 744 | " 'y142',\n", 745 | " 'z142',\n", 746 | " 'v142',\n", 747 | " 'x143',\n", 748 | " 'y143',\n", 749 | " 'z143',\n", 750 | " 'v143',\n", 751 | " 'x144',\n", 752 | " 'y144',\n", 753 | " 'z144',\n", 754 | " 'v144',\n", 755 | " 'x145',\n", 756 | " 'y145',\n", 757 | " 'z145',\n", 758 | " 'v145',\n", 759 | " 'x146',\n", 760 | " 'y146',\n", 761 | " 'z146',\n", 762 | " 'v146',\n", 763 | " 'x147',\n", 764 | " 'y147',\n", 765 | " 'z147',\n", 766 | " 'v147',\n", 767 | " 'x148',\n", 768 | " 'y148',\n", 769 | " 'z148',\n", 770 | " 'v148',\n", 771 | " 'x149',\n", 772 | " 'y149',\n", 773 | " 'z149',\n", 774 | " 'v149',\n", 775 | " 'x150',\n", 776 | " 'y150',\n", 777 | " 'z150',\n", 778 | " 'v150',\n", 779 | " 'x151',\n", 780 | " 'y151',\n", 781 | " 'z151',\n", 782 | " 'v151',\n", 783 | " 'x152',\n", 784 | " 'y152',\n", 785 | " 'z152',\n", 786 | " 'v152',\n", 787 | " 'x153',\n", 788 | " 'y153',\n", 789 | " 'z153',\n", 790 | " 'v153',\n", 791 | " 'x154',\n", 792 | " 'y154',\n", 793 | " 'z154',\n", 794 | " 'v154',\n", 795 | " 'x155',\n", 796 | " 'y155',\n", 797 | " 'z155',\n", 798 | " 'v155',\n", 799 | " 'x156',\n", 800 | " 'y156',\n", 801 | " 'z156',\n", 802 | " 'v156',\n", 803 | " 'x157',\n", 804 | " 'y157',\n", 805 | " 'z157',\n", 806 | " 'v157',\n", 807 | " 'x158',\n", 808 | " 'y158',\n", 809 | " 'z158',\n", 810 | " 'v158',\n", 811 | " 'x159',\n", 812 | " 'y159',\n", 813 | " 'z159',\n", 814 | " 'v159',\n", 815 | " 'x160',\n", 816 | " 'y160',\n", 817 | " 'z160',\n", 818 | " 'v160',\n", 819 | " 'x161',\n", 820 | " 'y161',\n", 821 | " 'z161',\n", 822 | " 'v161',\n", 823 | " 'x162',\n", 824 | " 'y162',\n", 825 | " 'z162',\n", 826 | " 'v162',\n", 827 | " 'x163',\n", 828 | " 'y163',\n", 829 | " 'z163',\n", 830 | " 'v163',\n", 831 | " 'x164',\n", 832 | " 'y164',\n", 833 | " 'z164',\n", 834 | " 'v164',\n", 835 | " 'x165',\n", 836 | " 'y165',\n", 837 | " 'z165',\n", 838 | " 'v165',\n", 839 | " 'x166',\n", 840 | " 'y166',\n", 841 | " 'z166',\n", 842 | " 'v166',\n", 843 | " 'x167',\n", 844 | " 'y167',\n", 845 | " 'z167',\n", 846 | " 'v167',\n", 847 | " 'x168',\n", 848 | " 'y168',\n", 849 | " 'z168',\n", 850 | " 'v168',\n", 851 | " 'x169',\n", 852 | " 'y169',\n", 853 | " 'z169',\n", 854 | " 'v169',\n", 855 | " 'x170',\n", 856 | " 'y170',\n", 857 | " 'z170',\n", 858 | " 'v170',\n", 859 | " 'x171',\n", 860 | " 'y171',\n", 861 | " 'z171',\n", 862 | " 'v171',\n", 863 | " 'x172',\n", 864 | " 'y172',\n", 865 | " 'z172',\n", 866 | " 'v172',\n", 867 | " 'x173',\n", 868 | " 'y173',\n", 869 | " 'z173',\n", 870 | " 'v173',\n", 871 | " 'x174',\n", 872 | " 'y174',\n", 873 | " 'z174',\n", 874 | " 'v174',\n", 875 | " 'x175',\n", 876 | " 'y175',\n", 877 | " 'z175',\n", 878 | " 'v175',\n", 879 | " 'x176',\n", 880 | " 'y176',\n", 881 | " 'z176',\n", 882 | " 'v176',\n", 883 | " 'x177',\n", 884 | " 'y177',\n", 885 | " 'z177',\n", 886 | " 'v177',\n", 887 | " 'x178',\n", 888 | " 'y178',\n", 889 | " 'z178',\n", 890 | " 'v178',\n", 891 | " 'x179',\n", 892 | " 'y179',\n", 893 | " 'z179',\n", 894 | " 'v179',\n", 895 | " 'x180',\n", 896 | " 'y180',\n", 897 | " 'z180',\n", 898 | " 'v180',\n", 899 | " 'x181',\n", 900 | " 'y181',\n", 901 | " 'z181',\n", 902 | " 'v181',\n", 903 | " 'x182',\n", 904 | " 'y182',\n", 905 | " 'z182',\n", 906 | " 'v182',\n", 907 | " 'x183',\n", 908 | " 'y183',\n", 909 | " 'z183',\n", 910 | " 'v183',\n", 911 | " 'x184',\n", 912 | " 'y184',\n", 913 | " 'z184',\n", 914 | " 'v184',\n", 915 | " 'x185',\n", 916 | " 'y185',\n", 917 | " 'z185',\n", 918 | " 'v185',\n", 919 | " 'x186',\n", 920 | " 'y186',\n", 921 | " 'z186',\n", 922 | " 'v186',\n", 923 | " 'x187',\n", 924 | " 'y187',\n", 925 | " 'z187',\n", 926 | " 'v187',\n", 927 | " 'x188',\n", 928 | " 'y188',\n", 929 | " 'z188',\n", 930 | " 'v188',\n", 931 | " 'x189',\n", 932 | " 'y189',\n", 933 | " 'z189',\n", 934 | " 'v189',\n", 935 | " 'x190',\n", 936 | " 'y190',\n", 937 | " 'z190',\n", 938 | " 'v190',\n", 939 | " 'x191',\n", 940 | " 'y191',\n", 941 | " 'z191',\n", 942 | " 'v191',\n", 943 | " 'x192',\n", 944 | " 'y192',\n", 945 | " 'z192',\n", 946 | " 'v192',\n", 947 | " 'x193',\n", 948 | " 'y193',\n", 949 | " 'z193',\n", 950 | " 'v193',\n", 951 | " 'x194',\n", 952 | " 'y194',\n", 953 | " 'z194',\n", 954 | " 'v194',\n", 955 | " 'x195',\n", 956 | " 'y195',\n", 957 | " 'z195',\n", 958 | " 'v195',\n", 959 | " 'x196',\n", 960 | " 'y196',\n", 961 | " 'z196',\n", 962 | " 'v196',\n", 963 | " 'x197',\n", 964 | " 'y197',\n", 965 | " 'z197',\n", 966 | " 'v197',\n", 967 | " 'x198',\n", 968 | " 'y198',\n", 969 | " 'z198',\n", 970 | " 'v198',\n", 971 | " 'x199',\n", 972 | " 'y199',\n", 973 | " 'z199',\n", 974 | " 'v199',\n", 975 | " 'x200',\n", 976 | " 'y200',\n", 977 | " 'z200',\n", 978 | " 'v200',\n", 979 | " 'x201',\n", 980 | " 'y201',\n", 981 | " 'z201',\n", 982 | " 'v201',\n", 983 | " 'x202',\n", 984 | " 'y202',\n", 985 | " 'z202',\n", 986 | " 'v202',\n", 987 | " 'x203',\n", 988 | " 'y203',\n", 989 | " 'z203',\n", 990 | " 'v203',\n", 991 | " 'x204',\n", 992 | " 'y204',\n", 993 | " 'z204',\n", 994 | " 'v204',\n", 995 | " 'x205',\n", 996 | " 'y205',\n", 997 | " 'z205',\n", 998 | " 'v205',\n", 999 | " 'x206',\n", 1000 | " 'y206',\n", 1001 | " 'z206',\n", 1002 | " 'v206',\n", 1003 | " 'x207',\n", 1004 | " 'y207',\n", 1005 | " 'z207',\n", 1006 | " 'v207',\n", 1007 | " 'x208',\n", 1008 | " 'y208',\n", 1009 | " 'z208',\n", 1010 | " 'v208',\n", 1011 | " 'x209',\n", 1012 | " 'y209',\n", 1013 | " 'z209',\n", 1014 | " 'v209',\n", 1015 | " 'x210',\n", 1016 | " 'y210',\n", 1017 | " 'z210',\n", 1018 | " 'v210',\n", 1019 | " 'x211',\n", 1020 | " 'y211',\n", 1021 | " 'z211',\n", 1022 | " 'v211',\n", 1023 | " 'x212',\n", 1024 | " 'y212',\n", 1025 | " 'z212',\n", 1026 | " 'v212',\n", 1027 | " 'x213',\n", 1028 | " 'y213',\n", 1029 | " 'z213',\n", 1030 | " 'v213',\n", 1031 | " 'x214',\n", 1032 | " 'y214',\n", 1033 | " 'z214',\n", 1034 | " 'v214',\n", 1035 | " 'x215',\n", 1036 | " 'y215',\n", 1037 | " 'z215',\n", 1038 | " 'v215',\n", 1039 | " 'x216',\n", 1040 | " 'y216',\n", 1041 | " 'z216',\n", 1042 | " 'v216',\n", 1043 | " 'x217',\n", 1044 | " 'y217',\n", 1045 | " 'z217',\n", 1046 | " 'v217',\n", 1047 | " 'x218',\n", 1048 | " 'y218',\n", 1049 | " 'z218',\n", 1050 | " 'v218',\n", 1051 | " 'x219',\n", 1052 | " 'y219',\n", 1053 | " 'z219',\n", 1054 | " 'v219',\n", 1055 | " 'x220',\n", 1056 | " 'y220',\n", 1057 | " 'z220',\n", 1058 | " 'v220',\n", 1059 | " 'x221',\n", 1060 | " 'y221',\n", 1061 | " 'z221',\n", 1062 | " 'v221',\n", 1063 | " 'x222',\n", 1064 | " 'y222',\n", 1065 | " 'z222',\n", 1066 | " 'v222',\n", 1067 | " 'x223',\n", 1068 | " 'y223',\n", 1069 | " 'z223',\n", 1070 | " 'v223',\n", 1071 | " 'x224',\n", 1072 | " 'y224',\n", 1073 | " 'z224',\n", 1074 | " 'v224',\n", 1075 | " 'x225',\n", 1076 | " 'y225',\n", 1077 | " 'z225',\n", 1078 | " 'v225',\n", 1079 | " 'x226',\n", 1080 | " 'y226',\n", 1081 | " 'z226',\n", 1082 | " 'v226',\n", 1083 | " 'x227',\n", 1084 | " 'y227',\n", 1085 | " 'z227',\n", 1086 | " 'v227',\n", 1087 | " 'x228',\n", 1088 | " 'y228',\n", 1089 | " 'z228',\n", 1090 | " 'v228',\n", 1091 | " 'x229',\n", 1092 | " 'y229',\n", 1093 | " 'z229',\n", 1094 | " 'v229',\n", 1095 | " 'x230',\n", 1096 | " 'y230',\n", 1097 | " 'z230',\n", 1098 | " 'v230',\n", 1099 | " 'x231',\n", 1100 | " 'y231',\n", 1101 | " 'z231',\n", 1102 | " 'v231',\n", 1103 | " 'x232',\n", 1104 | " 'y232',\n", 1105 | " 'z232',\n", 1106 | " 'v232',\n", 1107 | " 'x233',\n", 1108 | " 'y233',\n", 1109 | " 'z233',\n", 1110 | " 'v233',\n", 1111 | " 'x234',\n", 1112 | " 'y234',\n", 1113 | " 'z234',\n", 1114 | " 'v234',\n", 1115 | " 'x235',\n", 1116 | " 'y235',\n", 1117 | " 'z235',\n", 1118 | " 'v235',\n", 1119 | " 'x236',\n", 1120 | " 'y236',\n", 1121 | " 'z236',\n", 1122 | " 'v236',\n", 1123 | " 'x237',\n", 1124 | " 'y237',\n", 1125 | " 'z237',\n", 1126 | " 'v237',\n", 1127 | " 'x238',\n", 1128 | " 'y238',\n", 1129 | " 'z238',\n", 1130 | " 'v238',\n", 1131 | " 'x239',\n", 1132 | " 'y239',\n", 1133 | " 'z239',\n", 1134 | " 'v239',\n", 1135 | " 'x240',\n", 1136 | " 'y240',\n", 1137 | " 'z240',\n", 1138 | " 'v240',\n", 1139 | " 'x241',\n", 1140 | " 'y241',\n", 1141 | " 'z241',\n", 1142 | " 'v241',\n", 1143 | " 'x242',\n", 1144 | " 'y242',\n", 1145 | " 'z242',\n", 1146 | " 'v242',\n", 1147 | " 'x243',\n", 1148 | " 'y243',\n", 1149 | " 'z243',\n", 1150 | " 'v243',\n", 1151 | " 'x244',\n", 1152 | " 'y244',\n", 1153 | " 'z244',\n", 1154 | " 'v244',\n", 1155 | " 'x245',\n", 1156 | " 'y245',\n", 1157 | " 'z245',\n", 1158 | " 'v245',\n", 1159 | " 'x246',\n", 1160 | " 'y246',\n", 1161 | " 'z246',\n", 1162 | " 'v246',\n", 1163 | " 'x247',\n", 1164 | " 'y247',\n", 1165 | " 'z247',\n", 1166 | " 'v247',\n", 1167 | " 'x248',\n", 1168 | " 'y248',\n", 1169 | " 'z248',\n", 1170 | " 'v248',\n", 1171 | " 'x249',\n", 1172 | " 'y249',\n", 1173 | " 'z249',\n", 1174 | " 'v249',\n", 1175 | " 'x250',\n", 1176 | " 'y250',\n", 1177 | " 'z250',\n", 1178 | " ...]" 1179 | ] 1180 | }, 1181 | "execution_count": 14, 1182 | "metadata": {}, 1183 | "output_type": "execute_result" 1184 | } 1185 | ], 1186 | "source": [ 1187 | "landmarks" 1188 | ] 1189 | }, 1190 | { 1191 | "cell_type": "code", 1192 | "execution_count": 87, 1193 | "id": "10437f2f", 1194 | "metadata": {}, 1195 | "outputs": [], 1196 | "source": [ 1197 | "with open(\"coord.csv\", mode = 'w' , newline = \"\") as f:\n", 1198 | " csv_write = csv.writer(f, delimiter = \",\",quotechar = '\"' , quoting = csv.QUOTE_MINIMAL)\n", 1199 | " csv_write.writerow(landmarks)" 1200 | ] 1201 | }, 1202 | { 1203 | "cell_type": "code", 1204 | "execution_count": 90, 1205 | "id": "15d23afc", 1206 | "metadata": {}, 1207 | "outputs": [], 1208 | "source": [ 1209 | "class_name = \"Normal\"" 1210 | ] 1211 | }, 1212 | { 1213 | "cell_type": "code", 1214 | "execution_count": 91, 1215 | "id": "91712f19", 1216 | "metadata": {}, 1217 | "outputs": [], 1218 | "source": [ 1219 | "cap = cv2.VideoCapture(0)\n", 1220 | "with mp_holistic.Holistic() as holistic:\n", 1221 | " \n", 1222 | " while cap.isOpened():\n", 1223 | " ret, frame = cap.read()\n", 1224 | " image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n", 1225 | " image.flags.writeable = False\n", 1226 | " results = holistic.process(image)\n", 1227 | " image.flags.writeable = True\n", 1228 | " image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)\n", 1229 | " mp_drawing.draw_landmarks(image, results.face_landmarks, mp_holistic.FACEMESH_CONTOURS, \n", 1230 | " mp_drawing.DrawingSpec(color=(80,110,10), thickness=1, circle_radius=1),\n", 1231 | " mp_drawing.DrawingSpec(color=(80,256,121), thickness=1, circle_radius=1)\n", 1232 | " )\n", 1233 | "\n", 1234 | " mp_drawing.draw_landmarks(image, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 1235 | " mp_drawing.DrawingSpec(color=(80,22,10), thickness=2, circle_radius=4),\n", 1236 | " mp_drawing.DrawingSpec(color=(80,44,121), thickness=2, circle_radius=2)\n", 1237 | " )\n", 1238 | "\n", 1239 | " mp_drawing.draw_landmarks(image, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 1240 | " mp_drawing.DrawingSpec(color=(121,22,76), thickness=2, circle_radius=4),\n", 1241 | " mp_drawing.DrawingSpec(color=(121,44,250), thickness=2, circle_radius=2)\n", 1242 | " )\n", 1243 | "\n", 1244 | " mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS, \n", 1245 | " mp_drawing.DrawingSpec(color=(245,117,66), thickness=2, circle_radius=4),\n", 1246 | " mp_drawing.DrawingSpec(color=(245,66,230), thickness=2, circle_radius=2)\n", 1247 | " )\n", 1248 | " try:\n", 1249 | " \n", 1250 | " pose = results.pose_landmarks.landmark\n", 1251 | " pose_row = list(np.array([[landmark.x, landmark.y, landmark.z, landmark.visibility] for landmark in pose]).flatten())\n", 1252 | " \n", 1253 | " \n", 1254 | " face = results.face_landmarks.landmark\n", 1255 | " face_row = list(np.array([[landmark.x, landmark.y, landmark.z, landmark.visibility] for landmark in face]).flatten())\n", 1256 | " \n", 1257 | " row = pose_row+face_row\n", 1258 | " \n", 1259 | " row.insert(0, class_name)\n", 1260 | " \n", 1261 | " \n", 1262 | " with open('coord.csv', mode='a', newline='') as f:\n", 1263 | " csv_writer = csv.writer(f, delimiter=',', quotechar='\"', quoting=csv.QUOTE_MINIMAL)\n", 1264 | " csv_writer.writerow(row) \n", 1265 | " \n", 1266 | " except:\n", 1267 | " pass\n", 1268 | " \n", 1269 | " cv2.imshow('Testing Video', image)\n", 1270 | "\n", 1271 | " if cv2.waitKey(10) & 0xFF == ord('q'):\n", 1272 | " break\n", 1273 | "\n", 1274 | "cap.release()\n", 1275 | "cv2.destroyAllWindows()" 1276 | ] 1277 | }, 1278 | { 1279 | "cell_type": "code", 1280 | "execution_count": 2, 1281 | "id": "f0eb7e8c", 1282 | "metadata": {}, 1283 | "outputs": [], 1284 | "source": [ 1285 | "import pandas as pd\n", 1286 | "from sklearn.model_selection import train_test_split" 1287 | ] 1288 | }, 1289 | { 1290 | "cell_type": "code", 1291 | "execution_count": 3, 1292 | "id": "4da8f530", 1293 | "metadata": {}, 1294 | "outputs": [], 1295 | "source": [ 1296 | "data = pd.read_csv(\"coord.csv\")" 1297 | ] 1298 | }, 1299 | { 1300 | "cell_type": "code", 1301 | "execution_count": 4, 1302 | "id": "a685ae2f", 1303 | "metadata": {}, 1304 | "outputs": [ 1305 | { 1306 | "data": { 1307 | "text/plain": [ 1308 | "0 Happy\n", 1309 | "1 Happy\n", 1310 | "2 Happy\n", 1311 | "3 Happy\n", 1312 | "4 Happy\n", 1313 | " ... \n", 1314 | "160 Normal\n", 1315 | "161 Normal\n", 1316 | "162 Normal\n", 1317 | "163 Normal\n", 1318 | "164 Normal\n", 1319 | "Name: class, Length: 165, dtype: object" 1320 | ] 1321 | }, 1322 | "execution_count": 4, 1323 | "metadata": {}, 1324 | "output_type": "execute_result" 1325 | } 1326 | ], 1327 | "source": [ 1328 | "data[\"class\"]" 1329 | ] 1330 | }, 1331 | { 1332 | "cell_type": "code", 1333 | "execution_count": 5, 1334 | "id": "458223a9", 1335 | "metadata": {}, 1336 | "outputs": [ 1337 | { 1338 | "name": "stdout", 1339 | "output_type": "stream", 1340 | "text": [ 1341 | "\n", 1342 | "RangeIndex: 165 entries, 0 to 164\n", 1343 | "Columns: 2005 entries, class to v501\n", 1344 | "dtypes: float64(2004), object(1)\n", 1345 | "memory usage: 2.5+ MB\n" 1346 | ] 1347 | } 1348 | ], 1349 | "source": [ 1350 | "data.info()" 1351 | ] 1352 | }, 1353 | { 1354 | "cell_type": "code", 1355 | "execution_count": 6, 1356 | "id": "e062c398", 1357 | "metadata": {}, 1358 | "outputs": [ 1359 | { 1360 | "data": { 1361 | "text/html": [ 1362 | "
\n", 1363 | "\n", 1376 | "\n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \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", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \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", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | "
classx1y1z1v1x2y2z2v2x3...z499v499x500y500z500v500x501y501z501v501
0Happy0.6320600.636219-1.5122340.9994190.6637110.558104-1.4456470.9985010.683615...-0.0023270.00.7066400.5592150.0212600.00.7122950.5545970.0217290.0
1Happy0.6320180.636040-1.2997310.9994510.6622160.558246-1.2133910.9986040.682529...-0.0028600.00.7021320.5461490.0208830.00.7076840.5404750.0215050.0
2Happy0.6326100.633224-1.2274360.9994270.6622180.557576-1.1419560.9985740.682551...-0.0029400.00.7049590.5461340.0223710.00.7102590.5407810.0231420.0
3Happy0.6353140.631366-1.2672320.9994330.6632120.557004-1.1856260.9986170.683764...0.0007130.00.7100430.5446820.0242890.00.7157910.5385410.0251600.0
4Happy0.6425040.633320-1.3052060.9994070.6704160.558869-1.2262330.9986340.690750...-0.0085950.00.7250250.5499240.0164220.00.7306650.5464760.0168810.0
\n", 1526 | "

5 rows × 2005 columns

\n", 1527 | "
" 1528 | ], 1529 | "text/plain": [ 1530 | " class x1 y1 z1 v1 x2 y2 \\\n", 1531 | "0 Happy 0.632060 0.636219 -1.512234 0.999419 0.663711 0.558104 \n", 1532 | "1 Happy 0.632018 0.636040 -1.299731 0.999451 0.662216 0.558246 \n", 1533 | "2 Happy 0.632610 0.633224 -1.227436 0.999427 0.662218 0.557576 \n", 1534 | "3 Happy 0.635314 0.631366 -1.267232 0.999433 0.663212 0.557004 \n", 1535 | "4 Happy 0.642504 0.633320 -1.305206 0.999407 0.670416 0.558869 \n", 1536 | "\n", 1537 | " z2 v2 x3 ... z499 v499 x500 y500 \\\n", 1538 | "0 -1.445647 0.998501 0.683615 ... -0.002327 0.0 0.706640 0.559215 \n", 1539 | "1 -1.213391 0.998604 0.682529 ... -0.002860 0.0 0.702132 0.546149 \n", 1540 | "2 -1.141956 0.998574 0.682551 ... -0.002940 0.0 0.704959 0.546134 \n", 1541 | "3 -1.185626 0.998617 0.683764 ... 0.000713 0.0 0.710043 0.544682 \n", 1542 | "4 -1.226233 0.998634 0.690750 ... -0.008595 0.0 0.725025 0.549924 \n", 1543 | "\n", 1544 | " z500 v500 x501 y501 z501 v501 \n", 1545 | "0 0.021260 0.0 0.712295 0.554597 0.021729 0.0 \n", 1546 | "1 0.020883 0.0 0.707684 0.540475 0.021505 0.0 \n", 1547 | "2 0.022371 0.0 0.710259 0.540781 0.023142 0.0 \n", 1548 | "3 0.024289 0.0 0.715791 0.538541 0.025160 0.0 \n", 1549 | "4 0.016422 0.0 0.730665 0.546476 0.016881 0.0 \n", 1550 | "\n", 1551 | "[5 rows x 2005 columns]" 1552 | ] 1553 | }, 1554 | "execution_count": 6, 1555 | "metadata": {}, 1556 | "output_type": "execute_result" 1557 | } 1558 | ], 1559 | "source": [ 1560 | "data.head()" 1561 | ] 1562 | }, 1563 | { 1564 | "cell_type": "code", 1565 | "execution_count": 7, 1566 | "id": "aab9e604", 1567 | "metadata": {}, 1568 | "outputs": [], 1569 | "source": [ 1570 | "x = data.drop('class', axis=1) # features\n", 1571 | "y = data['class'] #" 1572 | ] 1573 | }, 1574 | { 1575 | "cell_type": "code", 1576 | "execution_count": 8, 1577 | "id": "0391c2b2", 1578 | "metadata": {}, 1579 | "outputs": [ 1580 | { 1581 | "data": { 1582 | "text/html": [ 1583 | "
\n", 1584 | "\n", 1597 | "\n", 1598 | " \n", 1599 | " \n", 1600 | " \n", 1601 | " \n", 1602 | " \n", 1603 | " \n", 1604 | " \n", 1605 | " \n", 1606 | " \n", 1607 | " \n", 1608 | " \n", 1609 | " \n", 1610 | " \n", 1611 | " \n", 1612 | " \n", 1613 | " \n", 1614 | " \n", 1615 | " \n", 1616 | " \n", 1617 | " \n", 1618 | " \n", 1619 | " \n", 1620 | " \n", 1621 | " \n", 1622 | " \n", 1623 | " \n", 1624 | " \n", 1625 | " \n", 1626 | " \n", 1627 | " \n", 1628 | " \n", 1629 | " \n", 1630 | " \n", 1631 | " \n", 1632 | " \n", 1633 | " \n", 1634 | " \n", 1635 | " \n", 1636 | " \n", 1637 | " \n", 1638 | " \n", 1639 | " \n", 1640 | " \n", 1641 | " \n", 1642 | " \n", 1643 | " \n", 1644 | " \n", 1645 | " \n", 1646 | " \n", 1647 | " \n", 1648 | " \n", 1649 | " \n", 1650 | " \n", 1651 | " \n", 1652 | " \n", 1653 | " \n", 1654 | " \n", 1655 | " \n", 1656 | " \n", 1657 | " \n", 1658 | " \n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | " \n", 1703 | " \n", 1704 | " \n", 1705 | " \n", 1706 | " \n", 1707 | " \n", 1708 | " \n", 1709 | " \n", 1710 | " \n", 1711 | " \n", 1712 | " \n", 1713 | " \n", 1714 | " \n", 1715 | " \n", 1716 | " \n", 1717 | " \n", 1718 | " \n", 1719 | " \n", 1720 | " \n", 1721 | " \n", 1722 | " \n", 1723 | " \n", 1724 | " \n", 1725 | " \n", 1726 | " \n", 1727 | " \n", 1728 | " \n", 1729 | " \n", 1730 | " \n", 1731 | " \n", 1732 | " \n", 1733 | " \n", 1734 | " \n", 1735 | " \n", 1736 | " \n", 1737 | " \n", 1738 | " \n", 1739 | " \n", 1740 | " \n", 1741 | " \n", 1742 | " \n", 1743 | " \n", 1744 | " \n", 1745 | " \n", 1746 | " \n", 1747 | " \n", 1748 | " \n", 1749 | " \n", 1750 | " \n", 1751 | " \n", 1752 | " \n", 1753 | " \n", 1754 | " \n", 1755 | " \n", 1756 | " \n", 1757 | " \n", 1758 | " \n", 1759 | " \n", 1760 | " \n", 1761 | " \n", 1762 | " \n", 1763 | " \n", 1764 | " \n", 1765 | " \n", 1766 | " \n", 1767 | " \n", 1768 | " \n", 1769 | " \n", 1770 | " \n", 1771 | " \n", 1772 | " \n", 1773 | " \n", 1774 | " \n", 1775 | " \n", 1776 | " \n", 1777 | " \n", 1778 | " \n", 1779 | " \n", 1780 | " \n", 1781 | " \n", 1782 | " \n", 1783 | " \n", 1784 | " \n", 1785 | " \n", 1786 | " \n", 1787 | " \n", 1788 | " \n", 1789 | " \n", 1790 | " \n", 1791 | " \n", 1792 | " \n", 1793 | " \n", 1794 | " \n", 1795 | " \n", 1796 | " \n", 1797 | " \n", 1798 | " \n", 1799 | " \n", 1800 | " \n", 1801 | " \n", 1802 | " \n", 1803 | " \n", 1804 | " \n", 1805 | " \n", 1806 | " \n", 1807 | " \n", 1808 | " \n", 1809 | " \n", 1810 | " \n", 1811 | " \n", 1812 | " \n", 1813 | " \n", 1814 | " \n", 1815 | " \n", 1816 | " \n", 1817 | " \n", 1818 | " \n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | " \n", 1824 | " \n", 1825 | " \n", 1826 | " \n", 1827 | " \n", 1828 | " \n", 1829 | " \n", 1830 | " \n", 1831 | " \n", 1832 | " \n", 1833 | " \n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | " \n", 1846 | " \n", 1847 | " \n", 1848 | " \n", 1849 | " \n", 1850 | " \n", 1851 | " \n", 1852 | " \n", 1853 | " \n", 1854 | " \n", 1855 | " \n", 1856 | " \n", 1857 | " \n", 1858 | " \n", 1859 | " \n", 1860 | " \n", 1861 | " \n", 1862 | " \n", 1863 | " \n", 1864 | " \n", 1865 | " \n", 1866 | " \n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | "
x1y1z1v1x2y2z2v2x3y3...z499v499x500y500z500v500x501y501z501v501
00.6320600.636219-1.5122340.9994190.6637110.558104-1.4456470.9985010.6836150.558627...-0.0023270.00.7066400.5592150.0212600.00.7122950.5545970.0217290.0
10.6320180.636040-1.2997310.9994510.6622160.558246-1.2133910.9986040.6825290.558645...-0.0028600.00.7021320.5461490.0208830.00.7076840.5404750.0215050.0
20.6326100.633224-1.2274360.9994270.6622180.557576-1.1419560.9985740.6825510.557869...-0.0029400.00.7049590.5461340.0223710.00.7102590.5407810.0231420.0
30.6353140.631366-1.2672320.9994330.6632120.557004-1.1856260.9986170.6837640.557309...0.0007130.00.7100430.5446820.0242890.00.7157910.5385410.0251600.0
40.6425040.633320-1.3052060.9994070.6704160.558869-1.2262330.9986340.6907500.558865...-0.0085950.00.7250250.5499240.0164220.00.7306650.5464760.0168810.0
..................................................................
1600.6444920.611976-1.2458480.9992360.6721550.527479-1.1529880.9984610.6915990.526120...-0.0127350.00.7033160.5112890.0103250.00.7087510.5062930.0106970.0
1610.6442130.614732-1.2552890.9992610.6718380.529406-1.1649680.9985340.6912820.527854...-0.0138730.00.7021290.5134450.0082010.00.7075850.5090390.0082860.0
1620.6437150.601339-1.2240000.9992850.6713230.515365-1.1433700.9985720.6907290.514035...-0.0123250.00.7026030.4936390.0107090.00.7077870.4901590.0108450.0
1630.6434230.588237-1.1668520.9993140.6712210.502467-1.0934000.9986250.6905890.501815...-0.0141420.00.7000350.4741560.0078020.00.7053170.4701260.0078810.0
1640.6426610.585707-1.1734140.9993270.6705520.499840-1.0996400.9986280.6899080.499257...-0.0134500.00.7041840.4902960.0093770.00.7097450.4858400.0095050.0
\n", 1891 | "

165 rows × 2004 columns

\n", 1892 | "
" 1893 | ], 1894 | "text/plain": [ 1895 | " x1 y1 z1 v1 x2 y2 z2 \\\n", 1896 | "0 0.632060 0.636219 -1.512234 0.999419 0.663711 0.558104 -1.445647 \n", 1897 | "1 0.632018 0.636040 -1.299731 0.999451 0.662216 0.558246 -1.213391 \n", 1898 | "2 0.632610 0.633224 -1.227436 0.999427 0.662218 0.557576 -1.141956 \n", 1899 | "3 0.635314 0.631366 -1.267232 0.999433 0.663212 0.557004 -1.185626 \n", 1900 | "4 0.642504 0.633320 -1.305206 0.999407 0.670416 0.558869 -1.226233 \n", 1901 | ".. ... ... ... ... ... ... ... \n", 1902 | "160 0.644492 0.611976 -1.245848 0.999236 0.672155 0.527479 -1.152988 \n", 1903 | "161 0.644213 0.614732 -1.255289 0.999261 0.671838 0.529406 -1.164968 \n", 1904 | "162 0.643715 0.601339 -1.224000 0.999285 0.671323 0.515365 -1.143370 \n", 1905 | "163 0.643423 0.588237 -1.166852 0.999314 0.671221 0.502467 -1.093400 \n", 1906 | "164 0.642661 0.585707 -1.173414 0.999327 0.670552 0.499840 -1.099640 \n", 1907 | "\n", 1908 | " v2 x3 y3 ... z499 v499 x500 y500 \\\n", 1909 | "0 0.998501 0.683615 0.558627 ... -0.002327 0.0 0.706640 0.559215 \n", 1910 | "1 0.998604 0.682529 0.558645 ... -0.002860 0.0 0.702132 0.546149 \n", 1911 | "2 0.998574 0.682551 0.557869 ... -0.002940 0.0 0.704959 0.546134 \n", 1912 | "3 0.998617 0.683764 0.557309 ... 0.000713 0.0 0.710043 0.544682 \n", 1913 | "4 0.998634 0.690750 0.558865 ... -0.008595 0.0 0.725025 0.549924 \n", 1914 | ".. ... ... ... ... ... ... ... ... \n", 1915 | "160 0.998461 0.691599 0.526120 ... -0.012735 0.0 0.703316 0.511289 \n", 1916 | "161 0.998534 0.691282 0.527854 ... -0.013873 0.0 0.702129 0.513445 \n", 1917 | "162 0.998572 0.690729 0.514035 ... -0.012325 0.0 0.702603 0.493639 \n", 1918 | "163 0.998625 0.690589 0.501815 ... -0.014142 0.0 0.700035 0.474156 \n", 1919 | "164 0.998628 0.689908 0.499257 ... -0.013450 0.0 0.704184 0.490296 \n", 1920 | "\n", 1921 | " z500 v500 x501 y501 z501 v501 \n", 1922 | "0 0.021260 0.0 0.712295 0.554597 0.021729 0.0 \n", 1923 | "1 0.020883 0.0 0.707684 0.540475 0.021505 0.0 \n", 1924 | "2 0.022371 0.0 0.710259 0.540781 0.023142 0.0 \n", 1925 | "3 0.024289 0.0 0.715791 0.538541 0.025160 0.0 \n", 1926 | "4 0.016422 0.0 0.730665 0.546476 0.016881 0.0 \n", 1927 | ".. ... ... ... ... ... ... \n", 1928 | "160 0.010325 0.0 0.708751 0.506293 0.010697 0.0 \n", 1929 | "161 0.008201 0.0 0.707585 0.509039 0.008286 0.0 \n", 1930 | "162 0.010709 0.0 0.707787 0.490159 0.010845 0.0 \n", 1931 | "163 0.007802 0.0 0.705317 0.470126 0.007881 0.0 \n", 1932 | "164 0.009377 0.0 0.709745 0.485840 0.009505 0.0 \n", 1933 | "\n", 1934 | "[165 rows x 2004 columns]" 1935 | ] 1936 | }, 1937 | "execution_count": 8, 1938 | "metadata": {}, 1939 | "output_type": "execute_result" 1940 | } 1941 | ], 1942 | "source": [ 1943 | "x" 1944 | ] 1945 | }, 1946 | { 1947 | "cell_type": "code", 1948 | "execution_count": 9, 1949 | "id": "86c8c0bc", 1950 | "metadata": {}, 1951 | "outputs": [], 1952 | "source": [ 1953 | "X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1234)" 1954 | ] 1955 | }, 1956 | { 1957 | "cell_type": "code", 1958 | "execution_count": 10, 1959 | "id": "0e295069", 1960 | "metadata": {}, 1961 | "outputs": [ 1962 | { 1963 | "data": { 1964 | "text/html": [ 1965 | "
\n", 1966 | "\n", 1979 | "\n", 1980 | " \n", 1981 | " \n", 1982 | " \n", 1983 | " \n", 1984 | " \n", 1985 | " \n", 1986 | " \n", 1987 | " \n", 1988 | " \n", 1989 | " \n", 1990 | " \n", 1991 | " \n", 1992 | " \n", 1993 | " \n", 1994 | " \n", 1995 | " \n", 1996 | " \n", 1997 | " \n", 1998 | " \n", 1999 | " \n", 2000 | " \n", 2001 | " \n", 2002 | " \n", 2003 | " \n", 2004 | " \n", 2005 | " \n", 2006 | " \n", 2007 | " \n", 2008 | " \n", 2009 | " \n", 2010 | " \n", 2011 | " \n", 2012 | " \n", 2013 | " \n", 2014 | " \n", 2015 | " \n", 2016 | " \n", 2017 | " \n", 2018 | " \n", 2019 | " \n", 2020 | " \n", 2021 | " \n", 2022 | " \n", 2023 | " \n", 2024 | " \n", 2025 | " \n", 2026 | " \n", 2027 | " \n", 2028 | " \n", 2029 | " \n", 2030 | " \n", 2031 | " \n", 2032 | " \n", 2033 | " \n", 2034 | " \n", 2035 | " \n", 2036 | " \n", 2037 | " \n", 2038 | " \n", 2039 | " \n", 2040 | " \n", 2041 | " \n", 2042 | " \n", 2043 | " \n", 2044 | " \n", 2045 | " \n", 2046 | " \n", 2047 | " \n", 2048 | " \n", 2049 | " \n", 2050 | " \n", 2051 | " \n", 2052 | " \n", 2053 | " \n", 2054 | " \n", 2055 | " \n", 2056 | " \n", 2057 | " \n", 2058 | " \n", 2059 | " \n", 2060 | " \n", 2061 | " \n", 2062 | " \n", 2063 | " \n", 2064 | " \n", 2065 | " \n", 2066 | " \n", 2067 | " \n", 2068 | " \n", 2069 | " \n", 2070 | " \n", 2071 | " \n", 2072 | " \n", 2073 | " \n", 2074 | " \n", 2075 | " \n", 2076 | " \n", 2077 | " \n", 2078 | " \n", 2079 | " \n", 2080 | " \n", 2081 | " \n", 2082 | " \n", 2083 | " \n", 2084 | " \n", 2085 | " \n", 2086 | " \n", 2087 | " \n", 2088 | " \n", 2089 | " \n", 2090 | " \n", 2091 | " \n", 2092 | " \n", 2093 | " \n", 2094 | " \n", 2095 | " \n", 2096 | " \n", 2097 | " \n", 2098 | " \n", 2099 | " \n", 2100 | " \n", 2101 | " \n", 2102 | " \n", 2103 | " \n", 2104 | " \n", 2105 | " \n", 2106 | " \n", 2107 | " \n", 2108 | " \n", 2109 | " \n", 2110 | " \n", 2111 | " \n", 2112 | " \n", 2113 | " \n", 2114 | " \n", 2115 | " \n", 2116 | " \n", 2117 | " \n", 2118 | " \n", 2119 | " \n", 2120 | " \n", 2121 | " \n", 2122 | " \n", 2123 | " \n", 2124 | " \n", 2125 | " \n", 2126 | " \n", 2127 | " \n", 2128 | " \n", 2129 | " \n", 2130 | " \n", 2131 | " \n", 2132 | " \n", 2133 | " \n", 2134 | " \n", 2135 | " \n", 2136 | " \n", 2137 | " \n", 2138 | " \n", 2139 | " \n", 2140 | " \n", 2141 | " \n", 2142 | " \n", 2143 | " \n", 2144 | " \n", 2145 | " \n", 2146 | " \n", 2147 | " \n", 2148 | " \n", 2149 | " \n", 2150 | " \n", 2151 | " \n", 2152 | " \n", 2153 | " \n", 2154 | " \n", 2155 | " \n", 2156 | " \n", 2157 | " \n", 2158 | " \n", 2159 | " \n", 2160 | " \n", 2161 | " \n", 2162 | " \n", 2163 | " \n", 2164 | " \n", 2165 | " \n", 2166 | " \n", 2167 | " \n", 2168 | " \n", 2169 | " \n", 2170 | " \n", 2171 | " \n", 2172 | " \n", 2173 | " \n", 2174 | " \n", 2175 | " \n", 2176 | " \n", 2177 | " \n", 2178 | " \n", 2179 | " \n", 2180 | " \n", 2181 | " \n", 2182 | " \n", 2183 | " \n", 2184 | " \n", 2185 | " \n", 2186 | " \n", 2187 | " \n", 2188 | " \n", 2189 | " \n", 2190 | " \n", 2191 | " \n", 2192 | " \n", 2193 | " \n", 2194 | " \n", 2195 | " \n", 2196 | " \n", 2197 | " \n", 2198 | " \n", 2199 | " \n", 2200 | " \n", 2201 | " \n", 2202 | " \n", 2203 | " \n", 2204 | " \n", 2205 | " \n", 2206 | " \n", 2207 | " \n", 2208 | " \n", 2209 | " \n", 2210 | " \n", 2211 | " \n", 2212 | " \n", 2213 | " \n", 2214 | " \n", 2215 | " \n", 2216 | " \n", 2217 | " \n", 2218 | " \n", 2219 | " \n", 2220 | " \n", 2221 | " \n", 2222 | " \n", 2223 | " \n", 2224 | " \n", 2225 | " \n", 2226 | " \n", 2227 | " \n", 2228 | " \n", 2229 | " \n", 2230 | " \n", 2231 | " \n", 2232 | " \n", 2233 | " \n", 2234 | " \n", 2235 | " \n", 2236 | " \n", 2237 | " \n", 2238 | " \n", 2239 | " \n", 2240 | " \n", 2241 | " \n", 2242 | " \n", 2243 | " \n", 2244 | " \n", 2245 | " \n", 2246 | " \n", 2247 | " \n", 2248 | " \n", 2249 | " \n", 2250 | " \n", 2251 | " \n", 2252 | " \n", 2253 | " \n", 2254 | " \n", 2255 | " \n", 2256 | " \n", 2257 | " \n", 2258 | " \n", 2259 | " \n", 2260 | " \n", 2261 | " \n", 2262 | " \n", 2263 | " \n", 2264 | " \n", 2265 | " \n", 2266 | " \n", 2267 | " \n", 2268 | " \n", 2269 | " \n", 2270 | " \n", 2271 | " \n", 2272 | "
x1y1z1v1x2y2z2v2x3y3...z499v499x500y500z500v500x501y501z501v501
1190.6942490.531429-0.7910410.9994400.6928610.452414-0.7240270.9989890.7031700.452402...0.0124670.00.7206040.4749620.0636050.00.7229730.4710860.0670860.0
540.7072190.560175-1.0061580.9990360.7117020.483684-0.9234480.9981570.7240230.481269...0.0016380.00.7506640.4784230.0489580.00.7538330.4746490.0517750.0
430.7216310.561301-1.1694270.9979100.7354330.481824-1.0783010.9958600.7495100.484185...0.0040720.00.7587900.4666270.0495300.00.7631460.4621030.0523550.0
1170.6142840.518973-0.9625230.9994820.6283680.443704-0.8803030.9990780.6433670.444639...0.0058330.00.6875190.4630030.0463660.00.6919720.4581580.0487310.0
1380.4713380.580960-1.0728900.9986620.4977650.499784-1.0321770.9976920.5173920.492434...-0.0015720.00.5267650.482667-0.0163070.00.5328630.470778-0.0184240.0
..................................................................
1520.6425980.601215-1.1829840.9990450.6718810.517756-1.1163190.9981700.6909730.517506...-0.0193250.00.7067550.482789-0.0000640.00.7121040.479145-0.0004530.0
1160.5857680.506348-0.8367380.9994520.6100010.432137-0.7685620.9990330.6277970.433438...0.0029220.00.6643910.4425450.0315350.00.6697920.4378290.0328170.0
530.7030050.547660-0.9124610.9990590.7082750.472855-0.8353680.9981840.7202240.471422...0.0036780.00.7473440.4653520.0514190.00.7503810.4612330.0543830.0
380.7808190.596200-1.1866200.9976420.8108640.516431-1.0966110.9952590.8300000.518913...0.0005340.00.8561170.4798560.0472750.00.8614090.4758120.0496190.0
470.7087640.539834-0.9277350.9984430.7163580.467780-0.8480120.9970430.7289170.466812...0.0082760.00.7460020.4823760.0553540.00.7489980.4791170.0583490.0
\n", 2273 | "

115 rows × 2004 columns

\n", 2274 | "
" 2275 | ], 2276 | "text/plain": [ 2277 | " x1 y1 z1 v1 x2 y2 z2 \\\n", 2278 | "119 0.694249 0.531429 -0.791041 0.999440 0.692861 0.452414 -0.724027 \n", 2279 | "54 0.707219 0.560175 -1.006158 0.999036 0.711702 0.483684 -0.923448 \n", 2280 | "43 0.721631 0.561301 -1.169427 0.997910 0.735433 0.481824 -1.078301 \n", 2281 | "117 0.614284 0.518973 -0.962523 0.999482 0.628368 0.443704 -0.880303 \n", 2282 | "138 0.471338 0.580960 -1.072890 0.998662 0.497765 0.499784 -1.032177 \n", 2283 | ".. ... ... ... ... ... ... ... \n", 2284 | "152 0.642598 0.601215 -1.182984 0.999045 0.671881 0.517756 -1.116319 \n", 2285 | "116 0.585768 0.506348 -0.836738 0.999452 0.610001 0.432137 -0.768562 \n", 2286 | "53 0.703005 0.547660 -0.912461 0.999059 0.708275 0.472855 -0.835368 \n", 2287 | "38 0.780819 0.596200 -1.186620 0.997642 0.810864 0.516431 -1.096611 \n", 2288 | "47 0.708764 0.539834 -0.927735 0.998443 0.716358 0.467780 -0.848012 \n", 2289 | "\n", 2290 | " v2 x3 y3 ... z499 v499 x500 y500 \\\n", 2291 | "119 0.998989 0.703170 0.452402 ... 0.012467 0.0 0.720604 0.474962 \n", 2292 | "54 0.998157 0.724023 0.481269 ... 0.001638 0.0 0.750664 0.478423 \n", 2293 | "43 0.995860 0.749510 0.484185 ... 0.004072 0.0 0.758790 0.466627 \n", 2294 | "117 0.999078 0.643367 0.444639 ... 0.005833 0.0 0.687519 0.463003 \n", 2295 | "138 0.997692 0.517392 0.492434 ... -0.001572 0.0 0.526765 0.482667 \n", 2296 | ".. ... ... ... ... ... ... ... ... \n", 2297 | "152 0.998170 0.690973 0.517506 ... -0.019325 0.0 0.706755 0.482789 \n", 2298 | "116 0.999033 0.627797 0.433438 ... 0.002922 0.0 0.664391 0.442545 \n", 2299 | "53 0.998184 0.720224 0.471422 ... 0.003678 0.0 0.747344 0.465352 \n", 2300 | "38 0.995259 0.830000 0.518913 ... 0.000534 0.0 0.856117 0.479856 \n", 2301 | "47 0.997043 0.728917 0.466812 ... 0.008276 0.0 0.746002 0.482376 \n", 2302 | "\n", 2303 | " z500 v500 x501 y501 z501 v501 \n", 2304 | "119 0.063605 0.0 0.722973 0.471086 0.067086 0.0 \n", 2305 | "54 0.048958 0.0 0.753833 0.474649 0.051775 0.0 \n", 2306 | "43 0.049530 0.0 0.763146 0.462103 0.052355 0.0 \n", 2307 | "117 0.046366 0.0 0.691972 0.458158 0.048731 0.0 \n", 2308 | "138 -0.016307 0.0 0.532863 0.470778 -0.018424 0.0 \n", 2309 | ".. ... ... ... ... ... ... \n", 2310 | "152 -0.000064 0.0 0.712104 0.479145 -0.000453 0.0 \n", 2311 | "116 0.031535 0.0 0.669792 0.437829 0.032817 0.0 \n", 2312 | "53 0.051419 0.0 0.750381 0.461233 0.054383 0.0 \n", 2313 | "38 0.047275 0.0 0.861409 0.475812 0.049619 0.0 \n", 2314 | "47 0.055354 0.0 0.748998 0.479117 0.058349 0.0 \n", 2315 | "\n", 2316 | "[115 rows x 2004 columns]" 2317 | ] 2318 | }, 2319 | "execution_count": 10, 2320 | "metadata": {}, 2321 | "output_type": "execute_result" 2322 | } 2323 | ], 2324 | "source": [ 2325 | "X_train" 2326 | ] 2327 | }, 2328 | { 2329 | "cell_type": "code", 2330 | "execution_count": 11, 2331 | "id": "d72e9462", 2332 | "metadata": {}, 2333 | "outputs": [], 2334 | "source": [ 2335 | "from sklearn.pipeline import make_pipeline \n", 2336 | "from sklearn.preprocessing import StandardScaler \n", 2337 | "\n", 2338 | "from sklearn.linear_model import LogisticRegression, RidgeClassifier\n", 2339 | "from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier" 2340 | ] 2341 | }, 2342 | { 2343 | "cell_type": "code", 2344 | "execution_count": 12, 2345 | "id": "823b1d02", 2346 | "metadata": {}, 2347 | "outputs": [], 2348 | "source": [ 2349 | "pipelines = {\n", 2350 | " 'lr':make_pipeline(StandardScaler(), LogisticRegression()),\n", 2351 | " 'rc':make_pipeline(StandardScaler(), RidgeClassifier()),\n", 2352 | " 'rf':make_pipeline(StandardScaler(), RandomForestClassifier()),\n", 2353 | " 'gb':make_pipeline(StandardScaler(), GradientBoostingClassifier()),\n", 2354 | "}" 2355 | ] 2356 | }, 2357 | { 2358 | "cell_type": "code", 2359 | "execution_count": 13, 2360 | "id": "03b53d08", 2361 | "metadata": {}, 2362 | "outputs": [ 2363 | { 2364 | "data": { 2365 | "text/plain": [ 2366 | "dict_keys(['lr', 'rc', 'rf', 'gb'])" 2367 | ] 2368 | }, 2369 | "execution_count": 13, 2370 | "metadata": {}, 2371 | "output_type": "execute_result" 2372 | } 2373 | ], 2374 | "source": [ 2375 | "pipelines.keys()" 2376 | ] 2377 | }, 2378 | { 2379 | "cell_type": "code", 2380 | "execution_count": 14, 2381 | "id": "39de2567", 2382 | "metadata": {}, 2383 | "outputs": [], 2384 | "source": [ 2385 | "fit_models = {}\n", 2386 | "for algo, pipeline in pipelines.items():\n", 2387 | " model = pipeline.fit(X_train, y_train)\n", 2388 | " fit_models[algo] = model" 2389 | ] 2390 | }, 2391 | { 2392 | "cell_type": "code", 2393 | "execution_count": 15, 2394 | "id": "faa52005", 2395 | "metadata": {}, 2396 | "outputs": [ 2397 | { 2398 | "data": { 2399 | "text/plain": [ 2400 | "{'lr': Pipeline(steps=[('standardscaler', StandardScaler()),\n", 2401 | " ('logisticregression', LogisticRegression())]),\n", 2402 | " 'rc': Pipeline(steps=[('standardscaler', StandardScaler()),\n", 2403 | " ('ridgeclassifier', RidgeClassifier())]),\n", 2404 | " 'rf': Pipeline(steps=[('standardscaler', StandardScaler()),\n", 2405 | " ('randomforestclassifier', RandomForestClassifier())]),\n", 2406 | " 'gb': Pipeline(steps=[('standardscaler', StandardScaler()),\n", 2407 | " ('gradientboostingclassifier', GradientBoostingClassifier())])}" 2408 | ] 2409 | }, 2410 | "execution_count": 15, 2411 | "metadata": {}, 2412 | "output_type": "execute_result" 2413 | } 2414 | ], 2415 | "source": [ 2416 | "fit_models" 2417 | ] 2418 | }, 2419 | { 2420 | "cell_type": "code", 2421 | "execution_count": 36, 2422 | "id": "2dc82431", 2423 | "metadata": {}, 2424 | "outputs": [ 2425 | { 2426 | "ename": "NameError", 2427 | "evalue": "name 'row' is not defined", 2428 | "output_type": "error", 2429 | "traceback": [ 2430 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 2431 | "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", 2432 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mfit_models\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'rc'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrow\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 2433 | "\u001b[1;31mNameError\u001b[0m: name 'row' is not defined" 2434 | ] 2435 | } 2436 | ], 2437 | "source": [ 2438 | "fit_models['rc'].predict(row)" 2439 | ] 2440 | }, 2441 | { 2442 | "cell_type": "code", 2443 | "execution_count": 17, 2444 | "id": "d47e809b", 2445 | "metadata": {}, 2446 | "outputs": [], 2447 | "source": [ 2448 | "from sklearn.metrics import accuracy_score \n", 2449 | "import pickle " 2450 | ] 2451 | }, 2452 | { 2453 | "cell_type": "code", 2454 | "execution_count": 35, 2455 | "id": "65b393d2", 2456 | "metadata": {}, 2457 | "outputs": [ 2458 | { 2459 | "name": "stdout", 2460 | "output_type": "stream", 2461 | "text": [ 2462 | "lr 1.0\n", 2463 | "rc 1.0\n", 2464 | "rf 0.98\n", 2465 | "gb 0.96\n" 2466 | ] 2467 | } 2468 | ], 2469 | "source": [ 2470 | "for algo, model in fit_models.items():\n", 2471 | " yhat = model.predict(X_test)\n", 2472 | " print(algo, accuracy_score(y_test, yhat))" 2473 | ] 2474 | }, 2475 | { 2476 | "cell_type": "code", 2477 | "execution_count": 23, 2478 | "id": "de63bfbf", 2479 | "metadata": {}, 2480 | "outputs": [ 2481 | { 2482 | "data": { 2483 | "text/plain": [ 2484 | "array(['Normal', 'Happy', 'Happy', 'Normal', 'Normal', 'Normal', 'Normal',\n", 2485 | " 'Happy', 'Normal', 'Happy', 'Normal', 'Happy', 'Happy', 'Happy',\n", 2486 | " 'Normal', 'Normal', 'Happy', 'Happy', 'Normal', 'Happy', 'Happy',\n", 2487 | " 'Happy', 'Happy', 'Normal', 'Normal', 'Normal', 'Normal', 'Normal',\n", 2488 | " 'Happy', 'Normal', 'Happy', 'Normal', 'Normal', 'Normal', 'Happy',\n", 2489 | " 'Normal', 'Normal', 'Normal', 'Happy', 'Normal', 'Normal', 'Happy',\n", 2490 | " 'Happy', 'Normal', 'Happy', 'Happy', 'Normal', 'Normal', 'Normal',\n", 2491 | " 'Happy'], dtype=object)" 2492 | ] 2493 | }, 2494 | "execution_count": 23, 2495 | "metadata": {}, 2496 | "output_type": "execute_result" 2497 | } 2498 | ], 2499 | "source": [ 2500 | "fit_models['rf'].predict(X_test)" 2501 | ] 2502 | }, 2503 | { 2504 | "cell_type": "code", 2505 | "execution_count": 124, 2506 | "id": "cd9f4bc5", 2507 | "metadata": {}, 2508 | "outputs": [ 2509 | { 2510 | "data": { 2511 | "text/plain": [ 2512 | "79 Normal\n", 2513 | "27 Happy\n", 2514 | "29 Happy\n", 2515 | "99 Normal\n", 2516 | "91 Normal\n", 2517 | "153 Normal\n", 2518 | "100 Normal\n", 2519 | "61 Happy\n", 2520 | "122 Normal\n", 2521 | "32 Happy\n", 2522 | "155 Normal\n", 2523 | "57 Happy\n", 2524 | "6 Happy\n", 2525 | "65 Happy\n", 2526 | "121 Normal\n", 2527 | "136 Normal\n", 2528 | "58 Happy\n", 2529 | "73 Happy\n", 2530 | "160 Normal\n", 2531 | "48 Happy\n", 2532 | "9 Happy\n", 2533 | "40 Happy\n", 2534 | "25 Happy\n", 2535 | "77 Normal\n", 2536 | "97 Normal\n", 2537 | "94 Normal\n", 2538 | "131 Normal\n", 2539 | "146 Normal\n", 2540 | "39 Happy\n", 2541 | "133 Normal\n", 2542 | "11 Happy\n", 2543 | "129 Normal\n", 2544 | "88 Normal\n", 2545 | "162 Normal\n", 2546 | "17 Happy\n", 2547 | "148 Normal\n", 2548 | "125 Normal\n", 2549 | "104 Normal\n", 2550 | "35 Happy\n", 2551 | "63 Happy\n", 2552 | "103 Normal\n", 2553 | "51 Happy\n", 2554 | "42 Happy\n", 2555 | "140 Normal\n", 2556 | "59 Happy\n", 2557 | "36 Happy\n", 2558 | "92 Normal\n", 2559 | "102 Normal\n", 2560 | "110 Normal\n", 2561 | "66 Happy\n", 2562 | "Name: class, dtype: object" 2563 | ] 2564 | }, 2565 | "execution_count": 124, 2566 | "metadata": {}, 2567 | "output_type": "execute_result" 2568 | } 2569 | ], 2570 | "source": [ 2571 | "y_test" 2572 | ] 2573 | }, 2574 | { 2575 | "cell_type": "code", 2576 | "execution_count": 20, 2577 | "id": "fa8f2299", 2578 | "metadata": {}, 2579 | "outputs": [], 2580 | "source": [ 2581 | "with open('body_language.pkl', 'wb') as f:\n", 2582 | " pickle.dump(fit_models['rf'], f)" 2583 | ] 2584 | }, 2585 | { 2586 | "cell_type": "code", 2587 | "execution_count": 30, 2588 | "id": "c676e416", 2589 | "metadata": {}, 2590 | "outputs": [], 2591 | "source": [ 2592 | "with open('body_language.pkl', 'rb') as f:\n", 2593 | " model = pickle.load(f)" 2594 | ] 2595 | }, 2596 | { 2597 | "cell_type": "code", 2598 | "execution_count": 31, 2599 | "id": "5f4babd4", 2600 | "metadata": {}, 2601 | "outputs": [ 2602 | { 2603 | "data": { 2604 | "text/plain": [ 2605 | "Pipeline(steps=[('standardscaler', StandardScaler()),\n", 2606 | " ('randomforestclassifier', RandomForestClassifier())])" 2607 | ] 2608 | }, 2609 | "execution_count": 31, 2610 | "metadata": {}, 2611 | "output_type": "execute_result" 2612 | } 2613 | ], 2614 | "source": [ 2615 | "model" 2616 | ] 2617 | }, 2618 | { 2619 | "cell_type": "code", 2620 | "execution_count": 34, 2621 | "id": "d3fa796e", 2622 | "metadata": {}, 2623 | "outputs": [], 2624 | "source": [ 2625 | "cap = cv2.VideoCapture(0)\n", 2626 | "# Initiate holistic model\n", 2627 | "with mp_holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic:\n", 2628 | " \n", 2629 | " while cap.isOpened():\n", 2630 | " ret, frame = cap.read()\n", 2631 | " \n", 2632 | " # Recolor Feed\n", 2633 | " image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\n", 2634 | " image.flags.writeable = False \n", 2635 | " \n", 2636 | " # Make Detections\n", 2637 | " results = holistic.process(image)\n", 2638 | " # print(results.face_landmarks)\n", 2639 | " \n", 2640 | " # face_landmarks, pose_landmarks, left_hand_landmarks, right_hand_landmarks\n", 2641 | " \n", 2642 | " # Recolor image back to BGR for rendering\n", 2643 | " image.flags.writeable = True \n", 2644 | " image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)\n", 2645 | " \n", 2646 | " # 1. Draw face landmarks\n", 2647 | " mp_drawing.draw_landmarks(image, results.face_landmarks, mp_holistic.FACEMESH_CONTOURS, \n", 2648 | " mp_drawing.DrawingSpec(color=(80,110,10), thickness=1, circle_radius=1),\n", 2649 | " mp_drawing.DrawingSpec(color=(80,256,121), thickness=1, circle_radius=1)\n", 2650 | " )\n", 2651 | " \n", 2652 | " # 2. Right hand\n", 2653 | " mp_drawing.draw_landmarks(image, results.right_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 2654 | " mp_drawing.DrawingSpec(color=(80,22,10), thickness=2, circle_radius=4),\n", 2655 | " mp_drawing.DrawingSpec(color=(80,44,121), thickness=2, circle_radius=2)\n", 2656 | " )\n", 2657 | "\n", 2658 | " # 3. Left Hand\n", 2659 | " mp_drawing.draw_landmarks(image, results.left_hand_landmarks, mp_holistic.HAND_CONNECTIONS, \n", 2660 | " mp_drawing.DrawingSpec(color=(121,22,76), thickness=2, circle_radius=4),\n", 2661 | " mp_drawing.DrawingSpec(color=(121,44,250), thickness=2, circle_radius=2)\n", 2662 | " )\n", 2663 | "\n", 2664 | " # 4. Pose Detections\n", 2665 | " mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS, \n", 2666 | " mp_drawing.DrawingSpec(color=(245,117,66), thickness=2, circle_radius=4),\n", 2667 | " mp_drawing.DrawingSpec(color=(245,66,230), thickness=2, circle_radius=2)\n", 2668 | " )\n", 2669 | " # Export coordinates\n", 2670 | " try:\n", 2671 | " # Extract Pose landmarks\n", 2672 | " pose = results.pose_landmarks.landmark\n", 2673 | " pose_row = list(np.array([[landmark.x, landmark.y, landmark.z, landmark.visibility] for landmark in pose]).flatten())\n", 2674 | " \n", 2675 | " # Extract Face landmarks\n", 2676 | " face = results.face_landmarks.landmark\n", 2677 | " face_row = list(np.array([[landmark.x, landmark.y, landmark.z, landmark.visibility] for landmark in face]).flatten())\n", 2678 | " \n", 2679 | " # Concate rows\n", 2680 | " row = pose_row+face_row\n", 2681 | " \n", 2682 | "# # Append class name \n", 2683 | "# row.insert(0, class_name)\n", 2684 | " \n", 2685 | "# # Export to CSV\n", 2686 | "# with open('coords.csv', mode='a', newline='') as f:\n", 2687 | "# csv_writer = csv.writer(f, delimiter=',', quotechar='\"', quoting=csv.QUOTE_MINIMAL)\n", 2688 | "# csv_writer.writerow(row) \n", 2689 | "\n", 2690 | " # Make Detections\n", 2691 | " X = pd.DataFrame([row])\n", 2692 | " body_language_class = model.predict(X)[0]\n", 2693 | " body_language_prob = model.predict_proba(X)[0]\n", 2694 | " print(body_language_class, body_language_prob)\n", 2695 | " \n", 2696 | " # Grab ear coords\n", 2697 | " coords = tuple(np.multiply(\n", 2698 | " np.array(\n", 2699 | " (results.pose_landmarks.landmark[mp_holistic.PoseLandmark.LEFT_EAR].x, \n", 2700 | " results.pose_landmarks.landmark[mp_holistic.PoseLandmark.LEFT_EAR].y))\n", 2701 | " , [640,480]).astype(int))\n", 2702 | " cv2.rectangle(image, \n", 2703 | " (coords[0], coords[1]+5), \n", 2704 | " (coords[0]+len(body_language_class)*20, coords[1]-30), \n", 2705 | " (245, 117, 16), -1)\n", 2706 | " cv2.putText(image, body_language_class, coords, \n", 2707 | " cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)\n", 2708 | " \n", 2709 | " # Get status box\n", 2710 | " cv2.rectangle(image, (0,0), (250, 60), (245, 117, 16), -1)\n", 2711 | " \n", 2712 | " # Display Class\n", 2713 | " cv2.putText(image, 'CLASS'\n", 2714 | " , (95,12), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1, cv2.LINE_AA)\n", 2715 | " cv2.putText(image, body_language_class.split(' ')[0]\n", 2716 | " , (90,40), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)\n", 2717 | " \n", 2718 | " # Display Probability\n", 2719 | " cv2.putText(image, 'PROB'\n", 2720 | " , (15,12), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1, cv2.LINE_AA)\n", 2721 | " cv2.putText(image, str(round(body_language_prob[np.argmax(body_language_prob)],2))\n", 2722 | " , (10,40), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)\n", 2723 | " \n", 2724 | " except:\n", 2725 | " pass\n", 2726 | " \n", 2727 | " cv2.imshow('Raw Webcam Feed', image)\n", 2728 | "\n", 2729 | " if cv2.waitKey(10) & 0xFF == ord('q'):\n", 2730 | " break\n", 2731 | "\n", 2732 | "cap.release()\n", 2733 | "cv2.destroyAllWindows()" 2734 | ] 2735 | }, 2736 | { 2737 | "cell_type": "code", 2738 | "execution_count": null, 2739 | "id": "1166711e", 2740 | "metadata": {}, 2741 | "outputs": [], 2742 | "source": [] 2743 | } 2744 | ], 2745 | "metadata": { 2746 | "kernelspec": { 2747 | "display_name": "Python 3", 2748 | "language": "python", 2749 | "name": "python3" 2750 | }, 2751 | "language_info": { 2752 | "codemirror_mode": { 2753 | "name": "ipython", 2754 | "version": 3 2755 | }, 2756 | "file_extension": ".py", 2757 | "mimetype": "text/x-python", 2758 | "name": "python", 2759 | "nbconvert_exporter": "python", 2760 | "pygments_lexer": "ipython3", 2761 | "version": "3.8.8" 2762 | } 2763 | }, 2764 | "nbformat": 4, 2765 | "nbformat_minor": 5 2766 | } 2767 | --------------------------------------------------------------------------------