1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| import pandas as pd import numpy as np
class EEGDatasetBenchmark: """ EEG驾驶数据集基准测试 论文: Sensors, 2025 评估: 7个公开数据集 × 5个维度 核心发现: 1. 年龄偏差: 80%参与者为18-30岁大学生 2. 模拟器依赖: 7/7数据集在模拟器中采集 3. 情感监测: 仅1/7包含情绪标注 4. 数据可访问性: 仅3/7完全开放 """ DATASETS = { 'SEED-VIG': { 'task': 'fatigue_detection', 'participants': 23, 'age_range': '22-28', 'environment': 'simulator', 'modalities': ['EEG'], 'accessibility': 'open', 'best_accuracy': 87.3, 'has_emotion': False, 'has_multimodal': False, 'interactive': False }, 'CL-Drive': { 'task': 'cognitive_load', 'participants': 48, 'age_range': '19-32', 'environment': 'simulator', 'modalities': ['EEG', 'ECG', 'EDA'], 'accessibility': 'open', 'best_accuracy': 82.5, 'has_emotion': False, 'has_multimodal': True, 'interactive': True }, 'MPDB': { 'task': 'multi_state', 'participants': 30, 'age_range': '20-35', 'environment': 'simulator', 'modalities': ['EEG', 'ECG', 'EOG'], 'accessibility': 'restricted', 'best_accuracy': 85.0, 'has_emotion': False, 'has_multimodal': True, 'interactive': True }, 'PPB-Emo': { 'task': 'emotion', 'participants': 24, 'age_range': '21-33', 'environment': 'simulator', 'modalities': ['EEG', 'ECG', 'PPG'], 'accessibility': 'open', 'best_accuracy': 79.2, 'has_emotion': True, 'has_multimodal': True, 'interactive': True } } def evaluate_gaps(self) -> dict: """评估关键差距""" gaps = { 'age_bias': 0, 'simulator_only': 0, 'emotion_gap': 0, 'accessibility_gap': 0, 'multimodal_gap': 0, 'interactive_gap': 0 } total = len(self.DATASETS) for name, info in self.DATASETS.items(): age_range = info['age_range'] if '22' in age_range or '19' in age_range or '20' in age_range: gaps['age_bias'] += 1 if info['environment'] == 'simulator': gaps['simulator_only'] += 1 if not info['has_emotion']: gaps['emotion_gap'] += 1 if info['accessibility'] != 'open': gaps['accessibility_gap'] += 1 if not info['has_multimodal']: gaps['multimodal_gap'] += 1 if not info['interactive']: gaps['interactive_gap'] += 1 return {k: f"{v}/{total} ({v/total*100:.0f}%)" for k, v in gaps.items()} def generate_recommendations(self) -> list: """生成数据集改进建议""" return [ "1. 扩展年龄分布:纳入40-70岁驾驶员(当前<5%)", "2. 真实道路数据采集:至少1个真实驾驶数据集", "3. 标准化情绪标注:使用SAM量表+生理交叉验证", "4. 全部开放数据:采用CC-BY许可", "5. 多模态标配:EEG+ECG+EOG+眼动+车辆CAN", "6. 交互式场景:真实驾驶操控而非被动观看", "7. 跨文化验证:东亚/欧洲/北美多中心采集", "8. 长时程数据:≥2小时连续驾驶记录" ]
if __name__ == "__main__": benchmark = EEGDatasetBenchmark() print("=== EEG驾驶数据集关键差距 ===") gaps = benchmark.evaluate_gaps() for gap, value in gaps.items(): print(f" {gap}: {value}") print("\n=== 改进建议 ===") for rec in benchmark.generate_recommendations(): print(f" {rec}")
|