コンテンツにスキップ

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'
  • 'frequency'
  • 'gender'
  • 'height'
  • 'weight'
  • 'person'
'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.