{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "# Feature based time series classification in aeon\n", "\n", "Feature based classifiers are a popular recent theme in TSC. The feature\n", "based classifiers we provide are simply pipelines of transform and classifier. They\n", "extract descriptive statistics as features from time series to be used in\n", "classifiers. Several tool-kits exist for extracting features.\n", "\n", "\n", "\"Pipeline\n", "\n", "\n", "## Imports and Load Data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(67, 1, 24) (67,) (50, 1, 24) (50,)\n", "(20, 6, 100) (20,) (20, 6, 100) (20,)\n" ] }, { "data": { "text/plain": [ "[('Catch22Classifier',\n", " aeon.classification.feature_based._catch22.Catch22Classifier),\n", " ('FreshPRINCEClassifier',\n", " aeon.classification.feature_based._fresh_prince.FreshPRINCEClassifier),\n", " ('SignatureClassifier',\n", " aeon.classification.feature_based._signature_classifier.SignatureClassifier),\n", " ('SummaryClassifier',\n", " aeon.classification.feature_based._summary.SummaryClassifier),\n", " ('TDMVDCClassifier',\n", " aeon.classification.feature_based._tdmvdc.TDMVDCClassifier),\n", " ('TSFreshClassifier',\n", " aeon.classification.feature_based._tsfresh.TSFreshClassifier)]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import warnings\n", "\n", "from sklearn import metrics\n", "\n", "from aeon.classification.feature_based import Catch22Classifier, FreshPRINCEClassifier\n", "from aeon.datasets import load_basic_motions, load_italy_power_demand\n", "from aeon.transformations.collection.feature_based import Catch22\n", "from aeon.utils.discovery import all_estimators\n", "\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "X_train, y_train = load_italy_power_demand(split=\"train\")\n", "X_test, y_test = load_italy_power_demand(split=\"test\")\n", "X_test = X_test[:50]\n", "y_test = y_test[:50]\n", "\n", "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)\n", "\n", "X_train_mv, y_train_mv = load_basic_motions(split=\"train\")\n", "X_test_mv, y_test_mv = load_basic_motions(split=\"test\")\n", "\n", "X_train_mv = X_train_mv[:20]\n", "y_train_mv = y_train_mv[:20]\n", "X_test_mv = X_test_mv[:20]\n", "y_test_mv = y_test_mv[:20]\n", "\n", "print(X_train_mv.shape, y_train_mv.shape, X_test_mv.shape, y_test_mv.shape)\n", "all_estimators(\"classifier\", tag_filter={\"algorithm_type\": \"feature\"})" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "### Catch22 and the Catch22Classifier\n", "\n", "The highly comparative time-series analysis (hctsa) [1] toolbox can create over 7700\n", "features for exploratory time series analysis. The canonical time series\n", "characteristics (catch22) [2] are 22 hctsa features determined to be the most\n", "discriminatory of the full set. The catch22 were chosen by an evaluation on the UCR\n", "datasets. The hctsa features were initially pruned, removing those which are\n", "sensitive to mean and variance and any which could not be calculated on over 80\\% of\n", "the UCR datasets. A feature evaluation was then performed based on predictive\n", "performance. Any features which performed below a threshold were removed. For the\n", "remaining features, a hierarchical clustering was performed on the correlation matrix\n", " to remove redundancy. From each of the 22 clusters formed, a single feature was\n", " selected, taking into account balanced accuracy, computational efficiency and\n", " interpretability. The catch22 features cover a wide range of concepts such as basic\n", " statistics of data series values, linear correlations, and entropy. Reported results\n", " for catch22 build a decision tree classifier after applying the transform to each\n", " data series.\n", "\n", "The ``Catch22Classifier`` is simply a convenient wrapper for a pipeline of a Catch22\n", "transformation and a sklearn random forest classifier. It can be configured to use\n", "any sklearn classifier in the constructor." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(67, 22)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c22 = Catch22()\n", "x_trans = c22.fit_transform(X_train)\n", "x_trans.shape" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.84" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c22cls = Catch22Classifier()\n", "c22cls.fit(X_train, y_train)\n", "c22_preds = c22cls.predict(X_test)\n", "metrics.accuracy_score(y_test, c22_preds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tracking Differentiator-based Multiview Dilated Characteristics (TDMVDC) Classifier\n", "\n", "Time Series Feature Extraction based on Scalable Hypothesis Tests classifier.\n", "\n", "This classifier simply transforms the input data using the TSFresh [1]_\n", "transformer and builds a provided estimator using the transformed data.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Loading time series set\n", "from aeon.datasets import load_arrow_head\n", "\n", "trainSignalX, trainY = load_arrow_head(\"TRAIN\")\n", "testSignalX, testY = load_arrow_head(\"TEST\")\n", "trainY, testY = trainY.astype(int), testY.astype(int)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from aeon.classification.feature_based import TDMVDCClassifier\n", "\n", "td_mvdc = TDMVDCClassifier(n_jobs=5)\n", "td_mvdc.fit(trainSignalX, trainY)\n", "testPY = td_mvdc.predict(testSignalX)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy : 0.8114285714285714\n" ] } ], "source": [ "import numpy as np\n", "\n", "accV = np.sum(testPY == testY) / len(testY)\n", "print(\"Accuracy :\", accV)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "### TSFresh and the FreshPRINCEClassifier\n", "\n", "Time Series Feature Extraction based on Scalable Hypothesis Tests (TSFresh) is a\n", "collection of just under 800 features extracted from time series. An extensive\n", "comparison of feature based pipelines [3] found that TSFresh followed by a rotation\n", "forest classifier [4] was significantly more accurate than other combinations. This\n", "pipeline is hard coded into an aeon classifier called the ``FreshPRINCEClassifier``." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.84" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fp = FreshPRINCEClassifier()\n", "fp.fit(X_train, y_train)\n", "fp_preds = c22cls.predict(X_test)\n", "metrics.accuracy_score(y_test, fp_preds)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "### Signatures and the SignatureClassifier\n", "\n", "Generalised signatures are a set of feature extraction techniques primarily for\n", "multivariate time series based on rough path theory. We specifically look at the\n", "generalised signature method [5] and the accompanying canonical signature pipeline.\n", "Signatures are collections of ordered cross-moments. The pipeline begins by applying\n", "two augmentations by default. The basepoint\n", "augmentation simply adds a zero at the beginning of the time series, making the\n", "signature sensitive to translations of the time series. The time augmentation adds\n", "the series timestamps as an extra coordinate to guarantee each signature is unique\n", "and obtain information about the parameterisation of the time series. A hierarchical\n", "dyadic window is run over the series, with the signature transform being applied to\n", "each window. The output for each window is then concatenated into a feature vector.\n", "Signatures requires the installation of the soft dependency esig." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Performance on the UCR univariate datasets\n", "\n", "You can find the dictionary based classifiers as follows." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Catch22Classifier', )\n", "('FreshPRINCEClassifier', )\n", "('SignatureClassifier', )\n", "('SummaryClassifier', )\n", "('TDMVDCClassifier', )\n", "('TSFreshClassifier', )\n" ] } ], "source": [ "from aeon.utils.discovery import all_estimators\n", "\n", "est = all_estimators(\"classifier\", tag_filter={\"algorithm_type\": \"feature\"})\n", "for c in est:\n", " print(c)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(112, 4)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from aeon.benchmarking.results_loaders import get_estimator_results_as_array\n", "from aeon.datasets.tsc_datasets import univariate\n", "\n", "names = [t[0].replace(\"Classifier\", \"\") for t in est]\n", "names.remove(\"Summary\")\n", "if \"TDMVDC\" in names:\n", " names.remove(\"TDMVDC\")\n", "results, present_names = get_estimator_results_as_array(\n", " names, univariate, include_missing=False\n", ")\n", "results.shape" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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ueQS07lzZ7NmzZqw6y9atMj06NHDBqjLly83Xbp0sbfVq1fb5Z7n2f//9ddfzUcffWTX0YH+sssuM3/99VfgeXr37m1++ukn89///tesWrXKXH311aZbt252fVm/fr05deqUefnll+22PPPMM+all14yDz74YCa9MwCQOh3X6tSpY1588cWoH6Nj3Zdffmlee+01exx89913TY0aNaI+zsrOnTuT3BREKwi+5pprAuuo0eDaa681t99+ewbuMZBFeEAcnHXWWd6rr74adlm3bt28K6+8Msl9jRs39m677Tb7759++snTV3P16tWB5SdPnvRKlCjhTZw4MXBfoUKFvEmTJiV5nrPPPjvJOqGeeuopr1KlSp7rjh07Zt9j/c3Or5FVubzvWU12+yy0rdOnT09xndmzZ3tFihTx9uzZE3Gd1I6z4XTu3Nm75JJLwi5744037GsCOUnCWoI///xz06dPH1O9enXbha7unDJlypg2bdrYFrs//vjDZEXqctKVsrraY6Er8SeffNJceumlplSpUiZfvnzmrLPOMs2bN7dX/8ePHw/7OF3hP/vss+aKK64w5cqVM/nz57fvV6NGjezzHTp0yGQlJ0+eNFOmTLEtG0qLCGfx4sW2VTdY27Zt7f1+N5+oC8+XO3du+x355ptvAvepi27q1Klm7969tsVXr3vkyBHTqlWriNt34MABc/bZZ6d7PwEgUdT71bBhQ/PUU0/Z84LOo/fee685fPhw1MfZUEpBmzVrlm05zsr8c3BKN50zs3vMoHTA0P3KmzevKVGihI2TJk2aZHtNg3399ddh348zzjjDnH/++ebuu+9OcTsq/t+2vvnmm0nu1//7z6XUR51vw9H5WevoeTIy/gt+/ZRuqb1uOHlNJtu9e7ftovniiy/s/2ujW7dubXM6leOpLhwte/TRR+3fxo0bp/m1FAzNmzfPzJ07N8XAKN5OnDhh81VFX0YFsAqEt23bZg9I+uLoC/3pp58my7lS0Lx9+3YbEOqg16JFC3uw0uOUeqCusK+++sqce+65JpGUjqCgV0Go9nH69OmmVq1aYdfV56z9D6b/1/2iHDbtz5AhQ2wqg74b+mHo/VKXnW/atGmme/fuplixYvbgoJw1vW7VqlXDvu6GDRvM888/b8aMGZOh+w4AmUmpYjpv6LygY57OqwMGDDB79uwxb7zxRlTH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1UAQqkePHjat4vDhw6Zjx47m1VdfzaA9jt6NN96Y7L5du3YFUkDCLdf74Lv//vsDY0UqV65s3yudL/R+/PDDD7aBThcS77//ftjXb9u2rSldunTYZXqvkU3F2nS8a9cuO82dHnrPPfd4hw8fTrbOsmXLvMGDBye5b/Pmzd66deu8v/76y8uOIk1tiKT69+9vp0zcunVrqtM7lipVynbNrVy50vvwww+9c845xxsxYkRgnQ0bNngtWrSw77tSIzSN5Q033ODVrFkz7HPWqFHDu/POO8Mu09TY6iL87LPPbMqFpr3UlNuIH5dTAlzed8T/+OmnN/zyyy/e8uXLvTFjxnhFihSxx9Xg83CdOnUCx8+2bdt67du399q1a5fsuZR+psfrecLRdME6fyuVTFME33777V5WEO00wUqr0zp58+b13n333WTL9TudNWuW98ILLyRb5j9/8Hub1UXznuB/xfwuvfrqq/bNLVu2rOcSguDUKc9XuWK//vprqus2a9bMu/fee5Pc9/bbb3unnXaaPbgHO3TokLdjxw77727dutkANtT8+fPt57NixYpUX1snGK0bPCc8Mp7LgaDL+474Hz/D6devn3f55Zcnu3///v02z1guuugib8CAAcnWmTRpkpcvX77AeilZsGCB/W77x+TsEAT37NnTrtOjR4+YX4MgOGeLOSdYeZei9IdYpJQTrNGqjzzyiKlWrZrNWVI5lr59+9oqAMOGDbOP099gwff/8ccfdnStRrvmz5/f/r3rrrvM/v37k72WRt6+88475oYbbrBdJYULF7Z5pirVdffddycrneWXkVFXu2gEbnAukL9d/noVK1aM+B5omdbRupHuV5fTJZdcYvPBQt8vpZuomoLK4agbR2VvateubR577DHbzZ8o+s0pD3z69Onmq6++sjlWqdH2KkctmLr0/OcLpq48lTbT/qvrS6OVw3XlNWjQwNSpUyeqLsfgvDkAyE7Hz0jHtXDHtCJFitjztcbxLFu2LOLxU6UkozmvZ8fjpx+3qARdZuXiKnVSKX16/0PP+4ozBg0aZNNPdB7X+VzjqZSyp9TAUHqvlcqhc5zWVZyj1Aw9RmkeGusSicZnKe1QsY7OpUq10fgb/J9Yo2a11vndK1988UXUj2vZsmXYqym18qmbW8uUZtGhQwfv2muv9cqUKeOVLFnSu+mmm+yyoUOHJnmc/l/3aySrrp7VtX711VfbVkJ162iZnje0JcZvBdQ6TZo0sa+lx6hlW/dr9Ky6mIK70dUKXKVKFbtcXen6f/82ffp0u96mTZvscnVlRaJlWkfrhrtfXfn627BhQ3vFqvdMLZyyZs0amy6g5Xpv1KXVsWNHu9+6T6N6dcWfCOoa0/v59ddf224z/6YuNl+vXr2SpMjo8zvzzDNt15RaPpSmoPdYLb2+OXPmeLNnzw4sV9de48aNk32mBw4c8E4//XRvwoQJybbt22+/9Z5//nnbZfjbb795X375pXfxxRfb1zpy5Ejc3hO43Rrq8r4j/sfPJ554wh4TN27c6K1du9amMairP7jyw7Rp0+z5VuvMmDHDnmd0jgyl852q5ehYG0opAq+//rq3atUqe95SWsF5550XqOKTXVqC1UqudcqVK+dt27Ytbi3B/ro6l+fOndv2eOpcrvOWzj+iqh9nnXWWXa9ixYpep06dbKqKf59a84OPG+oZvfTSS+2ywoUL25QWPedll10WiB10fgu3HY8++qj9bPV5de/ePZAeo/uUgog0pEP8+eef9ovkv5GtWrXyRo4caX8sKXWlRAqCBw4caO9XnlFw94pyjbt27Rr4MCMFwbopUA4OaLZs2RLYxsmTJyd53MGDB21e09GjR5Pcry/dkCFD7GPCdbenlg6REUGwLiy0baF0MPSDcJXACd525VjrB6Flffr08RLB/xxCb8HvlT5/vYe+48ePe8OGDbP7VbBgQRvgq5tu3759gXWmTp3qVa5c2cufP79XunRp210YLtB/+eWXbRpFuGXKN27durV39tlnewUKFLAHHeXdxXogROxcDgRd3nfE//ipMpFVq1a1x04FT02bNvWmTJkStpSZ0hzOPffcZOcOn857Ov6GpqHJV199ZZ9bQbpeq1q1at4DDzyQ5DidHYLg7777zl4kaD2dKxRbPPvss7aRKbVxSmkJghWsLl68ONlyXdwUK1bMxk7jx49P8p7v3r3blvfU44cPHx64X0Gz7lMJPMUvoZYuXWofG247ihYtahuCwsVO1atXT3V/XJCmpJH169fbK5twP1y1SKpF7sSJE6kGwQru/EF2n376abLXUVCtFr6UgmD9yMN9iUeNGhVoKY6FWoR1BRf6ZcuMIDjStur91HK1kke6MFGruX7ke/fujWIvgfhzORB0ed+BrBYEy8cff2zjhdCYRRcJbdq0sS3rsVyk+LfgixP/vuAB3sF0AeG3FIejxhltj3qk/YHbatHXY+6+++4o35X/vx3PPfdcsmVqMPR7y7ds2eK5Lk0l0pQ/q3p6qvGquqxLliyxJUaUm6sSabfffrvNQ9Ey5a5EorqEhw4dMsWLF7cz5IRSfpLKmChPNpJLL73U5tSEUq6NBM8uFuzHH3+0tRU3bdpkc5L9PCfl4+jfGzZsMPXq1TOZKdIsZnofpXv37mGXa4YfTaGpPB9NKxzuvQQAwFUdOnSwZc40rkSz3ulcqXhF41M0U59ujz76qJ01L5YSacq3zahzuUreaWzU2rVrbQ539erVTf369e14Gc2Gqv9XCVCNkYmGytmF0rgrlYjTLILbt2+3Y6hclqYg2HfRRRfZm+jiQ2+qkrdVI1hfsnHjxpn77rsv4uNVs1BSG0yWkkj1+ZQELkeOHElyvwLeXr162UEIKUnE3OiR9lUTSYi2W7eU6EIkVn6dXiAjaRCq63gPgMjy5s2bqZM6aIIkBcO6+QPONPj84YcftoMGR4wYYa688spAXBNs8ODBySbfSOu5vHnz5qk+h87lCnqrVKliazwrltIASt002YcG3Wk/rr322oiNjbHGRy5KVxAcTF9kXbFoQgNdWWmucc2iklIQHPzYtCyT0AoDqVHxcAXAqgwxatQoO7pSLdH+l0iFwjUhQ2iFgozgtzZHoioVKT2uXbt2dtKIlOjHESsFwCm12ANppYNtrL/RnED77I/GBhDesWPHEjpzp1pF1cKrigmKCdQyqp7ncEFwLFI7l6ulOLVjgyYi86naVbdu3WxcpRn/dFNjo26qGLVgwYKwrcMuHnsTFgQHU3e8PizNCJYSNf1LaMmwYCktS4tp06bZv1OnTjUXXnhhsuXqgkgLP4j8888/I7YIRZqpJzXqrli/fr2dzjJSN0t6r8Z1MAIymg7Cfuk7l2ifVbYotQtfwGU692QFSilUy6pmi0stbkkPncsVY2gGU6UwxkINYLfccou9iWIClZJVo51aqf0yrohNzN9AtZCm1jq7ZcsW+7d8+fIprqead8rnVbO/0icuu+yyJMv1ZVSeTkby6+mFazFVrlCkH4Af5EZKG1D+stbR8//+++/J6hHqudOactC+fXv7PiiAj0cQrM8zkVfjQE4NhF28AACymoyMW9JD53IFwTqXxxoEh1LLtYLpLl262NxmpE3MbeWan1xzdC9atCjsF+3DDz+0BZ/luuuuS/G5FADffPPN9t8DBw4MFLT2c3WU+6Ic3ozkD5h7/vnnk9yvOcP79+8f8XH+D2PNmjVhlyuIbNGihf238ouCW4A0CE/7kla33nqrDdrfe+89+6UP19qsOdQnTpyY5tcAACAnUi+qzssa8B7q8OHDdtIrDfRXy3Q8Gpp8Sg8tWrSoGTt2rHn66afD9sBqsL4m9PJpAhUNeg8dX6B4a+bMmWlOg0QaW4L1QUyaNMne1PqpCgrKqdXsbBrR6Kcv9OzZ037xUvP444+bhQsX2koRVatWtbOlFSxY0Oa86AuigFvN/BmVs6r8GX3JNUOdrsbOP/9823KrnBolq2u2unABvq62NGr0ueeeM6tXr7bdGurq1Sw7uolmbps/f74NRufNm2fTLZRjpIT766+/3ibgb968OeZtVu6QRpUqCf6pp54yr7zyin1uBebKv/7555/NunXrbOuz31UCAAD+twdYM7gp3lBlBJ33NfOazv2KPTQbqXptdH73G8riQeds5Rxfc8015t5777Xn8wsuuMDm8x44cMCexzdu3GgaN25sYyhZuXKlbSTUGAONu1KMosBdFbkUT2hGOg3oQyYFwQpsNa2jyoupNJoCX7Xg6gpKH06PHj1M79697SCuaHNxFBw++eSTNsl7zpw5dspglUZTUOmXK1GgnRFUXkQBqp5XLbT6wulHoStBfSkjlRdT0Kmyb2PGjLH7rf3XlZi+1H4QrC+unluBtkrIbd261Y7uVJUMtTKndTpM0Y9WP4aXXnrJDuzTv5ULpPdF26Btv+qqq9L8/AAA5EQvvviibcjSeXvVqlX2HK7AWAPYdF6+4YYb7Dla59l4U4+xepTVY67GLZVqU8+3GrFUzUHBr4Lk4DJnCpDVUKdUCsUW2m41xCkX+I477ohrCkdOl0vFgk0WpVZnXSWppVNXa7oKAgAAANIrS9TPUIAbOopak2goj1YBsFphCYABAACQo1qCVVhaua21a9e2XQLK09FoR3VXKDVClSMye/Y2AAAA5FxZIghWMrryXFX3TgnqGnCm0Y7Kz1Wuq+vT+gEAACAHBsEAAACAcznBAAAAQGYiCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAM4hCAYAAIBzCIIBAADgHIJgAAAAOIcgGAAAAMY1/w8Ziv/wJ9B1TQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from aeon.visualisation import plot_boxplot, plot_critical_difference\n", "\n", "plot_critical_difference(results, names)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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JS2tfjcBADALQjcAAAAAAFlC6AYAAAAAIEsI3QAAAAAAZAmhGwAAAACALCF0AwAAAACQJYRuAAAAAACyhNANAAAAAECWELoBAAAAAMgSQjcAAAAAAFlC6AYAAAAAIEsI3QAAAAAAZAmhGwAAAACALCF0AwAAAACQJYRuAAAAAACyhNANAAAAAECWELoBAAAAAMgSQjcAAAAAAFlC6AYAAAAAIEsI3QAAAAAAZAmhGwAAAACALCF0AwAAAACQJYRuAAAAAACyhNANAAAAAECWELoBAAAAAMgSQjcAAAAAAFlC6AYAAAAAIEsI3QAAAAAAZAmhGwAAAACALCF0AwAAAACQJYRuAAAAAACyhNANAAAAAECWELoBAAAAAMgSQjcAAAAAAFlC6AYAAAAAIEsI3QAAAAAAZAmhGwAAAACALCF0AwAAAACQJYRuAAAAAACyhNANAAAAAECWELoBAAAAAMgSQjcAAAAAAFlC6AYAAAAAIEsI3QAAAAAAZAmhGwAAAACALCF0AwAAAACQJYRuAAAAAACyhNANAAAAAECWELoBAAAAAMgSQjcAAAAAAFlC6AYAAAAAIEsI3QAAAAAAZAmhGwAAAACAfArdjzzyiFauXKloNKrrr79ezz777Kyv3bt3r37mZ37Ge71lWXr44YevpL0AAAAAABRv6H7sscd077336oEHHtBzzz2nbdu26fbbb1d3d/eMrx8bG9Pq1av1h3/4h2ptbV2MNgMAAAAAUJyh+6GHHtI999yju+++W5s3b9ajjz6q8vJyfe5zn5vx9ddee60+/vGP6z3veY8ikchitBkAAAAAgOIL3clkUrt379Ztt9127g1s23v8zDPPLFqjEomEhoeHp20AAAAAABR16O7t7VUmk1FLS8u0583jzs7ORWvUgw8+qJqamqmtvb190d4bAAAAAICSrl5+3333aWhoaGrr6Ojwu0kAAAAAACxYcCEvbmxsVCAQUFdX17TnzePFLJJm5n4z/xsAAABAMXFd1+8mIN97usPhsHbu3Kknnnhi6jnHcbzHN954YzbaBwAAAABAafR0G2a5sLvuuku7du3Sdddd5627HYvFvGrmxp133qm2tjZvXvZk8bVXXnll6vNTp05pz549qqys1Nq1axf79wEAAAAAoHBD9x133KGenh7df//9XvG07du36/HHH58qrnbixAmvovmk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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_boxplot(results, names, relative=True)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## References\n", "\n", "[1]htsc repo https://github.com/benfulcher/hctsa\n", "\n", "[2] Christ, et al. (2018) \"Time series feature extraction on basis of scalable\n", "hypothesis tests (tsfresh–a python package).\" Neurocomputing 307: 72-77.\n", " https://www.sciencedirect.com/science/article/pii/S0925231218304843\n", "\n", "[3] Midddlehurst and Bagnall (2022) \"The FreshPRINCE: A Simple Transformation Based\n", "Pipeline Time Series Classifier\" https://arxiv.org/abs/2201.12048\n", "\n", "[4] Rodriguez et al. (2006) \"Rotation Forest: A New Classifier Ensemble Method\" IEEE\n", "Transactions on Pattern Analysis and Machine Intelligence, 28(10): 1619--1630.\n", "\n", "[5] Morrill et al. (2020) \"A generalised signature method for multivariate time series\n", "feature extraction\" https://arxiv.org/abs/2006.00873\n" ] } ], "metadata": { "kernelspec": { "display_name": "aeon_cenv", "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.11.11" } }, "nbformat": 4, "nbformat_minor": 2 }