diff --git "a/HAR_PART_1.ipynb" "b/HAR_PART_1.ipynb"
new file mode 100644--- /dev/null
+++ "b/HAR_PART_1.ipynb"
@@ -0,0 +1,1686 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ },
+ "accelerator": "GPU",
+ "gpuClass": "standard"
+ },
+ "cells": [
+ {
+ "cell_type": "code",
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd"
+ ],
+ "metadata": {
+ "id": "NAp7rXWXmczh"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "j1GEZsxkoTtb",
+ "outputId": "bd50ee59-2c9a-4ce6-82cf-7d1c40e6cf51"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Mounted at /content/drive\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "features = list()\n",
+ "with open('/content/drive/MyDrive/UCI _HAR_Dataset/features.txt') as f:\n",
+ " features = [line.split()[1] for line in f.readlines()]\n",
+ "print('No of Features: {}'.format(len(features)))"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "T7U-MTw1pk1q",
+ "outputId": "cc0a5b3f-9499-4dee-e308-f2836f34eb69"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "No of Features: 561\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "**Getting the train data**"
+ ],
+ "metadata": {
+ "id": "UHv_sGqvqpkr"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# get the data from txt files to pandas dataffame\n",
+ "X_train = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/train/X_train.txt', delim_whitespace=True, header=None)\n",
+ "X_train.columns = [features]\n",
+ "# add subject column to the dataframe\n",
+ "X_train['subject'] = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/train/subject_train.txt', header=None, squeeze=True)\n",
+ "\n",
+ "y_train = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/train/y_train.txt', names=['Activity'], squeeze=True)\n",
+ "y_train_labels = y_train.map({1: 'WALKING', 2:'WALKING_UPSTAIRS',3:'WALKING_DOWNSTAIRS',\\\n",
+ " 4:'SITTING', 5:'STANDING',6:'LAYING'})\n",
+ "\n",
+ "# put all columns in a single dataframe\n",
+ "train = X_train\n",
+ "train['Activity'] = y_train\n",
+ "train['ActivityName'] = y_train_labels\n",
+ "train.sample(2)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 223
+ },
+ "id": "qaWuiUpnmo15",
+ "outputId": "6403786a-5094-40b0-eec6-656807f6fcc3"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " tBodyAcc-mean()-X tBodyAcc-mean()-Y tBodyAcc-mean()-Z tBodyAcc-std()-X \\\n",
+ "3199 0.258401 -0.039324 -0.164789 0.307451 \n",
+ "4511 0.313266 -0.026318 -0.080982 0.074007 \n",
+ "\n",
+ " tBodyAcc-std()-Y tBodyAcc-std()-Z tBodyAcc-mad()-X tBodyAcc-mad()-Y \\\n",
+ "3199 -0.026412 0.260639 0.276390 -0.076756 \n",
+ "4511 0.279732 -0.092542 0.071571 0.233530 \n",
+ "\n",
+ " tBodyAcc-mad()-Z tBodyAcc-max()-X ... angle(tBodyAccMean,gravity) \\\n",
+ "3199 0.212899 0.484626 ... 0.049062 \n",
+ "4511 -0.076896 0.012170 ... -0.460265 \n",
+ "\n",
+ " angle(tBodyAccJerkMean),gravityMean) angle(tBodyGyroMean,gravityMean) \\\n",
+ "3199 0.696670 0.980788 \n",
+ "4511 -0.788172 -0.758045 \n",
+ "\n",
+ " angle(tBodyGyroJerkMean,gravityMean) angle(X,gravityMean) \\\n",
+ "3199 -0.756975 -0.785422 \n",
+ "4511 0.025444 -0.705500 \n",
+ "\n",
+ " angle(Y,gravityMean) angle(Z,gravityMean) subject Activity \\\n",
+ "3199 0.027284 0.156002 16 3 \n",
+ "4511 0.301570 0.022229 22 2 \n",
+ "\n",
+ " ActivityName \n",
+ "3199 WALKING_DOWNSTAIRS \n",
+ "4511 WALKING_UPSTAIRS \n",
+ "\n",
+ "[2 rows x 564 columns]"
+ ],
+ "text/html": [
+ "\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " tBodyAcc-mean()-X | \n",
+ " tBodyAcc-mean()-Y | \n",
+ " tBodyAcc-mean()-Z | \n",
+ " tBodyAcc-std()-X | \n",
+ " tBodyAcc-std()-Y | \n",
+ " tBodyAcc-std()-Z | \n",
+ " tBodyAcc-mad()-X | \n",
+ " tBodyAcc-mad()-Y | \n",
+ " tBodyAcc-mad()-Z | \n",
+ " tBodyAcc-max()-X | \n",
+ " ... | \n",
+ " angle(tBodyAccMean,gravity) | \n",
+ " angle(tBodyAccJerkMean),gravityMean) | \n",
+ " angle(tBodyGyroMean,gravityMean) | \n",
+ " angle(tBodyGyroJerkMean,gravityMean) | \n",
+ " angle(X,gravityMean) | \n",
+ " angle(Y,gravityMean) | \n",
+ " angle(Z,gravityMean) | \n",
+ " subject | \n",
+ " Activity | \n",
+ " ActivityName | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 3199 | \n",
+ " 0.258401 | \n",
+ " -0.039324 | \n",
+ " -0.164789 | \n",
+ " 0.307451 | \n",
+ " -0.026412 | \n",
+ " 0.260639 | \n",
+ " 0.276390 | \n",
+ " -0.076756 | \n",
+ " 0.212899 | \n",
+ " 0.484626 | \n",
+ " ... | \n",
+ " 0.049062 | \n",
+ " 0.696670 | \n",
+ " 0.980788 | \n",
+ " -0.756975 | \n",
+ " -0.785422 | \n",
+ " 0.027284 | \n",
+ " 0.156002 | \n",
+ " 16 | \n",
+ " 3 | \n",
+ " WALKING_DOWNSTAIRS | \n",
+ "
\n",
+ " \n",
+ " 4511 | \n",
+ " 0.313266 | \n",
+ " -0.026318 | \n",
+ " -0.080982 | \n",
+ " 0.074007 | \n",
+ " 0.279732 | \n",
+ " -0.092542 | \n",
+ " 0.071571 | \n",
+ " 0.233530 | \n",
+ " -0.076896 | \n",
+ " 0.012170 | \n",
+ " ... | \n",
+ " -0.460265 | \n",
+ " -0.788172 | \n",
+ " -0.758045 | \n",
+ " 0.025444 | \n",
+ " -0.705500 | \n",
+ " 0.301570 | \n",
+ " 0.022229 | \n",
+ " 22 | \n",
+ " 2 | \n",
+ " WALKING_UPSTAIRS | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
2 rows × 564 columns
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "\n",
+ " \n",
+ "
\n",
+ "
\n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 11
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "train.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "swxG9-P9qS62",
+ "outputId": "df135e8a-19ca-4c2f-a738-2b4c959ffadf"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(7352, 564)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 12
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "**Getting the test data**"
+ ],
+ "metadata": {
+ "id": "IJ206LxcqvGR"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# get the data from txt files to pandas dataffame\n",
+ "X_test = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/test/X_test.txt', delim_whitespace=True, header=None)\n",
+ "X_test.columns = [features]\n",
+ "# add subject column to the dataframe\n",
+ "X_test['subject'] = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/test/subject_test.txt', header=None, squeeze=True)\n",
+ "\n",
+ "# get y labels from the txt file\n",
+ "y_test = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/test/y_test.txt', names=['Activity'], squeeze=True)\n",
+ "y_test_labels = y_test.map({1: 'WALKING', 2:'WALKING_UPSTAIRS',3:'WALKING_DOWNSTAIRS',\\\n",
+ " 4:'SITTING', 5:'STANDING',6:'LAYING'})\n",
+ "\n",
+ "\n",
+ "# put all columns in a single dataframe\n",
+ "test = X_test\n",
+ "test['Activity'] = y_test\n",
+ "test['ActivityName'] = y_test_labels\n",
+ "test.sample(2)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 223
+ },
+ "id": "kZwehhKWqW1k",
+ "outputId": "8f079a95-39f0-4c59-f92d-353b2834b222"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " tBodyAcc-mean()-X tBodyAcc-mean()-Y tBodyAcc-mean()-Z tBodyAcc-std()-X \\\n",
+ "1382 0.276199 -0.023761 -0.110859 -0.997157 \n",
+ "938 0.278533 -0.016891 -0.107312 -0.997568 \n",
+ "\n",
+ " tBodyAcc-std()-Y tBodyAcc-std()-Z tBodyAcc-mad()-X tBodyAcc-mad()-Y \\\n",
+ "1382 -0.964725 -0.986654 -0.997453 -0.963536 \n",
+ "938 -0.991948 -0.997251 -0.997766 -0.991250 \n",
+ "\n",
+ " tBodyAcc-mad()-Z tBodyAcc-max()-X ... angle(tBodyAccMean,gravity) \\\n",
+ "1382 -0.984579 -0.937842 ... -0.061579 \n",
+ "938 -0.997033 -0.943402 ... -0.552650 \n",
+ "\n",
+ " angle(tBodyAccJerkMean),gravityMean) angle(tBodyGyroMean,gravityMean) \\\n",
+ "1382 -0.056830 0.067044 \n",
+ "938 -0.204948 0.128435 \n",
+ "\n",
+ " angle(tBodyGyroJerkMean,gravityMean) angle(X,gravityMean) \\\n",
+ "1382 0.772829 -0.809269 \n",
+ "938 -0.022742 -0.346751 \n",
+ "\n",
+ " angle(Y,gravityMean) angle(Z,gravityMean) subject Activity ActivityName \n",
+ "1382 0.229980 0.016818 12 5 STANDING \n",
+ "938 -0.311439 -0.163648 10 4 SITTING \n",
+ "\n",
+ "[2 rows x 564 columns]"
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " tBodyAcc-mean()-X | \n",
+ " tBodyAcc-mean()-Y | \n",
+ " tBodyAcc-mean()-Z | \n",
+ " tBodyAcc-std()-X | \n",
+ " tBodyAcc-std()-Y | \n",
+ " tBodyAcc-std()-Z | \n",
+ " tBodyAcc-mad()-X | \n",
+ " tBodyAcc-mad()-Y | \n",
+ " tBodyAcc-mad()-Z | \n",
+ " tBodyAcc-max()-X | \n",
+ " ... | \n",
+ " angle(tBodyAccMean,gravity) | \n",
+ " angle(tBodyAccJerkMean),gravityMean) | \n",
+ " angle(tBodyGyroMean,gravityMean) | \n",
+ " angle(tBodyGyroJerkMean,gravityMean) | \n",
+ " angle(X,gravityMean) | \n",
+ " angle(Y,gravityMean) | \n",
+ " angle(Z,gravityMean) | \n",
+ " subject | \n",
+ " Activity | \n",
+ " ActivityName | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 1382 | \n",
+ " 0.276199 | \n",
+ " -0.023761 | \n",
+ " -0.110859 | \n",
+ " -0.997157 | \n",
+ " -0.964725 | \n",
+ " -0.986654 | \n",
+ " -0.997453 | \n",
+ " -0.963536 | \n",
+ " -0.984579 | \n",
+ " -0.937842 | \n",
+ " ... | \n",
+ " -0.061579 | \n",
+ " -0.056830 | \n",
+ " 0.067044 | \n",
+ " 0.772829 | \n",
+ " -0.809269 | \n",
+ " 0.229980 | \n",
+ " 0.016818 | \n",
+ " 12 | \n",
+ " 5 | \n",
+ " STANDING | \n",
+ "
\n",
+ " \n",
+ " 938 | \n",
+ " 0.278533 | \n",
+ " -0.016891 | \n",
+ " -0.107312 | \n",
+ " -0.997568 | \n",
+ " -0.991948 | \n",
+ " -0.997251 | \n",
+ " -0.997766 | \n",
+ " -0.991250 | \n",
+ " -0.997033 | \n",
+ " -0.943402 | \n",
+ " ... | \n",
+ " -0.552650 | \n",
+ " -0.204948 | \n",
+ " 0.128435 | \n",
+ " -0.022742 | \n",
+ " -0.346751 | \n",
+ " -0.311439 | \n",
+ " -0.163648 | \n",
+ " 10 | \n",
+ " 4 | \n",
+ " SITTING | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
2 rows × 564 columns
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "\n",
+ " \n",
+ "
\n",
+ "
\n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 17
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [],
+ "metadata": {
+ "id": "rn4WPF6RrxpL"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "test.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "C5Cnt2Fqqi7i",
+ "outputId": "bd3c9f20-a0dc-4e9d-fba2-d4ee17112853"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(2947, 564)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 18
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Data Cleaning**"
+ ],
+ "metadata": {
+ "id": "ofxCZ5cCrCDd"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "1. Check for Duplicates"
+ ],
+ "metadata": {
+ "id": "nG_5-qwHrVJM"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "print('No of duplicates in train: {}'.format(sum(train.duplicated())))\n",
+ "print('No of duplicates in test : {}'.format(sum(test.duplicated())))"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "5CpIla-Zq8s_",
+ "outputId": "e99f522c-ea0c-4179-9ae0-16b8791aa306"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "/usr/local/lib/python3.8/dist-packages/IPython/core/interactiveshell.py:2881: PerformanceWarning: indexing past lexsort depth may impact performance.\n",
+ " return runner(coro)\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "No of duplicates in train: 0\n",
+ "No of duplicates in test : 0\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "2. Checking for NaN/null values"
+ ],
+ "metadata": {
+ "id": "s-ZoV6R4rcW9"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "print('We have {} NaN/Null values in train'.format(train.isnull().values.sum()))\n",
+ "print('We have {} NaN/Null values in test'.format(test.isnull().values.sum()))"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "wUi80A8LrY0l",
+ "outputId": "2a34d3f9-07b0-484d-cb74-79f3a4a85ecc"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "We have 0 NaN/Null values in train\n",
+ "We have 0 NaN/Null values in test\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "3. Save this dataframe in a csv files"
+ ],
+ "metadata": {
+ "id": "GevSdDigsDNA"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "train.to_csv('/content/drive/MyDrive/UCI _HAR_Dataset/csv_files/train.csv', index=False)\n",
+ "test.to_csv('/content/drive/MyDrive/UCI _HAR_Dataset/csv_files/test.csv', index=False)"
+ ],
+ "metadata": {
+ "id": "9w61deD-rgYL"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# **Exploratory Data Analysis**"
+ ],
+ "metadata": {
+ "id": "k2vjv7BXsyXf"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "**Obtain the train and test data**"
+ ],
+ "metadata": {
+ "id": "1pe5i04ms3uO"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "train = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/csv_files/train.csv')\n",
+ "test = pd.read_csv('/content/drive/MyDrive/UCI _HAR_Dataset/csv_files/test.csv')\n",
+ "print(train.shape, test.shape)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0o_MQmnEsGQQ",
+ "outputId": "1a5ac68f-dcef-4a22-ed4e-a5faf6c6f406"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "(7352, 564) (2947, 564)\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "**All the feature name with lots of unnecessary signs: Changing feature names**"
+ ],
+ "metadata": {
+ "id": "GeK-xM-dtLMA"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "columns = train.columns\n",
+ "\n",
+ "# Removing '()' from column names\n",
+ "columns = columns.str.replace('[()]','')\n",
+ "columns = columns.str.replace('[-]', '')\n",
+ "columns = columns.str.replace('[,]','')\n",
+ "\n",
+ "train.columns = columns\n",
+ "test.columns = columns\n",
+ "\n",
+ "test.columns"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "pYNuKqADs9e6",
+ "outputId": "8eb357fb-2d92-435b-8265-7b3fd2865c9f"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ ":4: FutureWarning: The default value of regex will change from True to False in a future version.\n",
+ " columns = columns.str.replace('[()]','')\n",
+ ":5: FutureWarning: The default value of regex will change from True to False in a future version.\n",
+ " columns = columns.str.replace('[-]', '')\n",
+ ":6: FutureWarning: The default value of regex will change from True to False in a future version.\n",
+ " columns = columns.str.replace('[,]','')\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "Index(['tBodyAccmeanX', 'tBodyAccmeanY', 'tBodyAccmeanZ', 'tBodyAccstdX',\n",
+ " 'tBodyAccstdY', 'tBodyAccstdZ', 'tBodyAccmadX', 'tBodyAccmadY',\n",
+ " 'tBodyAccmadZ', 'tBodyAccmaxX',\n",
+ " ...\n",
+ " 'angletBodyAccMeangravity', 'angletBodyAccJerkMeangravityMean',\n",
+ " 'angletBodyGyroMeangravityMean', 'angletBodyGyroJerkMeangravityMean',\n",
+ " 'angleXgravityMean', 'angleYgravityMean', 'angleZgravityMean',\n",
+ " 'subject', 'Activity', 'ActivityName'],\n",
+ " dtype='object', length=564)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 26
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "**1. Investigate participants activity durations.**"
+ ],
+ "metadata": {
+ "id": "bi5f2_t1tb6K"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib as mlt\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "\n",
+ "sns.set_style('whitegrid')\n",
+ "\n",
+ "plt.figure(figsize=(16,8))\n",
+ "plt.title('Data provided by each user', fontsize=20)\n",
+ "sns.countplot(x='subject',hue='ActivityName', data = train)\n",
+ "plt.show()"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 518
+ },
+ "id": "WnfNWUDdtVfu",
+ "outputId": "4e529920-4679-439c-8f64-a8d30e95e1d5"
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "