.. only:: html
.. note::
:class: sphx-glr-download-link-note
Click :ref:`here ` to download the full example code
.. rst-class:: sphx-glr-example-title
.. _sphx_glr_auto_examples_plot_watchdata.py:
=============================
Working with Time Series Data
=============================
This example shows how to load the included smartwatch inertial sensor dataset, and create time series data objects compatible with the `seglearn` pipeline.
.. image:: /auto_examples/images/sphx_glr_plot_watchdata_001.png
:class: sphx-glr-single-img
.. rst-class:: sphx-glr-script-out
Out:
.. code-block:: none
DATA STATS - AGGREGATED
{'n_series': 140, 'n_classes': 7, 'n_TS_vars': 6, 'n_context_vars': 2, 'Total_Time': 4882.04, 'Series_Time_Mean': 34.87171428571428, 'Series_Time_Std': 8.757850351285423, 'Series_Time_Range': (18.94, 52.36)}
DATA STATS - BY CLASS
Class_labels n_series Total_Time Series_Time_Mean Series_Time_Std Series_Time_Min Series_Time_Max
0 PEN 20 532.44 26.622 2.720845 21.28 31.10
1 ABD 20 798.10 39.905 8.055554 22.48 49.10
2 FEL 20 809.96 40.498 8.772099 22.30 50.84
3 IR 20 747.90 37.395 9.085212 19.40 52.36
4 ER 20 752.08 37.604 7.983878 21.30 49.24
5 TRAP 20 611.56 30.578 6.099252 19.26 45.12
6 ROW 20 630.00 31.500 5.957100 18.94 38.66
/home/david/Code/seglearn/examples/plot_watchdata.py:67: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
plt.show()
|
.. code-block:: default
# Author: David Burns
# License: BSD
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from seglearn.base import TS_Data
from seglearn.datasets import load_watch
from seglearn.util import check_ts_data, ts_stats
data = load_watch()
y = data['y']
Xt = data['X']
fs = 50 # sampling frequency
# create time series data object with no contextual variables
check_ts_data(Xt)
# create time series data object with 2 contextual variables
Xs = np.column_stack([data['side'], data['subject']])
X = TS_Data(Xt, Xs)
check_ts_data(X)
# recover time series and contextual variables
Xt = X.ts_data
Xs = X.context_data
# generate some statistics from the time series data
results = ts_stats(X, y, fs=fs, class_labels=data['y_labels'])
print("DATA STATS - AGGREGATED")
print(results['total'])
print("")
print("DATA STATS - BY CLASS")
print(pd.DataFrame(results['by_class']))
# plot an instance from the data set
# this plot shows 6-axis inertial sensor data recorded by someone doing shoulder pendulum exercise
Xt0 = Xt[0]
f, axes = plt.subplots(nrows=1, ncols=2)
t = np.arange(len(Xt0)) / fs
axes[0].plot(t, Xt0[:, 0], 'r-')
axes[0].plot(t, Xt0[:, 1], 'g-')
axes[0].plot(t, Xt0[:, 2], 'b-')
axes[0].set_xlabel('time [s]')
axes[0].set_ylabel('Acceleration [G]')
axes[0].legend(data['X_labels'][0:3])
axes[1].plot(t, Xt0[:, 3], 'r-')
axes[1].plot(t, Xt0[:, 4], 'g-')
axes[1].plot(t, Xt0[:, 5], 'b-')
axes[1].set_xlabel('time [s]')
axes[1].set_ylabel('Rotational Velocity [rad/s]')
axes[1].legend(data['X_labels'][3:6])
plt.tight_layout()
plt.show()
.. rst-class:: sphx-glr-timing
**Total running time of the script:** ( 0 minutes 0.209 seconds)
.. _sphx_glr_download_auto_examples_plot_watchdata.py:
.. only :: html
.. container:: sphx-glr-footer
:class: sphx-glr-footer-example
.. container:: sphx-glr-download sphx-glr-download-python
:download:`Download Python source code: plot_watchdata.py `
.. container:: sphx-glr-download sphx-glr-download-jupyter
:download:`Download Jupyter notebook: plot_watchdata.ipynb `
.. only:: html
.. rst-class:: sphx-glr-signature
`Gallery generated by Sphinx-Gallery `_