このプロジェクトは、タクシーに搭載されたセンサーから収集された大量のJSON形式のテレメトリデータを処理し、乗客の乗降イベント(乗り・降り)を検出するための機械学習用データセットを構築することを目的としています。
収集されるデータには、GPS、速度、加速度、ジャイロセンサーなどの情報が含まれており、これらのデータを統合・分析することで、乗客の行動パターンを明らかにします。
probe/
├── src/ # ソースコード
│ ├── taxi_data_processor.py # オリジナルの統計集計ベースのプロセッサ
│ └── taxi_data_processor_v2.py # 基本データと加速度データを分離する改良版プロセッサ
├── tests/ # テストスクリプト
│ ├── test_processing.py # オリジナルプロセッサ用テスト
│ └── test_v2_processing.py # v2プロセッサ用テスト
├── scripts/ # ユーティリティスクリプト
│ └── setup_and_run.py # 環境構築と実行を自動化
├── data/ # 入力データ
│ └── change_flag_filled0.csv # 乗降イベントの正解ラベル(必須)
├── outputs/ # 生成されたデータセット
│ └── taxi_dataset_*.csv # 処理結果のCSVファイル
├── docs/ # ドキュメント
│ └── README.md # このファイル
├── json/ # 生のJSONデータ(約49,000ファイル、約30GB)
│ ├── TRP_*.json
│ └── ...
├── pyproject.toml # プロジェクトの依存関係定義
├── uv.lock # 依存関係のロックファイル
└── .gitignore # Gitの無視リスト
-
データ処理:
src/taxi_data_processor.py: センサーデータを統計値(平均、最大、最小、標準偏差など)に集約し、タイムスタンプごとに1つのレコードを生成します。src/taxi_data_processor_v2.py: 基本データ(GPS、速度など)と高周波の加速度・ジャイロデータを分離して、それぞれ別のデータセットとして出力します。これにより、より詳細な時系列分析が可能になります。
-
乗降イベント検出:
data/change_flag_filled0.csvに含まれる正解ラベルと、車両のステータスコードの変化パターンを組み合わせて、乗車(get_on)と降車(get_off)のイベントを特定します。v2プロセッサでは、車両が停車している区間を特定し、その区間に対して乗降ラベルを付与することで、より精度の高いラベリングを目指しています。
-
テスト:
tests/ディレクトリには、各プロセッサの動作を検証するためのテストスクリプトが含まれています。処理を実行する前に、これらのテストを実行することが推奨されます。
プロジェクトの依存関係は pyproject.toml で管理されています。uv を使った環境構築が推奨されます。
# uv を使って仮想環境を作成し、依存関係をインストール
uv venv
uv syncscripts/setup_and_run.py は、環境チェック、依存関係のインストール、データ処理の実行をまとめて行います。
python scripts/setup_and_run.py# テストの実行
python tests/test_processing.py
# 本処理の実行
python src/taxi_data_processor.py# テストの実行
python tests/test_v2_processing.py
# 本処理の実行
python src/taxi_data_processor_v2.py注意:
- データ処理には大量のJSONファイル(
json/ディレクトリに配置)と、正解ラベルファイル(data/change_flag_filled0.csv)が必要です。 - 全ファイルの処理には数時間かかる場合があります。
処理が完了すると、outputs/ ディレクトリに以下のCSVファイルが生成されます。
-
オリジナルプロセッサ:
taxi_dataset_full.csv: 全データtaxi_dataset_train.csv: 学習用データ(80%)taxi_dataset_test.csv: テスト用データ(20%)
-
v2プロセッサ:
taxi_dataset_v2_base.csv: 基本データ(GPS、速度など)taxi_dataset_v2_accel.csv: 加速度・ジャイロデータ
これらのデータセットを用いて、乗降イベント予測モデルの学習や、さらなるデータ分析を行うことができます。