2131 lines (2130 with data), 88.9 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "f5a54e19",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import cv2\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sn\n",
"import os.path, sys, re\n",
"import time\n",
"from PIL import Image\n",
"\n",
"from sktime.utils.data_processing import (\n",
" from_3d_numpy_to_nested,\n",
" from_multi_index_to_3d_numpy,\n",
" from_nested_to_3d_numpy,\n",
" from_multi_index_to_nested,\n",
" from_nested_to_multi_index,\n",
")\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.pipeline import Pipeline\n",
"import sklearn.metrics as metrics\n",
"from sklearn.model_selection import StratifiedShuffleSplit\n",
"from sklearn.model_selection import cross_val_predict\n",
"\n",
"from sktime.classification.compose import ColumnEnsembleClassifier\n",
"from sktime.classification.dictionary_based import BOSSEnsemble\n",
"from sktime.classification.interval_based import TimeSeriesForestClassifier\n",
"from sktime.classification.shapelet_based import MrSEQLClassifier\n",
"from sktime.datasets import load_basic_motions\n",
"from sktime.transformations.panel.compose import ColumnConcatenator\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "70e3cc1c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/moise/Desktop/Data_Science/Erdos_Institute/ecg-proj/ecg-copy\n"
]
}
],
"source": [
"cd ~/Desktop/Data_Science/Erdos_Institute/ecg-proj/ecg-copy/"
]
},
{
"cell_type": "markdown",
"id": "c7bc7c3c",
"metadata": {},
"source": [
"### Data Preprocessing task"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "96b63a75",
"metadata": {},
"outputs": [],
"source": [
"pathroot = \"CSV_data_v2/\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "952c9fcc",
"metadata": {},
"outputs": [],
"source": [
"LeadDict={'Lead1':np.array([[]]),'Lead2':np.array([[]]),'Lead3':np.array([[]]),'Lead4':np.array([[]]),\n",
" 'Lead5':np.array([[]]),'Lead6':np.array([[]]),'Lead7':np.array([[]]),'Lead8':np.array([[]]),\n",
" 'Lead9':np.array([[]]),'Lead10':np.array([[]]),'Lead11':np.array([[]]),'Lead12':np.array([[]])}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "b25f602e",
"metadata": {},
"outputs": [],
"source": [
"leadMinLen = {'Lead1':0,'Lead2':0,'Lead3':0,'Lead4':0,'Lead5':0,'Lead6':0,\n",
" 'Lead7':0,'Lead8':0,'Lead9':0,'Lead10':0,'Lead11':0,'Lead12':0}"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "34d659e8",
"metadata": {},
"outputs": [],
"source": [
"ClassLabels={'ECGImagesofPatientthathaveHistoryofMI':0,'ECGImagesofPatientthathaveabnormalheartbeat':1,\n",
" 'ECGImagesofCOVID-19Patients':2,'NormalPersonECGImages':3,'ECGImagesofMyocardialInfarctionPatients':4}"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "4bfdbe9c",
"metadata": {},
"outputs": [],
"source": [
"\"\"\"\n",
"For every \"x\" value of the signal, average the \"y\" values over duplicates.\n",
"\n",
"Inputs:\n",
"-------\n",
"df data frame of two columns containing the signal \"x\" and \"y\" coordinates corresponding to \"active\" pixels\n",
"\n",
"Outputs:\n",
"--------\n",
"signal numpy array of unique values (\"y\") of the signal\n",
"\"\"\"\n",
"def uniqValsSignal(df):\n",
" xdf=df[0].to_numpy()\n",
" ydf=df[1].to_numpy()\n",
" unikVals = pd.unique(xdf)\n",
" signal = np.zeros(len(unikVals))\n",
" for i in range(len(unikVals)):\n",
" mask = (xdf==unikVals[i])\n",
" signal[i] = np.mean(ydf[mask])\n",
" return signal"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "3a10f67e",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Processing ECGImagesofPatientthathaveHistoryofMI folder ...\n",
"2064 files processed in this folder in 19 sec...\n",
"\n",
"Processing ECGImagesofPatientthathaveabnormalheartbeat folder ...\n",
"2796 files processed in this folder in 29 sec...\n",
"\n",
"Processing ECGImagesofCOVID-19Patients folder ...\n",
"3000 files processed in this folder in 14 sec...\n",
"\n",
"Processing NormalPersonECGImages folder ...\n",
"3408 files processed in this folder in 33 sec...\n",
"\n",
"Processing ECGImagesofMyocardialInfarctionPatients folder ...\n",
"2868 files processed in this folder in 28 sec...\n",
"\n"
]
}
],
"source": [
"\"\"\"\n",
"Note:\n",
"-----\n",
"\n",
"1) For the \"time series\", only the second column of every lead is extracted as signal.\n",
"2) Because of non-uniformity in signal lenght across both observations and Leads, the code\n",
"uses the minimum signal length across observation and leads, in order to make the date \"proper\n",
"for multivariate time series classification.\n",
"\"\"\"\n",
"\n",
"labelArr = np.array([])\n",
"for dirs in os.listdir(pathroot):\n",
"# if dirs == 'ECGImagesofCOVID-19Patients':\n",
"# continue\n",
" t = time.time()\n",
" count = 0\n",
" print('Processing {0} folder ...'.format(dirs))\n",
" if not os.path.isfile(dirs):\n",
" for item in os.listdir(os.path.join(pathroot,dirs)):\n",
" #print('Processing {0} file ...'.format(item))\n",
" of, oe = os.path.splitext(item)\n",
" if of[0]=='.':\n",
" continue\n",
" else:\n",
" signal = pd.read_csv(os.path.join(pathroot,os.path.join(dirs,item)),header=None,sep=' ')#[1].to_numpy()\n",
" signal = uniqValsSignal(signal)\n",
" try:\n",
" leadNum = int(of[-2:])\n",
" except ValueError:\n",
" leadNum = int(of[-1:])\n",
" finally:\n",
" leadKey = 'Lead'+str(leadNum)\n",
" if leadNum == 13:\n",
" continue\n",
" if LeadDict[leadKey].shape[1] > 0:\n",
" if len(signal)> leadMinLen[leadKey]:\n",
" signal = np.reshape(signal[:leadMinLen[leadKey]],(1,leadMinLen[leadKey]))\n",
" LeadDict[leadKey] = np.concatenate( (LeadDict[leadKey],signal) )\n",
" else:\n",
" LeadDict[leadKey] = LeadDict[leadKey][:,:len(signal)]\n",
" LeadDict[leadKey] = np.concatenate( (LeadDict[leadKey],np.reshape(signal,(1,len(signal)))) )\n",
" leadMinLen[leadKey] = len(signal) \n",
" else:\n",
" LeadDict[leadKey] = np.reshape(signal,(1,len(signal)))\n",
" leadMinLen[leadKey] = len(signal) \n",
" count = count+1\n",
" labelArr = np.append(labelArr,np.repeat(ClassLabels[dirs],len(LeadDict[leadKey])-len(labelArr))) ##Add labels\n",
" t = time.time()-t\n",
" print('{0} files processed in this folder in {1} sec...\\n'.format(count,round(t))) "
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "e2823e5f",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"\"\"\"\n",
"Post Processing:\n",
"---------------\n",
"\n",
"1) Put all the leads on the same \"time\" scale/Length\n",
"2) Pull all the leads(2D) into a 3D array of shape (n_obs,n_col,n_timepoints)\n",
"3) Convert result from step 2 into a nested data frame.\n",
"\"\"\"\n",
"\n",
"minLen = min(leadMinLen.values())\n",
"for key in LeadDict.keys():\n",
" LeadDict[key] = LeadDict[key][:,:minLen]\n",
"\n",
"dim1 = LeadDict['Lead1'].shape[0]\n",
"dim2 = len(LeadDict.keys())\n",
"dim3 = LeadDict['Lead1'].shape[1]\n",
"X3d = np.zeros((dim1,dim2,dim3))\n",
"for j in range(dim2):\n",
" X3d[:,j,:] = list(LeadDict.values())[j]\n",
" \n",
"X3d_nested=from_3d_numpy_to_nested(X3d)\n",
"X3d_nested.columns = list(LeadDict.keys())\n",
"X3d_nested['Label'] = labelArr\n",
"X3d_nested.to_csv('muti-lead-dataFrame.csv',index=False,float_format='%d')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "fdfd5abc",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Lead1</th>\n",
" <th>Lead2</th>\n",
" <th>Lead3</th>\n",
" <th>Lead4</th>\n",
" <th>Lead5</th>\n",
" <th>Lead6</th>\n",
" <th>Lead7</th>\n",
" <th>Lead8</th>\n",
" <th>Lead9</th>\n",
" <th>Lead10</th>\n",
" <th>Lead11</th>\n",
" <th>Lead12</th>\n",
" <th>Label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0 126.0\n",
"1 119.5\n",
"2 134.0\n",
"3 ...</td>\n",
" <td>0 105.0\n",
"1 104.5\n",
"2 104.5\n",
"3 ...</td>\n",
" <td>0 104.714286\n",
"1 117.250000\n",
"2 101...</td>\n",
" <td>0 35.957447\n",
"1 35.500000\n",
"2 46...</td>\n",
" <td>0 158.000000\n",
"1 157.333333\n",
"2 149...</td>\n",
" <td>0 119.5\n",
"1 116.5\n",
"2 125.5\n",
"3 ...</td>\n",
" <td>0 137.5\n",
"1 137.0\n",
"2 136.5\n",
"3 ...</td>\n",
" <td>0 156.0\n",
"1 154.0\n",
"2 153.5\n",
"3 ...</td>\n",
" <td>0 162.000000\n",
"1 162.000000\n",
"2 151...</td>\n",
" <td>0 155.0\n",
"1 154.5\n",
"2 155.5\n",
"3 ...</td>\n",
" <td>0 193.545455\n",
"1 3.500000\n",
"2 3...</td>\n",
" <td>0 89.000000\n",
"1 109.500000\n",
"2 91...</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0 139.0\n",
"1 129.0\n",
"2 127.0\n",
"3 ...</td>\n",
" <td>0 103.0\n",
"1 103.0\n",
"2 102.0\n",
"3 ...</td>\n",
" <td>0 80.5\n",
"1 80.0\n",
"2 79.0\n",
"3 79....</td>\n",
" <td>0 67.5\n",
"1 72.0\n",
"2 77.0\n",
"3 ...</td>\n",
" <td>0 127.5\n",
"1 126.0\n",
"2 131.5\n",
"3 ...</td>\n",
" <td>0 130.0\n",
"1 139.0\n",
"2 130.5\n",
"3 ...</td>\n",
" <td>0 129.5\n",
"1 129.5\n",
"2 129.5\n",
"3 ...</td>\n",
" <td>0 155.5\n",
"1 155.5\n",
"2 155.5\n",
"3 ...</td>\n",
" <td>0 139.0\n",
"1 131.5\n",
"2 128.5\n",
"3 ...</td>\n",
" <td>0 153.5\n",
"1 149.0\n",
"2 151.0\n",
"3 ...</td>\n",
" <td>0 80.166667\n",
"1 77.071429\n",
"2 82...</td>\n",
" <td>0 109.000000\n",
"1 100.000000\n",
"2 111...</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0 158.333333\n",
"1 158.333333\n",
"2 149...</td>\n",
" <td>0 103.5\n",
"1 106.5\n",
"2 110.5\n",
"3 ...</td>\n",
" <td>0 103.5\n",
"1 103.5\n",
"2 103.5\n",
"3 ...</td>\n",
" <td>0 97.5\n",
"1 97.5\n",
"2 97.0\n",
"3 ...</td>\n",
" <td>0 118.363636\n",
"1 97.000000\n",
"2 94...</td>\n",
" <td>0 116.666667\n",
"1 155.500000\n",
"2 156...</td>\n",
" <td>0 131.200000\n",
"1 136.166667\n",
"2 104...</td>\n",
" <td>0 108.5\n",
"1 100.0\n",
"2 112.5\n",
"3 ...</td>\n",
" <td>0 169.500000\n",
"1 153.000000\n",
"2 145...</td>\n",
" <td>0 156.0\n",
"1 156.0\n",
"2 157.5\n",
"3 ...</td>\n",
" <td>0 145.5\n",
"1 145.5\n",
"2 145.5\n",
"3 ...</td>\n",
" <td>0 107.170732\n",
"1 104.000000\n",
"2 121...</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0 116.5\n",
"1 117.5\n",
"2 126.0\n",
"3 ...</td>\n",
" <td>0 100.5\n",
"1 100.5\n",
"2 101.5\n",
"3 ...</td>\n",
" <td>0 104.5\n",
"1 104.5\n",
"2 104.0\n",
"3 ...</td>\n",
" <td>0 63.0\n",
"1 60.0\n",
"2 67.5\n",
"3 ...</td>\n",
" <td>0 130.0\n",
"1 123.5\n",
"2 129.5\n",
"3 ...</td>\n",
" <td>0 131.5\n",
"1 130.0\n",
"2 131.5\n",
"3 ...</td>\n",
" <td>0 140.5\n",
"1 150.0\n",
"2 144.5\n",
"3 ...</td>\n",
" <td>0 155.0\n",
"1 155.0\n",
"2 155.0\n",
"3 ...</td>\n",
" <td>0 169.500000\n",
"1 153.000000\n",
"2 145...</td>\n",
" <td>0 119.5\n",
"1 122.0\n",
"2 129.5\n",
"3 ...</td>\n",
" <td>0 154.055944\n",
"1 136.396396\n",
"2 44...</td>\n",
" <td>0 121.714286\n",
"1 144.000000\n",
"2 133...</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0 157.000000\n",
"1 157.000000\n",
"2 148...</td>\n",
" <td>0 106.5\n",
"1 106.5\n",
"2 106.0\n",
"3 ...</td>\n",
" <td>0 107.0\n",
"1 106.0\n",
"2 106.0\n",
"3 ...</td>\n",
" <td>0 58.5\n",
"1 70.0\n",
"2 86.0\n",
"3 ...</td>\n",
" <td>0 141.0\n",
"1 136.5\n",
"2 138.0\n",
"3 ...</td>\n",
" <td>0 155.5\n",
"1 158.5\n",
"2 156.5\n",
"3 ...</td>\n",
" <td>0 131.0\n",
"1 130.5\n",
"2 130.0\n",
"3 ...</td>\n",
" <td>0 133.5\n",
"1 133.0\n",
"2 146.5\n",
"3 ...</td>\n",
" <td>0 139.333333\n",
"1 159.357143\n",
"2 156...</td>\n",
" <td>0 137.0\n",
"1 138.5\n",
"2 145.5\n",
"3 ...</td>\n",
" <td>0 137.5\n",
"1 138.0\n",
"2 146.5\n",
"3 ...</td>\n",
" <td>0 140.0\n",
"1 135.0\n",
"2 142.0\n",
"3 ...</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1173</th>\n",
" <td>0 130.5\n",
"1 127.5\n",
"2 127.0\n",
"3 ...</td>\n",
" <td>0 100.5\n",
"1 100.0\n",
"2 99.5\n",
"3 ...</td>\n",
" <td>0 107.0\n",
"1 107.0\n",
"2 109.0\n",
"3 ...</td>\n",
" <td>0 57.0\n",
"1 67.5\n",
"2 82.5\n",
"3 ...</td>\n",
" <td>0 110.5\n",
"1 107.5\n",
"2 123.5\n",
"3 ...</td>\n",
" <td>0 142.5\n",
"1 145.0\n",
"2 156.5\n",
"3 ...</td>\n",
" <td>0 97.0\n",
"1 124.5\n",
"2 105.5\n",
"3 ...</td>\n",
" <td>0 127.5\n",
"1 126.0\n",
"2 127.5\n",
"3 ...</td>\n",
" <td>0 142.5\n",
"1 137.5\n",
"2 137.5\n",
"3 ...</td>\n",
" <td>0 133.0\n",
"1 132.5\n",
"2 132.5\n",
"3 ...</td>\n",
" <td>0 4.0\n",
"1 12.5\n",
"2 19.0\n",
"3 ...</td>\n",
" <td>0 138.5\n",
"1 143.0\n",
"2 143.5\n",
"3 ...</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1174</th>\n",
" <td>0 92.5\n",
"1 78.5\n",
"2 92.0\n",
"3 ...</td>\n",
" <td>0 102.5\n",
"1 103.0\n",
"2 103.0\n",
"3 ...</td>\n",
" <td>0 87.5\n",
"1 87.5\n",
"2 87.5\n",
"3 ...</td>\n",
" <td>0 74.0\n",
"1 72.5\n",
"2 74.5\n",
"3 ...</td>\n",
" <td>0 71.5\n",
"1 74.5\n",
"2 83.0\n",
"3 ...</td>\n",
" <td>0 113.0\n",
"1 111.0\n",
"2 119.0\n",
"3 ...</td>\n",
" <td>0 141.600000\n",
"1 133.250000\n",
"2 122...</td>\n",
" <td>0 121.0\n",
"1 120.5\n",
"2 120.0\n",
"3 ...</td>\n",
" <td>0 87.0\n",
"1 86.5\n",
"2 86.0\n",
"3 ...</td>\n",
" <td>0 140.0\n",
"1 148.5\n",
"2 142.0\n",
"3 ...</td>\n",
" <td>0 137.909091\n",
"1 140.000000\n",
"2 137...</td>\n",
" <td>0 117.5\n",
"1 125.0\n",
"2 127.0\n",
"3 ...</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1175</th>\n",
" <td>0 130.0\n",
"1 131.5\n",
"2 138.0\n",
"3 ...</td>\n",
" <td>0 103.0\n",
"1 103.5\n",
"2 103.5\n",
"3 ...</td>\n",
" <td>0 97.0\n",
"1 96.5\n",
"2 96.0\n",
"3 ...</td>\n",
" <td>0 54.5\n",
"1 40.0\n",
"2 70.0\n",
"3 ...</td>\n",
" <td>0 142.000\n",
"1 147.000\n",
"2 142.000\n",
"3...</td>\n",
" <td>0 135.0\n",
"1 145.0\n",
"2 138.5\n",
"3 ...</td>\n",
" <td>0 97.0\n",
"1 124.5\n",
"2 105.5\n",
"3 ...</td>\n",
" <td>0 137.5\n",
"1 144.5\n",
"2 153.5\n",
"3 ...</td>\n",
" <td>0 87.0\n",
"1 86.5\n",
"2 86.0\n",
"3 ...</td>\n",
" <td>0 156.5\n",
"1 156.5\n",
"2 155.5\n",
"3 ...</td>\n",
" <td>0 135.0\n",
"1 135.0\n",
"2 135.5\n",
"3 ...</td>\n",
" <td>0 128.0\n",
"1 124.5\n",
"2 136.5\n",
"3 ...</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1176</th>\n",
" <td>0 127.0\n",
"1 133.5\n",
"2 137.5\n",
"3 ...</td>\n",
" <td>0 100.5\n",
"1 100.0\n",
"2 102.5\n",
"3 ...</td>\n",
" <td>0 91.5\n",
"1 94.5\n",
"2 96.0\n",
"3 ...</td>\n",
" <td>0 74.0\n",
"1 72.5\n",
"2 74.5\n",
"3 ...</td>\n",
" <td>0 113.875000\n",
"1 144.000000\n",
"2 152...</td>\n",
" <td>0 132.5\n",
"1 134.0\n",
"2 143.5\n",
"3 ...</td>\n",
" <td>0 119.0\n",
"1 118.5\n",
"2 118.0\n",
"3 ...</td>\n",
" <td>0 125.5\n",
"1 121.5\n",
"2 129.0\n",
"3 ...</td>\n",
" <td>0 137.0\n",
"1 136.5\n",
"2 138.5\n",
"3 ...</td>\n",
" <td>0 55.5\n",
"1 52.0\n",
"2 77.5\n",
"3 ...</td>\n",
" <td>0 116.5\n",
"1 116.5\n",
"2 117.0\n",
"3 ...</td>\n",
" <td>0 114.0\n",
"1 110.5\n",
"2 123.5\n",
"3 ...</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1177</th>\n",
" <td>0 158.857143\n",
"1 158.857143\n",
"2 150...</td>\n",
" <td>0 103.0\n",
"1 103.5\n",
"2 107.0\n",
"3 ...</td>\n",
" <td>0 103.5\n",
"1 105.0\n",
"2 114.0\n",
"3 ...</td>\n",
" <td>0 74.5\n",
"1 74.5\n",
"2 75.0\n",
"3 ...</td>\n",
" <td>0 142.0\n",
"1 136.5\n",
"2 133.0\n",
"3 ...</td>\n",
" <td>0 150.0\n",
"1 144.5\n",
"2 154.5\n",
"3 ...</td>\n",
" <td>0 103.0\n",
"1 95.5\n",
"2 103.5\n",
"3 ...</td>\n",
" <td>0 111.5\n",
"1 100.0\n",
"2 104.5\n",
"3 ...</td>\n",
" <td>0 165.428571\n",
"1 165.875000\n",
"2 154...</td>\n",
" <td>0 146.5\n",
"1 145.0\n",
"2 144.0\n",
"3 ...</td>\n",
" <td>0 96.5\n",
"1 96.5\n",
"2 96.5\n",
"3 ...</td>\n",
" <td>0 137.0\n",
"1 134.0\n",
"2 129.5\n",
"3 ...</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1178 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" Lead1 \\\n",
"0 0 126.0\n",
"1 119.5\n",
"2 134.0\n",
"3 ... \n",
"1 0 139.0\n",
"1 129.0\n",
"2 127.0\n",
"3 ... \n",
"2 0 158.333333\n",
"1 158.333333\n",
"2 149... \n",
"3 0 116.5\n",
"1 117.5\n",
"2 126.0\n",
"3 ... \n",
"4 0 157.000000\n",
"1 157.000000\n",
"2 148... \n",
"... ... \n",
"1173 0 130.5\n",
"1 127.5\n",
"2 127.0\n",
"3 ... \n",
"1174 0 92.5\n",
"1 78.5\n",
"2 92.0\n",
"3 ... \n",
"1175 0 130.0\n",
"1 131.5\n",
"2 138.0\n",
"3 ... \n",
"1176 0 127.0\n",
"1 133.5\n",
"2 137.5\n",
"3 ... \n",
"1177 0 158.857143\n",
"1 158.857143\n",
"2 150... \n",
"\n",
" Lead2 \\\n",
"0 0 105.0\n",
"1 104.5\n",
"2 104.5\n",
"3 ... \n",
"1 0 103.0\n",
"1 103.0\n",
"2 102.0\n",
"3 ... \n",
"2 0 103.5\n",
"1 106.5\n",
"2 110.5\n",
"3 ... \n",
"3 0 100.5\n",
"1 100.5\n",
"2 101.5\n",
"3 ... \n",
"4 0 106.5\n",
"1 106.5\n",
"2 106.0\n",
"3 ... \n",
"... ... \n",
"1173 0 100.5\n",
"1 100.0\n",
"2 99.5\n",
"3 ... \n",
"1174 0 102.5\n",
"1 103.0\n",
"2 103.0\n",
"3 ... \n",
"1175 0 103.0\n",
"1 103.5\n",
"2 103.5\n",
"3 ... \n",
"1176 0 100.5\n",
"1 100.0\n",
"2 102.5\n",
"3 ... \n",
"1177 0 103.0\n",
"1 103.5\n",
"2 107.0\n",
"3 ... \n",
"\n",
" Lead3 \\\n",
"0 0 104.714286\n",
"1 117.250000\n",
"2 101... \n",
"1 0 80.5\n",
"1 80.0\n",
"2 79.0\n",
"3 79.... \n",
"2 0 103.5\n",
"1 103.5\n",
"2 103.5\n",
"3 ... \n",
"3 0 104.5\n",
"1 104.5\n",
"2 104.0\n",
"3 ... \n",
"4 0 107.0\n",
"1 106.0\n",
"2 106.0\n",
"3 ... \n",
"... ... \n",
"1173 0 107.0\n",
"1 107.0\n",
"2 109.0\n",
"3 ... \n",
"1174 0 87.5\n",
"1 87.5\n",
"2 87.5\n",
"3 ... \n",
"1175 0 97.0\n",
"1 96.5\n",
"2 96.0\n",
"3 ... \n",
"1176 0 91.5\n",
"1 94.5\n",
"2 96.0\n",
"3 ... \n",
"1177 0 103.5\n",
"1 105.0\n",
"2 114.0\n",
"3 ... \n",
"\n",
" Lead4 \\\n",
"0 0 35.957447\n",
"1 35.500000\n",
"2 46... \n",
"1 0 67.5\n",
"1 72.0\n",
"2 77.0\n",
"3 ... \n",
"2 0 97.5\n",
"1 97.5\n",
"2 97.0\n",
"3 ... \n",
"3 0 63.0\n",
"1 60.0\n",
"2 67.5\n",
"3 ... \n",
"4 0 58.5\n",
"1 70.0\n",
"2 86.0\n",
"3 ... \n",
"... ... \n",
"1173 0 57.0\n",
"1 67.5\n",
"2 82.5\n",
"3 ... \n",
"1174 0 74.0\n",
"1 72.5\n",
"2 74.5\n",
"3 ... \n",
"1175 0 54.5\n",
"1 40.0\n",
"2 70.0\n",
"3 ... \n",
"1176 0 74.0\n",
"1 72.5\n",
"2 74.5\n",
"3 ... \n",
"1177 0 74.5\n",
"1 74.5\n",
"2 75.0\n",
"3 ... \n",
"\n",
" Lead5 \\\n",
"0 0 158.000000\n",
"1 157.333333\n",
"2 149... \n",
"1 0 127.5\n",
"1 126.0\n",
"2 131.5\n",
"3 ... \n",
"2 0 118.363636\n",
"1 97.000000\n",
"2 94... \n",
"3 0 130.0\n",
"1 123.5\n",
"2 129.5\n",
"3 ... \n",
"4 0 141.0\n",
"1 136.5\n",
"2 138.0\n",
"3 ... \n",
"... ... \n",
"1173 0 110.5\n",
"1 107.5\n",
"2 123.5\n",
"3 ... \n",
"1174 0 71.5\n",
"1 74.5\n",
"2 83.0\n",
"3 ... \n",
"1175 0 142.000\n",
"1 147.000\n",
"2 142.000\n",
"3... \n",
"1176 0 113.875000\n",
"1 144.000000\n",
"2 152... \n",
"1177 0 142.0\n",
"1 136.5\n",
"2 133.0\n",
"3 ... \n",
"\n",
" Lead6 \\\n",
"0 0 119.5\n",
"1 116.5\n",
"2 125.5\n",
"3 ... \n",
"1 0 130.0\n",
"1 139.0\n",
"2 130.5\n",
"3 ... \n",
"2 0 116.666667\n",
"1 155.500000\n",
"2 156... \n",
"3 0 131.5\n",
"1 130.0\n",
"2 131.5\n",
"3 ... \n",
"4 0 155.5\n",
"1 158.5\n",
"2 156.5\n",
"3 ... \n",
"... ... \n",
"1173 0 142.5\n",
"1 145.0\n",
"2 156.5\n",
"3 ... \n",
"1174 0 113.0\n",
"1 111.0\n",
"2 119.0\n",
"3 ... \n",
"1175 0 135.0\n",
"1 145.0\n",
"2 138.5\n",
"3 ... \n",
"1176 0 132.5\n",
"1 134.0\n",
"2 143.5\n",
"3 ... \n",
"1177 0 150.0\n",
"1 144.5\n",
"2 154.5\n",
"3 ... \n",
"\n",
" Lead7 \\\n",
"0 0 137.5\n",
"1 137.0\n",
"2 136.5\n",
"3 ... \n",
"1 0 129.5\n",
"1 129.5\n",
"2 129.5\n",
"3 ... \n",
"2 0 131.200000\n",
"1 136.166667\n",
"2 104... \n",
"3 0 140.5\n",
"1 150.0\n",
"2 144.5\n",
"3 ... \n",
"4 0 131.0\n",
"1 130.5\n",
"2 130.0\n",
"3 ... \n",
"... ... \n",
"1173 0 97.0\n",
"1 124.5\n",
"2 105.5\n",
"3 ... \n",
"1174 0 141.600000\n",
"1 133.250000\n",
"2 122... \n",
"1175 0 97.0\n",
"1 124.5\n",
"2 105.5\n",
"3 ... \n",
"1176 0 119.0\n",
"1 118.5\n",
"2 118.0\n",
"3 ... \n",
"1177 0 103.0\n",
"1 95.5\n",
"2 103.5\n",
"3 ... \n",
"\n",
" Lead8 \\\n",
"0 0 156.0\n",
"1 154.0\n",
"2 153.5\n",
"3 ... \n",
"1 0 155.5\n",
"1 155.5\n",
"2 155.5\n",
"3 ... \n",
"2 0 108.5\n",
"1 100.0\n",
"2 112.5\n",
"3 ... \n",
"3 0 155.0\n",
"1 155.0\n",
"2 155.0\n",
"3 ... \n",
"4 0 133.5\n",
"1 133.0\n",
"2 146.5\n",
"3 ... \n",
"... ... \n",
"1173 0 127.5\n",
"1 126.0\n",
"2 127.5\n",
"3 ... \n",
"1174 0 121.0\n",
"1 120.5\n",
"2 120.0\n",
"3 ... \n",
"1175 0 137.5\n",
"1 144.5\n",
"2 153.5\n",
"3 ... \n",
"1176 0 125.5\n",
"1 121.5\n",
"2 129.0\n",
"3 ... \n",
"1177 0 111.5\n",
"1 100.0\n",
"2 104.5\n",
"3 ... \n",
"\n",
" Lead9 \\\n",
"0 0 162.000000\n",
"1 162.000000\n",
"2 151... \n",
"1 0 139.0\n",
"1 131.5\n",
"2 128.5\n",
"3 ... \n",
"2 0 169.500000\n",
"1 153.000000\n",
"2 145... \n",
"3 0 169.500000\n",
"1 153.000000\n",
"2 145... \n",
"4 0 139.333333\n",
"1 159.357143\n",
"2 156... \n",
"... ... \n",
"1173 0 142.5\n",
"1 137.5\n",
"2 137.5\n",
"3 ... \n",
"1174 0 87.0\n",
"1 86.5\n",
"2 86.0\n",
"3 ... \n",
"1175 0 87.0\n",
"1 86.5\n",
"2 86.0\n",
"3 ... \n",
"1176 0 137.0\n",
"1 136.5\n",
"2 138.5\n",
"3 ... \n",
"1177 0 165.428571\n",
"1 165.875000\n",
"2 154... \n",
"\n",
" Lead10 \\\n",
"0 0 155.0\n",
"1 154.5\n",
"2 155.5\n",
"3 ... \n",
"1 0 153.5\n",
"1 149.0\n",
"2 151.0\n",
"3 ... \n",
"2 0 156.0\n",
"1 156.0\n",
"2 157.5\n",
"3 ... \n",
"3 0 119.5\n",
"1 122.0\n",
"2 129.5\n",
"3 ... \n",
"4 0 137.0\n",
"1 138.5\n",
"2 145.5\n",
"3 ... \n",
"... ... \n",
"1173 0 133.0\n",
"1 132.5\n",
"2 132.5\n",
"3 ... \n",
"1174 0 140.0\n",
"1 148.5\n",
"2 142.0\n",
"3 ... \n",
"1175 0 156.5\n",
"1 156.5\n",
"2 155.5\n",
"3 ... \n",
"1176 0 55.5\n",
"1 52.0\n",
"2 77.5\n",
"3 ... \n",
"1177 0 146.5\n",
"1 145.0\n",
"2 144.0\n",
"3 ... \n",
"\n",
" Lead11 \\\n",
"0 0 193.545455\n",
"1 3.500000\n",
"2 3... \n",
"1 0 80.166667\n",
"1 77.071429\n",
"2 82... \n",
"2 0 145.5\n",
"1 145.5\n",
"2 145.5\n",
"3 ... \n",
"3 0 154.055944\n",
"1 136.396396\n",
"2 44... \n",
"4 0 137.5\n",
"1 138.0\n",
"2 146.5\n",
"3 ... \n",
"... ... \n",
"1173 0 4.0\n",
"1 12.5\n",
"2 19.0\n",
"3 ... \n",
"1174 0 137.909091\n",
"1 140.000000\n",
"2 137... \n",
"1175 0 135.0\n",
"1 135.0\n",
"2 135.5\n",
"3 ... \n",
"1176 0 116.5\n",
"1 116.5\n",
"2 117.0\n",
"3 ... \n",
"1177 0 96.5\n",
"1 96.5\n",
"2 96.5\n",
"3 ... \n",
"\n",
" Lead12 Label \n",
"0 0 89.000000\n",
"1 109.500000\n",
"2 91... 0.0 \n",
"1 0 109.000000\n",
"1 100.000000\n",
"2 111... 0.0 \n",
"2 0 107.170732\n",
"1 104.000000\n",
"2 121... 0.0 \n",
"3 0 121.714286\n",
"1 144.000000\n",
"2 133... 0.0 \n",
"4 0 140.0\n",
"1 135.0\n",
"2 142.0\n",
"3 ... 0.0 \n",
"... ... ... \n",
"1173 0 138.5\n",
"1 143.0\n",
"2 143.5\n",
"3 ... 4.0 \n",
"1174 0 117.5\n",
"1 125.0\n",
"2 127.0\n",
"3 ... 4.0 \n",
"1175 0 128.0\n",
"1 124.5\n",
"2 136.5\n",
"3 ... 4.0 \n",
"1176 0 114.0\n",
"1 110.5\n",
"2 123.5\n",
"3 ... 4.0 \n",
"1177 0 137.0\n",
"1 134.0\n",
"2 129.5\n",
"3 ... 4.0 \n",
"\n",
"[1178 rows x 13 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X3d_nested"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e3b5fedb",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "5de9ce41",
"metadata": {},
"source": [
"### Classification Task"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "1e302a86",
"metadata": {},
"outputs": [],
"source": [
"split = StratifiedShuffleSplit(n_splits=1, test_size=0.25, random_state=42)\n",
"for train_index, test_index in split.split(X3d_nested, X3d_nested['Label']):\n",
" X_train = X3d_nested.loc[train_index]\n",
" X_test = X3d_nested.loc[test_index]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "0df5b1b4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data set proportions:\n",
"3.0 0.241087\n",
"2.0 0.212224\n",
"4.0 0.202886\n",
"1.0 0.197793\n",
"0.0 0.146010\n",
"Name: Label, dtype: float64\n",
"\n",
"Test set proportions:\n",
"3.0 0.240678\n",
"2.0 0.213559\n",
"4.0 0.203390\n",
"1.0 0.196610\n",
"0.0 0.145763\n",
"Name: Label, dtype: float64\n"
]
}
],
"source": [
"#Ascertain the spits are balanced\n",
"dataSetProp = X3d_nested['Label'].value_counts()/len(X3d_nested)\n",
"testSetProp = X_test['Label'].value_counts() / len(X_test)\n",
"print('Data set proportions:')\n",
"print(dataSetProp)\n",
"print('\\nTest set proportions:')\n",
"print(testSetProp)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "f8feb458",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"y_train = X_train['Label']\n",
"X_train.drop('Label',axis=1,inplace=True)\n",
"y_test = X_test['Label']\n",
"X_test.drop('Label',axis=1,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "5315d99b",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Lead1</th>\n",
" <th>Lead2</th>\n",
" <th>Lead3</th>\n",
" <th>Lead4</th>\n",
" <th>Lead5</th>\n",
" <th>Lead6</th>\n",
" <th>Lead7</th>\n",
" <th>Lead8</th>\n",
" <th>Lead9</th>\n",
" <th>Lead10</th>\n",
" <th>Lead11</th>\n",
" <th>Lead12</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>309</th>\n",
" <td>0 138.0\n",
"1 140.5\n",
"2 143.5\n",
"3 ...</td>\n",
" <td>0 100.0\n",
"1 89.5\n",
"2 88.5\n",
"3 ...</td>\n",
" <td>0 96.5\n",
"1 96.0\n",
"2 101.0\n",
"3 ...</td>\n",
" <td>0 40.0\n",
"1 33.0\n",
"2 66.5\n",
"3 ...</td>\n",
" <td>0 108.50\n",
"1 98.00\n",
"2 113.00\n",
"3 ...</td>\n",
" <td>0 156.0\n",
"1 155.0\n",
"2 156.5\n",
"3 ...</td>\n",
" <td>0 125.535714\n",
"1 147.666667\n",
"2 139...</td>\n",
" <td>0 133.0\n",
"1 135.5\n",
"2 131.5\n",
"3 ...</td>\n",
" <td>0 107.5\n",
"1 97.5\n",
"2 123.0\n",
"3 ...</td>\n",
" <td>0 140.5\n",
"1 139.5\n",
"2 146.0\n",
"3 ...</td>\n",
" <td>0 153.0\n",
"1 150.5\n",
"2 162.5\n",
"3 ...</td>\n",
" <td>0 101.0\n",
"1 100.5\n",
"2 110.0\n",
"3 ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1108</th>\n",
" <td>0 124.5\n",
"1 115.0\n",
"2 116.5\n",
"3 ...</td>\n",
" <td>0 101.0\n",
"1 101.5\n",
"2 102.5\n",
"3 ...</td>\n",
" <td>0 107.0\n",
"1 107.0\n",
"2 109.0\n",
"3 ...</td>\n",
" <td>0 25.5\n",
"1 22.5\n",
"2 40.5\n",
"3 ...</td>\n",
" <td>0 106.5\n",
"1 112.5\n",
"2 117.5\n",
"3 ...</td>\n",
" <td>0 135.0\n",
"1 145.0\n",
"2 138.5\n",
"3 ...</td>\n",
" <td>0 145.148148\n",
"1 6.000000\n",
"2 6...</td>\n",
" <td>0 123.5\n",
"1 111.0\n",
"2 114.0\n",
"3 ...</td>\n",
" <td>0 165.428571\n",
"1 165.875000\n",
"2 154...</td>\n",
" <td>0 130.0\n",
"1 132.0\n",
"2 133.0\n",
"3 ...</td>\n",
" <td>0 89.5\n",
"1 92.5\n",
"2 102.5\n",
"3 ...</td>\n",
" <td>0 135.0\n",
"1 128.5\n",
"2 125.0\n",
"3 ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>647</th>\n",
" <td>0 65.000000\n",
"1 56.000000\n",
"2 58.85...</td>\n",
" <td>0 80.0\n",
"1 80.0\n",
"2 80.0\n",
"3 81....</td>\n",
" <td>0 45.000000\n",
"1 44.500000\n",
"2 46.00...</td>\n",
" <td>0 40.500000\n",
"1 51.914286\n",
"2 45.92...</td>\n",
" <td>0 77.000000\n",
"1 78.555556\n",
"2 78...</td>\n",
" <td>0 45.500000\n",
"1 50.200000\n",
"2 46.00...</td>\n",
" <td>0 78.000000\n",
"1 82.000000\n",
"2 76...</td>\n",
" <td>0 54.636364\n",
"1 58.500000\n",
"2 62.12...</td>\n",
" <td>0 133.500000\n",
"1 133.500000\n",
"2 133...</td>\n",
" <td>0 73.000000\n",
"1 75.000000\n",
"2 75...</td>\n",
" <td>0 68.333333\n",
"1 57.500000\n",
"2 59.09...</td>\n",
" <td>0 74.631579\n",
"1 76.466667\n",
"2 79...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>0 157.666667\n",
"1 157.666667\n",
"2 149...</td>\n",
" <td>0 105.0\n",
"1 109.5\n",
"2 102.5\n",
"3 ...</td>\n",
" <td>0 104.0\n",
"1 112.5\n",
"2 104.5\n",
"3 ...</td>\n",
" <td>0 52.0\n",
"1 76.0\n",
"2 58.0\n",
"3 ...</td>\n",
" <td>0 124.5\n",
"1 120.5\n",
"2 128.5\n",
"3 ...</td>\n",
" <td>0 118.333333\n",
"1 125.500000\n",
"2 128...</td>\n",
" <td>0 113.5\n",
"1 120.0\n",
"2 151.0\n",
"3 ...</td>\n",
" <td>0 92.5\n",
"1 94.0\n",
"2 109.5\n",
"3 ...</td>\n",
" <td>0 120.0\n",
"1 120.0\n",
"2 126.5\n",
"3 ...</td>\n",
" <td>0 150.0\n",
"1 153.5\n",
"2 145.5\n",
"3 ...</td>\n",
" <td>0 144.0\n",
"1 137.5\n",
"2 145.5\n",
"3 ...</td>\n",
" <td>0 127.888889\n",
"1 126.962963\n",
"2 133...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>207</th>\n",
" <td>0 122.0\n",
"1 130.0\n",
"2 130.0\n",
"3 ...</td>\n",
" <td>0 97.5\n",
"1 92.0\n",
"2 93.0\n",
"3 ...</td>\n",
" <td>0 85.000000\n",
"1 80.500000\n",
"2 86...</td>\n",
" <td>0 34.0\n",
"1 33.0\n",
"2 63.0\n",
"3 ...</td>\n",
" <td>0 83.50\n",
"1 85.00\n",
"2 94.04\n",
"3 ...</td>\n",
" <td>0 117.5\n",
"1 113.5\n",
"2 122.5\n",
"3 ...</td>\n",
" <td>0 157.818182\n",
"1 144.714286\n",
"2 122...</td>\n",
" <td>0 104.5\n",
"1 93.0\n",
"2 113.5\n",
"3 ...</td>\n",
" <td>0 116.5\n",
"1 106.5\n",
"2 128.5\n",
"3 ...</td>\n",
" <td>0 147.0\n",
"1 145.0\n",
"2 149.0\n",
"3 ...</td>\n",
" <td>0 153.781022\n",
"1 141.024793\n",
"2 22...</td>\n",
" <td>0 106.0\n",
"1 101.5\n",
"2 113.5\n",
"3 ...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Lead1 \\\n",
"309 0 138.0\n",
"1 140.5\n",
"2 143.5\n",
"3 ... \n",
"1108 0 124.5\n",
"1 115.0\n",
"2 116.5\n",
"3 ... \n",
"647 0 65.000000\n",
"1 56.000000\n",
"2 58.85... \n",
"863 0 157.666667\n",
"1 157.666667\n",
"2 149... \n",
"207 0 122.0\n",
"1 130.0\n",
"2 130.0\n",
"3 ... \n",
"\n",
" Lead2 \\\n",
"309 0 100.0\n",
"1 89.5\n",
"2 88.5\n",
"3 ... \n",
"1108 0 101.0\n",
"1 101.5\n",
"2 102.5\n",
"3 ... \n",
"647 0 80.0\n",
"1 80.0\n",
"2 80.0\n",
"3 81.... \n",
"863 0 105.0\n",
"1 109.5\n",
"2 102.5\n",
"3 ... \n",
"207 0 97.5\n",
"1 92.0\n",
"2 93.0\n",
"3 ... \n",
"\n",
" Lead3 \\\n",
"309 0 96.5\n",
"1 96.0\n",
"2 101.0\n",
"3 ... \n",
"1108 0 107.0\n",
"1 107.0\n",
"2 109.0\n",
"3 ... \n",
"647 0 45.000000\n",
"1 44.500000\n",
"2 46.00... \n",
"863 0 104.0\n",
"1 112.5\n",
"2 104.5\n",
"3 ... \n",
"207 0 85.000000\n",
"1 80.500000\n",
"2 86... \n",
"\n",
" Lead4 \\\n",
"309 0 40.0\n",
"1 33.0\n",
"2 66.5\n",
"3 ... \n",
"1108 0 25.5\n",
"1 22.5\n",
"2 40.5\n",
"3 ... \n",
"647 0 40.500000\n",
"1 51.914286\n",
"2 45.92... \n",
"863 0 52.0\n",
"1 76.0\n",
"2 58.0\n",
"3 ... \n",
"207 0 34.0\n",
"1 33.0\n",
"2 63.0\n",
"3 ... \n",
"\n",
" Lead5 \\\n",
"309 0 108.50\n",
"1 98.00\n",
"2 113.00\n",
"3 ... \n",
"1108 0 106.5\n",
"1 112.5\n",
"2 117.5\n",
"3 ... \n",
"647 0 77.000000\n",
"1 78.555556\n",
"2 78... \n",
"863 0 124.5\n",
"1 120.5\n",
"2 128.5\n",
"3 ... \n",
"207 0 83.50\n",
"1 85.00\n",
"2 94.04\n",
"3 ... \n",
"\n",
" Lead6 \\\n",
"309 0 156.0\n",
"1 155.0\n",
"2 156.5\n",
"3 ... \n",
"1108 0 135.0\n",
"1 145.0\n",
"2 138.5\n",
"3 ... \n",
"647 0 45.500000\n",
"1 50.200000\n",
"2 46.00... \n",
"863 0 118.333333\n",
"1 125.500000\n",
"2 128... \n",
"207 0 117.5\n",
"1 113.5\n",
"2 122.5\n",
"3 ... \n",
"\n",
" Lead7 \\\n",
"309 0 125.535714\n",
"1 147.666667\n",
"2 139... \n",
"1108 0 145.148148\n",
"1 6.000000\n",
"2 6... \n",
"647 0 78.000000\n",
"1 82.000000\n",
"2 76... \n",
"863 0 113.5\n",
"1 120.0\n",
"2 151.0\n",
"3 ... \n",
"207 0 157.818182\n",
"1 144.714286\n",
"2 122... \n",
"\n",
" Lead8 \\\n",
"309 0 133.0\n",
"1 135.5\n",
"2 131.5\n",
"3 ... \n",
"1108 0 123.5\n",
"1 111.0\n",
"2 114.0\n",
"3 ... \n",
"647 0 54.636364\n",
"1 58.500000\n",
"2 62.12... \n",
"863 0 92.5\n",
"1 94.0\n",
"2 109.5\n",
"3 ... \n",
"207 0 104.5\n",
"1 93.0\n",
"2 113.5\n",
"3 ... \n",
"\n",
" Lead9 \\\n",
"309 0 107.5\n",
"1 97.5\n",
"2 123.0\n",
"3 ... \n",
"1108 0 165.428571\n",
"1 165.875000\n",
"2 154... \n",
"647 0 133.500000\n",
"1 133.500000\n",
"2 133... \n",
"863 0 120.0\n",
"1 120.0\n",
"2 126.5\n",
"3 ... \n",
"207 0 116.5\n",
"1 106.5\n",
"2 128.5\n",
"3 ... \n",
"\n",
" Lead10 \\\n",
"309 0 140.5\n",
"1 139.5\n",
"2 146.0\n",
"3 ... \n",
"1108 0 130.0\n",
"1 132.0\n",
"2 133.0\n",
"3 ... \n",
"647 0 73.000000\n",
"1 75.000000\n",
"2 75... \n",
"863 0 150.0\n",
"1 153.5\n",
"2 145.5\n",
"3 ... \n",
"207 0 147.0\n",
"1 145.0\n",
"2 149.0\n",
"3 ... \n",
"\n",
" Lead11 \\\n",
"309 0 153.0\n",
"1 150.5\n",
"2 162.5\n",
"3 ... \n",
"1108 0 89.5\n",
"1 92.5\n",
"2 102.5\n",
"3 ... \n",
"647 0 68.333333\n",
"1 57.500000\n",
"2 59.09... \n",
"863 0 144.0\n",
"1 137.5\n",
"2 145.5\n",
"3 ... \n",
"207 0 153.781022\n",
"1 141.024793\n",
"2 22... \n",
"\n",
" Lead12 \n",
"309 0 101.0\n",
"1 100.5\n",
"2 110.0\n",
"3 ... \n",
"1108 0 135.0\n",
"1 128.5\n",
"2 125.0\n",
"3 ... \n",
"647 0 74.631579\n",
"1 76.466667\n",
"2 79... \n",
"863 0 127.888889\n",
"1 126.962963\n",
"2 133... \n",
"207 0 106.0\n",
"1 101.5\n",
"2 113.5\n",
"3 ... "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.head()"
]
},
{
"cell_type": "markdown",
"id": "0f5b6a08",
"metadata": {},
"source": [
"#### Column concatenator"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "d52417bb",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"training time: 9 sec\n"
]
}
],
"source": [
"pipItems = [\n",
" (\"concatenate\", ColumnConcatenator()),\n",
" (\"classify\", TimeSeriesForestClassifier(n_estimators=100,n_jobs=-1))]\n",
"concClf = Pipeline(pipItems)\n",
"t = time.time()\n",
"concClf.fit(X_train, y_train)\n",
"print('training time: {} sec'.format(round(time.time()-t)))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "9727295e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAARAAAAD2CAYAAAAeYNg+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAoWUlEQVR4nO3dd3xUVdrA8d8zKXQpgpQEBQUV1AUVEUV3aSK4FCvCa++4oNixrezu+7LrWhfXsouCYkFBUSmCgigiitKRLlVICCCggNKSmef9Y27iBFJuhpm5d5Ln6+d+MnMyc8/jJHk459xzzxFVxRhjohHwOgBjTPKyBGKMiZolEGNM1CyBGGOiZgnEGBM1SyDGmKhZAjGmnBKRxiLyuYisEJFlIjLIKa8jItNEZLXztXbEex4SkTUiskpELiy1DpsHYkz5JCINgYaqukBEagDzgYuB64Gdqvq4iDwI1FbVwSLSEngbaAs0Aj4FTlTVYHF1WAvEmHJKVXNUdYHzeA+wAsgAegOjnJeNIpxUcMrfUdUDqroeWEM4mRQrNQ5xG2OilLt9nesuQVrd48Xta0WkCXA68C1QX1VzIJxkROQY52UZwDcRb8tyyoplCcQYPwkV21s4jIjcCtwaUTRcVYcX8brqwDjgLlXdLVJs3inqGyUmNEsgxviJhty/NJwsDksYkUQkjXDyeEtV33eKt4pIQ6f10RDY5pRnAY0j3p4JbC7p/DYGYoyfhELuj1JIuKkxAlihqs9EfGsCcJ3z+DpgfER5XxGpJCJNgebAnJLqsBaIMT6iwbxYnq49cA2wREQWOWUPA48DY0XkJmAjcAWAqi4TkbHAciAPGFDSFRgox5dxRaQbMAxIAV5R1cc9jmck0APYpqqnehxLY+B1oAEQItx3HuZhPJWBmUAlwv+ovaeqQ7yKx4kpBZgHZKtqj0TVe3DTYtd/kOmNW7keRI2XctmFcX74LwDdgZZAP+cat5deA7p5HEO+POBeVW0BtAMGePz5HAA6qWoroDXQTUTaeRgPwCDClz0TKxR0f/hAuUwghK9dr1HVdap6EHiH8DVuz6jqTGCnlzHkK2F+gFfxqKr+4jxNcw7PmsYikgn8EXgl4ZVryP3hA+U1gWQAmyKel3o9u6I6ZH6Al3GkOP30bcA0VfUynn8BDxDu3iVWDAdRE6G8JpAyX8+uiA6dH+BlLKoaVNXWhC8dthURT8aJRCR/nGq+F/WrhlwfflBeE0iZr2dXNMXMD/Ccqv4MzMC78aL2QC8R2UC469tJRN5MWO3WAvGFuUBzEWkqIulAX8LXuA0lzg/wKp56IlLLeVwF6AKs9CIWVX1IVTNVtQnh35vPVPXqhAUQzHV/+EC5TCCqmgcMBD4hPEA4VlWXeRmTiLwNzAZOEpEs5xq8V/LnB3QSkUXOcZGH8TQEPheR7wgn/2mqOsnDeLyTZIOo5XYeiDHJ6MCy6a7/ICud0tnzeSA2E9UYP/FJy8ItSyDG+IlPBkfdsgRijI+UcuuJ71gCMcZPrAtjjIlabO/GjbtyeRk3krNqk2/4KR4/xQIWD2A30/mQr34p8Vc8fooFLJ6kmwdiXRhj/MSuwsTGD2d0ickMt783PvmIz3X2uuxYhAJAjSoNaFCrxRHFs31vbO57k5SapKZnHPHnnBKITUM2JbUWlSo3PuJ4gjH6I4zV55N3MNv9hC+ftCzc8m0CiZX/qeuvu/irptfyOoQCgUA1r0MoJCWlutchFOLJ52MtEGNM1CyBGGOipTG8y7aodXhFZAxwkvOSWsDPqtraWVhqBbDK+d43qtq/tDosgRjjJ7EdA3kNeJ7wAtrh06temf9YRJ4GdkW8fq2zqJNrlkCM8ZMYdmFUdabTsjiMsyZMH6DTkdRREeaBGJM8yjAPRERuFZF5EUdZ5q2cD2xV1dURZU1FZKGIfCEi57s5ibVAjPGTMrRA3GxtWYJ+wNsRz3OAY1V1h4icCXwoIqeUtlauJRBj/CQB80BEJBW4FDizoFrVA4T350FV54vIWuBEwptrFcsSiDF+kpeQm+m6ACtVNSu/QETqATtVNSgixxPeF3ddaSeyMRBj/CSG98KUsA5vXwp3XwB+D3wnIouB94D+qlrqRmjWAjHGT2J7FaZfMeXXF1E2jvA2H2ViCcQYP0mye2GSvgtz9JD7yPz0XRqOfbmgrGqX39Pw3Vc4dt5U0luceNh7UhocQ+NZEznqmiviGtuzz/8fS1fPYsbXv21J89jf7uPLOR/x2VcfMvLNf3NUzRpxjaE4F3btwLKlM1m5fBYP3D/AkxjyVapUiVlfTmTunE9YuOBT/vznezyNx9PPxjaWSqxfJn7CtoEPFSo7uHYDP973Fw4sWFLke2rfezv7vpoT99jGjP6QfpcXvjT/xedf0+GcXnRqfzHr1mzgzrsTv+REIBDguWFD6dHzak5r1ZErr7yYFi2aJzyOfAcOHODCbldyVtsLOattN7pe0IG2bU/3JBbPP5skWw8k6RPIgQVLCO7aU6gsb/1G8n7IKvL1VTqcS152Drnrfoh7bN98PY+ff/q5UNkXn39NMBheTWr+vMU0bFQ/7nEcqu1Zp7N27QbWr99Ibm4uY8eOp1fPCxMeR6Rff90LQFpaKmlpqXi1X5Hnn421QMJE5GQRGSwiz4nIMOdxi3jV5yqmypWpeX1fdv339dJfnAD9rr6Uzz79MuH1NspowKas37YKzsrOoVGjBgmPI1IgEGDOtx+TtWkR06d/ydy5izyJw/PPJhh0f/hAXBKIiAwmvDGxAHMIb1cowNsi8mA86nSjZv9r2f3WOHTffq9CKDDo3tvIywsybuzEhNcdvg2iMK93KAyFQrQ9uxvHn9CWNme1pmXLk0p/Uxx4/tkkWQskXldhbgJOUdVC9yaLyDPAMuDxot7kzOW/FcIricV6MaBKp7WgWpffU3vQLQRqVEdDIfTgQfaMGR/TekrTp19vLriwA1f0viGh9ebLzsqhcWajgueZGQ3JydnqSSyH2rVrNzNnzubCrh1YvnxV6W+IMc8/G58kBrfilUBCQCPg0IGGhs73ihQ5tz9WSxpG2nrT3QWPa952Lbp3X8KTR8fO5zFw0M1c8sdr2edRS2juvEU0a9aUJk0ak529hT59enPNtd5dialbtw65uXns2rWbypUr06nT+Tz91IuexOL5Z+OTwVG34pVA7gKmi8hqYJNTdizQDBgYy4rq/v1hKp3ZipRaNcmY8ja7/jOK4O491HlgICm1a3LMc0M5+P1atg1IfM/ppVee4tzz2lLn6FosWPY5Tz7+PHfefQvp6emM+XAEAPPnLmbwPX9NaFzBYJBBdz3K5I9GkxII8NqoMSxf/n1CY4jUoMExjHjlWVJSUggEArw3biKTp0z3JBbPP5ska4FIvPp3IhIA2gIZhMc/soC56nLvvni0QKIVy0WVYyFWiyrHSqwWVY6VWC2qHCtlWVR536gHXf/eV7nucfeLNcdJ3GaiqmoI+CZe5zemXPJZ8iuNTWU3xk+SbGtLSyDG+IiGfNNzd8USiDF+Yl0YY0zU7DKuMSZq1oUxxkTNujDGmKhZAjHGRM0nd9m65a8phMZUdCF1f5RCREaKyDYRWRpR9hcRyRaRRc5xUcT3HhKRNSKySkRcLYJiLRBj/CTOe+M6nlXVpyILRKQl4dXaTyF8I+ynInJiabeeWAvEGD+JYQtEVWcCpW7N4OgNvKOqB1R1PbCG8L1sJbIEYoyPaCjk+jiCvXEHish3ThentlOWwW93zkP45tdSF+TxbRfmlJVrvQ6hwLZ/eLte6KGOuj/xq5iVJC3gr1+jqqkpXocQvTLMA4lyb9yXgP8F1Pn6NHAj4TvmD6uitJP56ydvTEUX55moqlqwvJqIvAxMcp5mAY0jXpoJbKYU1oUxxk/ygu6PKIhIw4inlwD5V2gmAH1FpJKINCW8N26pe59YC8QYP4nhVHZnb9wOQF0RyQKGAB1EpDXh7skG4DYAVV0mImOB5UAeMMDN4l+WQIzxkxh2YYrZG3dECa8fCgwtSx2WQIzxE7uZzhgTLbV7YYwxUbMWiDEmakl2M50lEGP8xFogxpho2aLKxpjoWQIxxkTNrsIYY6JmLRD/qFmzBi+8+E9atjwRVeX2/g8wZ87CuNWX3uUaUpqehu7dw/63/heAtLN7kHLqebBvDwAHvx5PaMNSpMbRVL52CPpT+N6m4Jb15H42Om6xHerCrh145pm/kRIIMPLVt3niyRcSVndREv2zKsntA27gmuv7gCrLl61iQP/BHDhwMDGVWwLxjyeeHMK0aV9w9VV/Ii0tjapVK8e1vrzls8ldPINKXa8vXL5wOnkLph32ev35R/aPLtPM4ZgIBAI8N2wo3S7qR1ZWDt/MnszESVNZsWJ1wmPJl+ifVXEaNqzPbbdfS7s23di//wAjX3+OSy/vwdtvvZ+Q+jWYXF2Ycns3bo0a1Wl/XltGvTYGgNzcXHbt2hPXOkOb18D+vXGtIxbannU6a9duYP36jeTm5jJ27Hh69fRuzRMvflYlSU1NpXKVyqSkpFC1SmW25GxLXOUxXJEsERKeQETkhkTU06RpY7Zv38l//vskX82exPMvPk7VqlUSUfVhUlt1oPJVj5Le5RqoVLWgXGrWpXK/h6l02T0EGjVLWDyNMhqwKeu3pR6ysnNo1KhBwuo/lJ9+Vjk5W/n3c6+wZMVMVq6dze7de/j8s1kJq19D6vrwAy9aIH8t7huRS7Tl5h3Zv0Cpqam0bn0Kr7zyFu3P6cHeX/dy7323H9E5o5G75Av2v/Yo+98aiv66m/TzLwNA9+5i38iH2f/23zn45Xukd7sR0hPTbBc5fPEpVe9+If3yswKoWesoLvpjF1qf2pEWzc6latWq9Lmyd+ICsBYIOOstFnUsAeoX9z5VHa6qbVS1TVpqjSOKITs7h+zsLcybuwiADz+YQqvWpxzROaOydw+oAkre0lkE6jcJlwfzYP+vAOi2jeiu7QRqHZOQkLKzcmic2ajgeWZGQ3JytpbwjjjH45efFdChY3t+2JDFju07ycvLY+KET2jb7ozEBRAqw+ED8WqB1AeuBXoWceyIU52FbNu6neysHJo3Px6ADh3PZeWKNYmourCqRxU8TGnWmtAOp+tQpTo4LQE5qi5S6xhCu7YnJKS58xbRrFlTmjRpTFpaGn369GbipKkJqbsovvlZAVmbNtOmbWuqVAm3Bv/Q4VxWrUpcLMnWhYnXVZhJQHVVXXToN0RkRpzqPMy99w5hxKvPkp6WzvoNG7n9tvvjWl96t5tIyTwRKlen8o3/IPfbiaRknEigXmNACe3ewcHpbwGQktGctHY9wxOHNETuZ2/BgcQMwAaDQQbd9SiTPxpNSiDAa6PGsHz59wmpuziJ/lkVZ/68xUz48GNmfDWeYF6Q7xYvZ9TIMYkLwCeJwS3xsu9bkupVm/omMFuVvWSVU9O9DqGQtIC/VmX/6Zc1Ra14XvRrr+jg+ve+9rszXJ83XsrtZVxjklIMx0CK2drySRFZ6YxJfiAitZzyJiKyL2LLy/+4CdcSiDE+EuMxkNeAboeUTQNOVdXfAd8DD0V8b62qtnaO/m4qsARijJ/EsAVS1NaWqjpVVfOcp98Q3v8lapZAjPERDbk/YuBGYErE86YislBEvhCR892coFzfC2NM0ilDYnD2wo3cD3e4s92lm/c+Qnj/l7ecohzgWFXdISJnAh+KyCmquruk81gCMcZHytKyiHJvXETkOqAH0Fmdy7CqegA44DyeLyJrgROBeSWdyxKIMT5SMDoRJyLSDRgM/EFV90aU1wN2qmpQRI4nvLXlutLOZwnEGB+J5d7axWxt+RBQCZjm3BP1jXPF5ffA30QkDwgC/VV1Z5EnjmAJxBgfiWUCKcvWlqo6DhhX1josgRjjJ+r55NIyKTGBiEidkr7vpoljjHEvli2QRCitBTIfUECAY4GfnMe1gI1A03gGZ0xFo6Fy1AJR1aYAzrz4Cao62XneHegS//CMqViSrQXi6m5cEZmvqmceUjZPVdvEK7DU9Azf3I3rN7/OG+l1CIVUa3Oj1yH4Wt7BbNfNiqyzO7n+vc/89jPPmytuB1G3i8ijwJuEuzRXk6CFgYypSJKtC+P2Xph+QD3gA+eo55QZY2JI1f3hB65aIM7VlkEiUl1Vf4lzTMZUWOWyBSIi54rIcmC587yViLwY18iMqYA0JK4PP3DbhXkWuBBn3ENVFxOe+mqMiaFy2YUBUNVNh+wnEox9OMZUbKFgci3R4zaBbBKRcwEVkXTgTmBF/MIypmJKtnkgbhNIf2AYkAFkAVOBP8UrKGMqqlB5uhcmwkmqelVkgYi0B76KfUjGVFyaZAnEbYfr3y7LjDFHINmuwpR2N+45wLlAPRG5J+JbRwH+2r3HmHLAL1dX3CqtC5MOVHdeF7nb9W7g8ngFZUxF5ZeWhVul3Y37BfCFiLymqj8kKCZjKqxgKLku47qN9pX8LfAARKS2iHwSn5Bi48KuHVi2dCYrl8/igfsHeB2OJ/E89uJb/OGmh7nknn8UlK1cn8VVDz/NFff9k76Dn2TJ6vC/Cx99OZcr7vtnwdGqzyBWrs9KSJzgr5+Xl7Ek20Qytwmkrqr+nP9EVX8CjolLRDEQCAR4bthQevS8mtNadeTKKy+mRYvmFS6eXh3O5qVHbi9U9uyb4+l/RXfefWowA668iGffHA/AH88/i3efGsy7Tw1m6B3X0KheHU5uekSblrnmp5+X17GEVFwfpSlmb9w6IjJNRFY7X2tHfO8hEVkjIqtExNWO8m4TSEhEjo2o6DjCt/WXFPzJItJZRKofUn7oXp0x1/as01m7dgPr128kNzeXsWPH06unq8+jXMXTpmUzalavWqhMRPh1734A9uzdT73aNQ9735Sv5tO9/ZmHlceLn35eXseiKq4PF17j8L1xHwSmq2pzYLrzHBFpCfQFTnHe86KIlHqhxG0CeQSYJSJviMgbwEwKb8pbiIjcCYwH7gCWikjviG//3WWdUWuU0YBNWZsLnmdl59CoUYN4V5sU8Txw/aU888Z4Luj/GM+8/iGDrup52Gs++XoB3c87I2Ex+enz8TqWWHZhitobF+gNjHIejwIujih/R1UPqOp6YA3QtrQ63N7O/7GInAG0I7wm6t2qur2Et9wCnKmqv4hIE+A9EWmiqsOc9xcpcqs+SalJIFDNTXhFnaeo/4eozhULfopn7NRZ3H/9JVzQrjWffL2AIS+N5uXHBhZ8/7vVG6icnk7zYxslLCY/fT5ex5KAmaj1VTUHQFVzRCR/KCKD8Gbb+bKcshKV2AIRkZOdr2cQXlR5M5ANHOuUFSclf90QVd1AeHOb7iLyDCUkEFUdrqptVLVNtMkDIDsrh8aZv/0BZGY0JCdna9TnO1J+imfCjDl0ObsVAF3POZ2lawpfXPv4qwV0Py9x3Rfw1+fjdSxl6cKIyK0iMi/iuLX0GopV1N9lqZmztC7Mvc7Xp4s4nirhfVtEpHVBFOFk0gOoC5xWWlBHau68RTRr1pQmTRqTlpZGnz69mThparyrTYp46tWpybzlawD4dun3HNugXsH3QqEQU2cvpHv7xHVfwF+fj9exBFVcH5H/4DqHm31yt4pIQwDn6zanPAtoHPG6TMINhhKVNg/kFudrRxeBRbqW8M7fkefKA64Vkf+W8VxlFgwGGXTXo0z+aDQpgQCvjRrD8uXfx7ta38XzwL9eY96yNfy85xe63PZn/tTnIobc1pd/vjqOYChEeloaQ27rW/D6+SvWUv/oWmTWrxv32CL56efldSwJ6MJMAK4DHne+jo8oH+30EhoR3ht3TmknK3FVdhG5tKQ3q+r77mIuO1uVvXi2KntyKcuq7F81uNz17337Le+VeN7IvXGBrYT3xv0QGEt4SGIjcEX+BnEi8ghwI+F//O9S1SmlxVDaIGr+EP0xhO+J+cx53hGYAcQtgRhTEcVyOZBi9sYF6FzM64cCQ8tSR2ldmBsARGQS0DJ/9NbpO71QloqMMaXT4q8x+JLb9UCa5CcPx1bgxDjEY0yFFkqyjrvbBDLDufflbcKXdvoCn8ctKmMqqFB5bIGo6kARuYTfVmIfrqofxC8sYyqmYHlMII4FwB5V/VREqopIDVXdE6/AjKmIkm0MxO3GUrcA7wH5czgyCF8OMsbEUKgMhx+4vZluANCe8EpkqOpqfHw7vzHJKtkSiNsuzAFVPZh/o5GIpOJinrwxpmySrQvjNoF8ISIPA1VE5ALCe8JMjF9YxlRMSbYkqusuzGDgR2AJcBswGXg0XkEZU1GFENeHH5TaAhGRAPCdqp4KvBz/kIypuJJtw+lSE4iqhkRksYgcq6obExGUMRVVqIgFjfzM7RhIQ2CZiMwBfs0vVNVecYkKSEspyxSV+EoL+GsPLb/d/bpv85deh1BI1Ubnex1C1JLtyoTbv9K/xjUKYwzgn8uzbpW2tWVloD/QjPAA6ghnYSBjTBwk21WY0logo4Bc4EugO9ASGBTvoIypqPxydcWt0hJIS1U9DUBERuBiiTNjTPSCyZU/Sk0gufkPVDWvqCXvjTGxU67GQIBWIrLbeSyEZ6Ludh6rqh4V1+iMqWDK1VUYVfXX9UtjyrlYDqKKyEnAmIii44HHgFqEN3/70Sl/WFUnR1OHfyZbGGNivajyKqA1gLPPbTbwAXAD8KyqlrS3kyuWQIzxkTiOgXQG1qrqD7Ecy3R7M50xJgFU3B9l1Jfwmsb5BorIdyIyUkRqRxuvJRBjfCSvDIfbvXFFJB3oBbzrFL0EnEC4e5NDeKvaqFgXxhgfKctVGGcvXDf74XYHFqjqVud9BbuFi8jLwKQyBRmhXLdAAoEAs2dPZtw4b7eCbNa8KbNmTyo4snIW86cBN3ga04VdO7Bs6UxWLp/FA/cPiHt9OVt/5IaBg+n5P7fS+6rbeGPshwDs2r2Hmwc9zEVX3sTNgx5m1+7wOt0/79rNDQMHc1aXSxj69Itxjy/Sy8OfJjtrMQsXTk9ovRC+CuP2KIN+RHRf8jfXdlwCLI023nKdQAYOvJFVq9Z4HQZrVq/nvHN6cN45Pfh9+17s27efiRM+8SyeQCDAc8OG0qPn1ZzWqiNXXnkxLVo0j2udqSkp3H/HLUwcPZzRw5/lnfcnsXb9D7zyxljatWnN5DEjaNemNSPeHAtAeno6d9xyDfcNuDmucRVl1Otj6dHjqoTXC7FfE1VEqgIXUHgb2idEZImIfEd4m9q7o4233CaQjIwGdOvWiVdffcfrUArp0PFc1q/7gU2bNnsWQ9uzTmft2g2sX7+R3Nxcxo4dT6+eF8a1znp169DypGYAVKtWleOPa8zWH3fw+Zez6d29CwC9u3fhs5mzAahapTJntDqVSunpcY2rKLNmfcvOn35OeL0Q+wSiqntV9WhV3RVRdo2qnqaqv1PVXofsOlkmcUsgItJWRM5yHrcUkXtE5KJ41XeoJ58cwiOP/J1QyF+Tgy+7vCfvvevtcrKNMhqwKeu3BJaVnUOjRg0SVn92zlZWrF7L7045iR0//Uy9unWAcJLZ+fOuUt5dvmkZDj+ISwIRkSHAc8BLIvIP4HmgOvCgiDwSjzojde/eiW3bdrBwYdRdu7hIS0vjoos688EHUzyNo6h5AKqJ+ZXcu3cfdz/yfwy+8zaqV6uWkDqTSZzGQOImXldhLid8iagSsAXIVNXdIvIk8C0wtKg3OZehbgVITa1Damr1qCo/55w29OjRhW7dOlCpUiWOOqoGI0f+ixtvvCuq88XKBV3/wOLFy/hx23ZP48jOyqFxZqOC55kZDcnJ2VrCO2IjNy+Pux75P/7YtSMXdGgPwNG1a/Hj9p3Uq1uHH7fvpE6tmnGPw8+SbU3UeHVh8lQ1qKp7Cc9+y9+Qah8ldN9UdbiqtlHVNtEmD4DHHnuCZs3acfLJ53HttXcwY8bXnicPgCuu6Mm7HndfAObOW0SzZk1p0qQxaWlp9OnTm4mTpsa1TlXlsX/8i+OPa8x1fS8tKO9wXjvGT/kUgPFTPqXj+efENQ6/C6GuDz+IVwI56Iz+ApyZXygiNUm+O5ZjokqVynTsdB4Tx3t39SVfMBhk0F2PMvmj0Sz9bgbvvTeR5cu/j2udC79bxsSPp/PtgsVcdt0ALrtuADO/nsPN1/Rh9twFXHTlTcyeu4Cbr+lT8J6ul13HE/8ezodTptH54qtZu/6HuMaY7403XuDLmRM46cQTWL9uHjdc3zch9ULy7Uwn8ej7ikglVT1QRHldoKGqLintHFWqHOePFIv/FlXem3vYR+spW1S5ZLkHs12PWPztuKtc/94/9sNbno+ExGUMpKjk4ZRvB7wdADDGx/zSsnDLprIb4yN+ubriliUQY3zEL4OjblkCMcZHku0yriUQY3zEWiDGmKglV/qwBGKMr9hVGGNM1KwLY4yJWnKlD0sgxviKdWGMMVELJlkbxBKIMT5iYyDGmKglV/qwBOJKUJOtZ5pY1TJ+73UIhewefbvXIUQt1i0QEdkA7CE8yTVPVduISB3Ce+Y2ATYAfVT1p2jOX24XVTYmGcVpPZCOqtpaVds4zx8Epqtqc2C68zwqlkCM8REtw39HoDcwynk8Crg42hNZAjHGR4Ko68Pl1pYKTBWR+RHfr5+/lYPz9Zho47UxEGN8pCxdE5dbW7ZX1c0icgwwTURWRh/d4SyBGOMjoRgvMaqqm52v20TkA6AtsFVEGqpqjrPN5bZoz29dGGN8JJYbS4lINRGpkf8Y6Ep4H9wJwHXOy64Dxkcbr7VAjPGRGF/GrQ984GwklgqMVtWPRWQuMFZEbgI2AldEW4ElEGN85AivrhQ+l+o6oFUR5TuAzrGowxKIMT6SbFMWLYEY4yPBJEshlkCM8ZHkSh+WQIzxlXjsFBlPlkCM8RG7nd9HAoEAX301ic2bt3DZZTd6GsvyFbP4Zc8vBEMh8vLyOP+8Xp7Gc2HXDjzzzN9ICQQY+erbPPHkC57FkpnZkJEjhtGgQT1CoRCvjBjN88+PiGudQ8Z9zcxVWdSpVplxg377Wbw9eyXvfLOKlIBw/kkZ3N3tTHKDIf76wWxWbt5JMBSix+nHc9MfTotLXNaF8ZGBA29k1ao11KhR3etQAOjevR87dkR113RMBQIBnhs2lG4X9SMrK4dvZk9m4qSprFix2pN48vKCPDD4byxatJTq1avx7TdTmP7pTFasjF88vc44gb7tTuLR974qKJu7bgszVmzi3Tt6kJ6aws5f9gEwbekP5OYFee/Onuw7mMelwybQ7XdNyagd+9+rWF7GTYSEzUQVkdcTVRdARkYDunXrxKuvvpPIapNC27NOZ+3aDaxfv5Hc3FzGjh1Pr54XehbPli3bWLRoKQC//PIrK1euplFGg7jWeWbT+hxVtVKhsrHffs8Nvz+V9NQUAOpUrwKAAPsO5pEXDHEgL0haSoDqldLiElcIdX34QVxaICIy4dAioKOI1AJQ1bi33598cgiPPPJ3qlf3R+tDVZkw8Q1UlREjRvPqyLc9i6VRRgM2ZW0ueJ6VnUPbs073LJ5Ixx2XSatWpzJnzsKE1/3D9t0s2LCN56ctpFJqCnd3P5NTM+vS5dTjmLFiExc8/h77cvO476I21Dwk+cRK0AZRAcgElgOvEJ62L0Ab4Ok41VdI9+6d2LZtBwsXLuX889slospSde58GVtytlGv3tFMnPgm369ay1dfzfEkFmdqcyF+GP2vVq0qY94Zzn33/YU9e35JeP3BUIg9+w/wRv/uLM3awQPvzOSjey9hadZ2AgFh6oOXs2ffAW54eSrtmjUks06NmMdgXZiwNsB84BFgl6rOAPap6heq+kVxb4pc3yAvL/pfoHPOaUOPHl1YuXIWr7/+bzp0OJeRI/8V9fliYUtO+IbHH3/cwYSJn9CmzWEzjBMmOyuHxpmNCp5nZjQkJ2erZ/EApKamMmbMcN5+5wM+HD/Fkxjq16xGp5bHIiKc1rguARF+2nuAKYvX0755BmkpAepUr0LrY+uxLHtHXGJIti5MXBKIqoZU9VngBuAREXkeF60dVR2uqm1UtU1qavRdj8cee4Jmzdpx8snnce21dzBjxtfceONdUZ/vSFWtWoXq1asVPO7c+XyWL//es3jmzltEs2ZNadKkMWlpafTp05uJk6Z6Fg/A8P8+xcqVaxg27GXPYujYojFz120Bwt2Z3GCI2lUr0bBWNeas24Kqsu9gLks2badpvZpxiUFVXR9+ENerMKqaBVwhIn8EdsezLj875pi6vPNOeN2XlNQUxo4dz7RpxTbE4i4YDDLorkeZ/NFoUgIBXhs1xtOEdu65Z3H11ZezZMkK5s75BIA/P/ZPPv74s7jV+eCYL5m3bis/791P13+O4/bOv+PiM09gyPuzuWzYBNJSUvjfy85FRLjy7JN47P2vuey5iaDQ68wTOLFB7bjE5ZeWhVvil0x2qCpVjvNNYIEixgy8dCAv1+sQCvHb57Prrf5eh1BIlcsfdf0Bdcjs4vr3fkbWp55/8OV6HogxySbWK5LFmyUQY3zEtrY0xkQt2cZALIEY4yN+HZMsjiUQY3wk2Vogtiq7MT4Sy53pRKSxiHwuIitEZJmIDHLK/yIi2SKyyDkuijZea4EY4yMx7sLkAfeq6gJne4f5IjLN+d6zqvrUkVZgCcQYH4llF8bZtjJ/C8s9IrICyIhZBVgXxhhfCWrI9eFyb1wARKQJcDrwrVM0UES+E5GRIhL1tFpLIMb4SFnGQCLvHXOOIvfJFZHqwDjgLlXdDbwEnAC0JtxCifoueevCGOMjsZ6JKiJphJPHW6r6PoCqbo34/svApGjPby0QY3wkxldhBBgBrFDVZyLKG0a87BLC++VGxVogxvhIjFsg7YFrgCUissgpexjoJyKtCS/2tQG4LdoKfJtA9u37ISZ3GorIrcX1Db3gp3j8FAtYPBDzvXFnEV4N8FCTY1VHRejCFDsy7RE/xeOnWMDiIaTq+vAD37ZAjKmIgppcO8NYAjHGR5JtUeWKkEB806d2+CkeP8UCFg+aZC0Q3y5paMpGRC4B3gdaqOrKEl53FzBcVfdGWc/1QBtVHRjN+03Jjjv6d67/IH/Y8Z3nSxpWhEHUiqIfMAvoW8rr7gKqxj0aE5VkW5XdEkg54ExVbg/chJNARCRFRJ4SkSXOPQ93iMidQCPgcxH53HndLxHnuVxEXnMe9xSRb0VkoYh8KiL1E/3/VREl274wFWEMpCK4GPhYVb8XkZ0icgZwNtAUOF1V80SkjqruFJF7gI6qur2Uc84C2qmqisjNwAPAvfH8nzDh3fGSiSWQ8qEf8C/n8TvO8+OB/6hqHoCq7izjOTOBMc6053RgfWxCNSWxqzAmoUTkaKATcKqIKJBCeIryfOdraSJfUzni8b+BZ1R1goh0AP4Si3hNyfwytuGWjYEkv8uB11X1OFVtoqqNCbcWFgD9RSQVQETqOK/fA0TuCr1VRFqISIDwjVX5agLZzuPr4vp/YAok2xiIJZDk1w/44JCycYQHSzcC34nIYuB/nO8NB6bkD6ICDxK+nfsznNWrHH8B3hWRL4HSxktMjCTbVRibB2KMj9Sp0dz1H+TOPas9nwdiYyDG+Eiy/YNuCcQYH7Gb6YwxUfPLbfpuWQIxxkdsHogxJmrJ1gKxy7jG+EisL+OKSDcRWSUia0TkwVjHawnEGB+J8arsKcALQHegJeHFlFvGMl5LIMb4SIxbIG2BNaq6TlUPEr5Pqncs47UxEGN8JMZjIBnApojnWYTv0o4ZSyDG+EjewWzXs0udvXAjV44ffsg2FEWdK6YZyhKIMUnKSRYlrduaBTSOeJ4JbI5lDDYGYkz5NRdoLiJNRSSd8Gp1E2JZgbVAjCmnnJXoBgKfEF4nZqSqLotlHXY3rjEmataFMcZEzRKIMSZqlkCMMVGzBGKMiZolEGNM1CyBGGOiZgnEGBM1SyDGmKj9P3J3XjHJhNr9AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Column-Concatenator classifier score: 0.9254237288135593\n"
]
}
],
"source": [
"y_train_pred = cross_val_predict(concClf, X_train, y_train, cv=10)\n",
"confmat = metrics.confusion_matrix(y_train,y_train_pred)\n",
"plt.matshow(confmat)\n",
"sn.heatmap(confmat,annot=True, annot_kws={\"size\":10}, fmt='d')\n",
"plt.xlabel(\"Actual\")\n",
"plt.ylabel(\"Predicted\")\n",
"plt.show()\n",
"print('Column-Concatenator classifier score: {}'.format(concClf.score(X_test, y_test)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3a3ffb6e",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "1e8277bd",
"metadata": {},
"source": [
"#### Column-wise ensembling"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "9d13cbe1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"training time: 1417 sec\n"
]
}
],
"source": [
"ensClf = ColumnEnsembleClassifier(\n",
" estimators=[\n",
" (\"TSF0\", TimeSeriesForestClassifier(n_estimators=100), [0]),\n",
" (\"BOSSEnsemble\", BOSSEnsemble(max_ensemble_size=5,n_jobs=-1), [6])])\n",
"t = time.time()\n",
"ensClf.fit(X_train, y_train)\n",
"print('training time: {} sec'.format(round(time.time()-t)))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "8fef98ba",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Column-wise ensembling classifier score: 0.9084745762711864\n"
]
}
],
"source": [
"y_train_pred = cross_val_predict(ensClf, X_train, y_train, cv=3)\n",
"confmat = metrics.confusion_matrix(y_train,y_train_pred)\n",
"plt.matshow(confmat)\n",
"sn.heatmap(confmat,annot=True, annot_kws={\"size\":10}, fmt='d')\n",
"plt.xlabel(\"Actual\")\n",
"plt.ylabel(\"Predicted\")\n",
"plt.show()\n",
"print('Column-wise ensembling classifier score: {}'.format(ensClf.score(X_test, y_test)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b8126671",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "8ade7946",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}