HASC Dataset Loader
HASC
HASCデータセット(HASC-PAC2016)に記録されているセンサデータとメタデータを読み込む.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path |
HASCデータセットのパス.BasicActivityディレクトリの親ディレクトリのパスを指定する. |
required |
meta_cache_path |
Optional[Path] |
メタデータのキャッシュファイルのパス. 何も指定されない場合(meta_cache_path=None),メタデータの作成を行うが,キャッシュファイルは作成しない. ファイル名が指定された場合,そのファイルが存在すればそこからメタデータを読み込み,存在しなければメタデータの作成を行い指定したファイルパスにダンプする. |
required |
load(self, window_size, stride, ftrim=0, btrim=0, queries=None, y_labels='activity')
HASCデータセットを読み込み,sliding-window処理を行ったデータを返す.
ここでは3軸加速度センサデータのみを扱う.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
window_size |
int |
フレーム分けするサンプルサイズ |
required |
stride |
int |
ウィンドウの移動幅 |
required |
ftrim |
int |
セグメント先頭のトリミングサイズ ここで指定する値はトリミングする時系列センサデータのデータ長である. 他のデータセットでは秒数を指定するが,HASCデータセットは異なるサンプリングレートのデータが混在しているため,秒数ではなくデータ長で指定する. btrimにおいても同様. |
0 |
btrim |
int |
セグメント末尾のトリミングサイズ |
0 |
queries |
Optional[dict] |
メタ情報に基づいてフィルタリングを行うためのクエリ. Keyはフィルタリングのラベル(Supported: Frequency, Height, Weight, Gender) Valueはクエリ文字列(DataFrame.queryに準拠) 詳しい使い方は後述. |
None |
y_labels |
Union[str, list] |
ターゲットデータとしてロードするデータの種類を指定. listで指定した場合,その順序が返されるターゲットラベルにも反映される. サポートする種類は以下の通り(今後拡張予定).
|
'activity' |
Examples:
サンプリングレートが100Hz and 身長が170cmより大きい and 体重が100kg以上でフィルタリング
>>> hasc_path = Path('/path/to/dataset/HASC-PAC2016/') # HASCデータセットパス
>>> hasc = HASC(hasc_path, Path('D:/datasets/HASC-PAC2016/BasicActivity/hasc.csv'))
>>> queries = {
>>> 'Frequency': 'Frequency == 100', # サンプリングレートが100Hzのデータのみを取得
>>> 'Height': 'Height > 170', # 身長が170cmより大きい人
>>> 'Weight': 'Weight >= 100', # 体重が100kg以上の人
>>> }
>>>
>>> y_labels = ['activity', 'person'] # ターゲットラベルとしてacitivityとpersonを取り出す
>>>
>>> # yのaxis=1にはactivity, personの順でターゲットラベルが格納されている.
>>> x, y, act2id = hasc.load(window_size=256, stride=256, queries=queries, ftrim=2*100, btrim=2*100, y_labels=y_labels)
>>>
>>> print(f'x: {x.shape}, y: {y.shape}')
>>> # > x: (?, 3, 256), y: (?, 2)
Returns:
Type | Description |
---|---|
Tuple[numpy.ndarray, numpy.ndarray] |
sliding-windowで切り出した入力とターゲットのフレームリスト. x_framesは3次元配列で構造は大まかに(Batch, Channels, Frame)のようになっている. Channelsは加速度センサの軸を表しており,先頭からx, y, zである. y_framesはy_labelsで指定したターゲットラベルであり, y_frames(axis=1)のラベルの順序はy_labelsのものが保持されている. |
load(path, meta)
Function for loading HASC dataset
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Union[pathlib.Path, str] |
Directory path of HASC dataset, which is parent directory of "BasicActivity" directory. |
required |
meta |
DataFrame |
meta data loaded by 'load_meta'. |
required |
Returns:
Type | Description |
---|---|
Tuple[List[pandas.core.frame.DataFrame], pandas.core.frame.DataFrame] |
Sensor data segmented by activity and subject. |
load_meta(path)
Function for loading meta data of HASC dataset
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path |
Directory path of HASC dataset, which is parent directory of "BasicActivity" directory. |
required |
Returns:
Type | Description |
---|---|
DataFrame |
meta data of HASC dataset. |
load_raw(path, meta=None)
Function for loading raw data of HASC dataset
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path |
Directory path of HASC dataset, which is parent directory of "BasicActivity" directory. |
required |
meta |
Optional[pandas.core.frame.DataFrame] |
meta data loaded by 'load_meta'. |
None |
Returns:
Type | Description |
---|---|
Tuple[List[pandas.core.frame.DataFrame], pandas.core.frame.DataFrame] |
raw data of HASC dataset. Each item in 'data' is a part of dataset, which is splited by subject. |