five

hibiday/school-festival-synthetic-data

收藏
Hugging Face2026-04-03 更新2026-04-12 收录
下载链接:
https://hf-mirror.com/datasets/hibiday/school-festival-synthetic-data
下载链接
链接失效反馈
官方服务:
资源简介:
--- license: cc-by-4.0 task_categories: - time-series-forecasting language: - ja tags: - synthetic - simulation - school-festival - sales-forecasting pretty_name: School Festival Synthetic Data source_datasets: - extended configs: - config_name: sales default: true data_files: - split: train path: - "*_sales.csv" - config_name: customers data_files: - split: train path: - "*_customers.csv" - config_name: transactions data_files: - split: train path: - "*_transactions.csv" - config_name: scenario data_files: - split: train path: - "*_scenario.json" --- # School Festival Synthetic Data > **Warning:** This is a hackathon prototype / Proof of Concept. Not production-ready. Synthetic sales data for Japanese school festivals (学園祭), designed for 15-minute interval sales forecasting. 25 unique festival scenarios, each spanning 3 days, generated via an LLM-driven pipeline. ### Generation Pipeline ``` Shot 1: Identity Generation (DeepSeek-V3.2) → Fictional university names, festival names, school/festival descriptions Shot 2: Scenario Generation (DeepSeek-V3.2) → Shop details, visitor distribution parameters, weather, operating hours Shot 3: Wandering Pattern Generation (GPT-oss-20b) → Visitor shopping behavior generated from personas sampled from Nemotron-Personas-Japan Simulation → Arrival time assignment, transaction data construction Aggregation → 15-min interval sales aggregation, lag feature calculation ``` ### File Structure Each sample (00001–00025) contains 4 files: | File | Description | |---|---| | `XXXXX_scenario.json` | Scenario info (university settings, shop details, weather, visitor count, time distribution parameters) | | `XXXXX_customers.csv` | Visitor personas (100 visitors/day x 3 days = 300 rows) | | `XXXXX_transactions.csv` | Individual transaction data (visited shops, dwell time, purchase status, amount) | | `XXXXX_sales.csv` | 15-min interval sales aggregation (main training data) | Generation scripts are in `main.py` and `src/`. The `00001`-`00025` files in the repository root are the published dataset snapshot. When you rerun the generation pipeline, newly generated files are written to `output/<timestamp>/`. ### sales.csv Column Definitions | Column | Description | |---|---| | `day` | Day number (1 / 2 / 3) | | `time` | Start time of the 15-min interval (e.g., `10:00`, `10:15`) | | `paid_count` | Number of purchase events with `purchased=True` per 15-min interval, including free / 0-JPY items | | `paid_sales` | Total recorded purchase amount per 15-min interval (JPY). 0-JPY purchases contribute `0` | | `basket_size` | Average recorded amount per purchase event (`paid_sales / paid_count`) | | `admissions` | Number of visitors per 15-min interval | | `lag96` | `paid_sales` from the same clock-time slot on the previous day. The name assumes a full 24-hour, 15-minute grid (`96` steps/day). Empty for Day 1 | | `lag192` | `paid_sales` from the same clock-time slot 2 days prior. The name assumes a full 24-hour, 15-minute grid (`192` steps/2 days). Empty for Day 1, 2 | In this published snapshot, `sales.csv` is not a full 24-hour series. Each day only contains slots within the scenario's operating hours, so `lag96` / `lag192` should be interpreted as same-time previous-day features rather than literal 96/192-row shifts. Some `menu_items.price` values in `scenario.json` can be `0` (for example free items or flexible-price items). As a result, purchase events with `purchased=True` can also have `amount=0`; those events are included in `paid_count` and contribute `0` to `paid_sales`. ### scenario.json Field Definitions Top-level fields: | Field | Type | Description | |---|---|---| | `festival_name` | string | Festival name | | `school_name` | string | University name | | `school_description` | string | University profile (type, size, faculties, region) | | `festival_description` | string | Festival atmosphere and highlights | | `open_hour` | int | Opening hour (e.g., 10) | | `close_hour` | int | Closing hour (e.g., 18) | | `total_shops` | int | Total number of stalls at the festival (35–180) | | `shops` | array | 20 shops sampled for simulation (see below) | | `age_weights` | array | Visitor age distribution weights (see below) | | `days` | array | 3-day scenarios (see below) | `shops[]`: | Field | Type | Description | |---|---|---| | `shop_id` | int | Shop ID (1–20) | | `shop_name` | string | Shop name | | `genre` | string | Genre (e.g., food, drink, game) | | `location` | string | Location on campus | | `menu_items` | array | 1–3 items, each with `name` (string), `price` (int, JPY; may be `0` for free / flexible-price items), `catchphrase` (string) | | `popularity` | float | Popularity score (0.0–1.0) | | `congestion` | float | Peak congestion level (0.0–1.0) | `age_weights[]`: | Field | Type | Description | |---|---|---| | `age_min` | int | Minimum age of bracket | | `age_max` | int | Maximum age of bracket | | `weight` | float | Proportion of visitors in this bracket (sum = 1.0) | `days[]`: | Field | Type | Description | |---|---|---| | `day` | int | Day number (1 / 2 / 3) | | `weather` | string | Weather description (e.g., "朝は曇り、昼から晴れ、最高気温23℃") | | `total_visitors` | float | Daily visitors in units of 10,000 | | `arrival_dist` | array | 5 Gaussian mixture components (see below) | `arrival_dist[]`: | Field | Type | Description | |---|---|---| | `mean_hour` | float | Peak arrival hour (e.g., 12.5 = 12:30) | | `std_hours` | float | Standard deviation in hours | | `coefficient` | float | Weight of this component (sum = 1.0) | ### transactions.csv Column Definitions | Column | Description | |---|---| | `customer_id` | Visitor ID | | `day` | Day number | | `shop_id` | Visited shop ID | | `visited_at` | Visit time (decimal hours, e.g., `10.5` = 10:30) | | `dwell_minutes` | Dwell time (minutes) | | `purchased` | Purchase status (`True` / `False`) | | `amount` | Recorded purchase amount (JPY). `0` if no purchase, and it may also be `0` when `purchased=True` for free / flexible-price items | ### customers.csv Column Definitions | Column | Description | |---|---| | `customer_id` | Visitor ID | | `day` | Day number | | `uuid` | Unique persona identifier | | `persona` | Persona summary | | `cultural_background` | Cultural background | | `culinary_persona` | Culinary preferences | | `hobbies_and_interests` | Hobbies and interests | | `age` | Age | | `sex` | Sex | Personas are sampled and processed from [nvidia/Nemotron-Personas-Japan](https://huggingface.co/datasets/nvidia/Nemotron-Personas-Japan) (NVIDIA, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)). ### Regenerating the Data ```bash cp .env.example .env # Set API keys in .env: # OPENROUTER_API_KEY — OpenRouter (for DeepSeek-V3.2) # GROQ_API_KEY — Groq (for GPT-oss-20b) # HF_TOKEN — HuggingFace (for Nemotron-Personas-Japan) uv sync uv run main.py ``` Generated files will be saved under `output/<timestamp>/`. They do not overwrite the published snapshot in the repository root. ### License This dataset is distributed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). See [LICENSE](LICENSE) for details. Persona-related fields in `customers.csv` are derived from [nvidia/Nemotron-Personas-Japan](https://huggingface.co/datasets/nvidia/Nemotron-Personas-Japan) (NVIDIA, CC BY 4.0) and remain subject to attribution requirements. For dataset limitations, biases, and intended use, see [DATASHEET.md](DATASHEET.md). --- ## 日本語ドキュメント > **Warning:** 本プロジェクトはハッカソンで作成したプロトタイプ / Proof of Concept であり、本番利用を想定していない。 学園祭(3日間)の売上予測用合成データセット。LLM によるシナリオ生成とシミュレーションを組み合わせたパイプラインで、25パターンの学園祭データを生成している。 ### 生成パイプライン ``` Shot 1: アイデンティティ生成 (DeepSeek-V3.2) → 架空の大学名・学園祭名・大学/学園祭の概要 Shot 2: シナリオ生成 (DeepSeek-V3.2) → 店舗詳細、来場者分布パラメータ、天気、開催時間 Shot 3: 回遊パターン生成 (GPT-oss-20b) → Nemotron-Personas-Japan からサンプリングしたペルソナをもとに 来場者ごとの店舗訪問・購買行動を生成 シミュレーション → 来場時刻の割り当て、取引データの構築 集計 → 15分足での売上集計、ラグ特徴量の算出 ``` ### ファイル構成 各サンプル (00001〜00025) につき4ファイル: | ファイル | 内容 | |---|---| | `XXXXX_scenario.json` | シナリオ情報(大学設定・店舗詳細・天気・来場者数・時間分布パラメータ) | | `XXXXX_customers.csv` | 来場者ペルソナ(100人/日 x 3日 = 300行) | | `XXXXX_transactions.csv` | 個別取引データ(訪問店舗・滞在時間・購買有無・金額) | | `XXXXX_sales.csv` | 15分足売上集計(メインの学習用データ) | 生成スクリプトは `main.py` および `src/` に含まれる。 リポジトリ直下の `00001`〜`00025` は公開用のデータスナップショットであり、再生成時の出力先は `output/<timestamp>/` である。 ### sales.csv カラム定義 | カラム | 説明 | |---|---| | `day` | 日目 (1 / 2 / 3) | | `time` | 15分足の開始時刻 (例: `10:00`, `10:15`) | | `paid_count` | 15分ごとの `purchased=True` の購買イベント件数。0円商品の購入を含みうる | | `paid_sales` | 15分ごとの記録上の購入金額合計(円)。0円購入は `0` として加算される | | `basket_size` | 購買イベントあたりの平均記録金額 (`paid_sales / paid_count`) | | `admissions` | 15分ごとの来場者数 | | `lag96` | 前日同時刻スロットの `paid_sales`。列名は 24時間を15分刻みで表した `96` ステップ/日を前提にしている。Day 1 は空 | | `lag192` | 2日前同時刻スロットの `paid_sales`。列名は 24時間を15分刻みで表した `192` ステップ/2日を前提にしている。Day 1, 2 は空 | この公開スナップショットの `sales.csv` は24時間フル系列ではなく、各日の営業時間帯のみを含む。そのため `lag96` / `lag192` は、厳密には 96/192 行前ではなく「前日/2日前の同時刻特徴量」として解釈すること。 `scenario.json` の `menu_items.price` には `0` が入りうるため(無料配布や自由料金の想定)、`purchased=True` でも `amount=0` になる購買イベントがある。これらのイベントは `paid_count` に含まれ、`paid_sales` には `0` として反映される。 ### scenario.json フィールド定義 トップレベル: | フィールド | 型 | 説明 | |---|---|---| | `festival_name` | string | 学園祭名 | | `school_name` | string | 大学名 | | `school_description` | string | 大学の概要(種別・規模・学部構成・地域) | | `festival_description` | string | 学園祭の雰囲気・見どころ | | `open_hour` | int | 開場時刻(例: 10) | | `close_hour` | int | 閉場時刻(例: 18) | | `total_shops` | int | 学園祭全体の模擬店数(35〜180) | | `shops` | array | シミュレート対象の20店舗(詳細は下記) | | `age_weights` | array | 来場者の年齢分布(詳細は下記) | | `days` | array | 3日間のシナリオ(詳細は下記) | `shops[]`: | フィールド | 型 | 説明 | |---|---|---| | `shop_id` | int | 店舗ID(1〜20) | | `shop_name` | string | 店舗名 | | `genre` | string | ジャンル(例: フード、ドリンク、ゲーム) | | `location` | string | キャンパス内の出店場所 | | `menu_items` | array | 1〜3品、各メニューに `name` (string)・`price` (int, 円。無料配布や自由料金の想定で `0` を含みうる)・`catchphrase` (string) | | `popularity` | float | 人気度(0.0〜1.0) | | `congestion` | float | ピーク時の混雑度(0.0〜1.0) | `age_weights[]`: | フィールド | 型 | 説明 | |---|---|---| | `age_min` | int | 年齢層の下限 | | `age_max` | int | 年齢層の上限 | | `weight` | float | 来場者に占める割合(合計 = 1.0) | `days[]`: | フィールド | 型 | 説明 | |---|---|---| | `day` | int | 日目(1 / 2 / 3) | | `weather` | string | 天気予報形式の記述(例: 「朝は曇り、昼から晴れ、最高気温23℃」) | | `total_visitors` | float | 来場者数(万人単位) | | `arrival_dist` | array | 5個の正規分布成分(詳細は下記) | `arrival_dist[]`: | フィールド | 型 | 説明 | |---|---|---| | `mean_hour` | float | ピーク来場時刻(例: 12.5 = 12時30分) | | `std_hours` | float | 標準偏差(時間単位) | | `coefficient` | float | 成分の重み(合計 = 1.0) | ### transactions.csv カラム定義 | カラム | 説明 | |---|---| | `customer_id` | 来場者ID | | `day` | 日目 | | `shop_id` | 訪問店舗ID | | `visited_at` | 訪問時刻(小数時間表記、例: `10.5` = 10:30) | | `dwell_minutes` | 滞在時間(分) | | `purchased` | 購買有無 (`True` / `False`) | | `amount` | 記録上の購入金額(円)。未購入時は `0` で、無料配布や自由料金の品目では `purchased=True` でも `0` になりうる | ### customers.csv カラム定義 | カラム | 説明 | |---|---| | `customer_id` | 来場者ID | | `day` | 日目 | | `uuid` | ペルソナの一意識別子 | | `persona` | ペルソナの概要 | | `cultural_background` | 文化的背景 | | `culinary_persona` | 食の嗜好 | | `hobbies_and_interests` | 趣味・関心 | | `age` | 年齢 | | `sex` | 性別 | ペルソナは [nvidia/Nemotron-Personas-Japan](https://huggingface.co/datasets/nvidia/Nemotron-Personas-Japan) (NVIDIA, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)) からサンプリング・加工したものである。 ### データの再生成 ```bash git clone https://huggingface.co/datasets/hibiday/school-festival-synthetic-data cd school-festival-synthetic-data cp .env.example .env # .env に API キーを設定: # OPENROUTER_API_KEY — OpenRouter (DeepSeek-V3.2 用) # GROQ_API_KEY — Groq (GPT-oss-20b 用) # HF_TOKEN — HuggingFace (Nemotron-Personas-Japan 取得用) uv sync uv run main.py ``` 生成されたファイルは `output/<timestamp>/` 配下に保存され、リポジトリ直下の公開スナップショットは上書きしない。 ### ライセンス 本データセットは [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) で公開している。詳細は [LICENSE](LICENSE) を参照。 `customers.csv` のペルソナ関連フィールドは [nvidia/Nemotron-Personas-Japan](https://huggingface.co/datasets/nvidia/Nemotron-Personas-Japan) (NVIDIA, CC BY 4.0) に由来し、帰属表示要件の対象となる。
提供机构:
hibiday
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作