5.5 KiB
5.5 KiB
机器学习平台开发文档
数据处理模块接口文档
1. DataProcessor (数据处理基类)
基础数据处理类,提供数据读取和保存功能。
1.1 初始化参数
config: Dict = None
- csv_params: Dict # CSV文件读取参数
- log_level: str # 日志级别
1.2 主要方法
def load_data(file_path: str) -> pd.DataFrame:
"""
加载数据文件
参数:
file_path: 数据文件路径
支持格式:
- CSV
- Parquet
- HDF5
"""
def save_data(df: pd.DataFrame, file_path: str):
"""
保存数据文件
参数:
df: 要保存的数据框
file_path: 保存路径
"""
2. DataCleaner (数据清洗类)
继承自DataProcessor,提供数据清洗相关功能。
2.1 初始化参数
config: Dict = None
- log_dir: str # 日志保存路径
- missing_value_methods: Dict # 缺失值处理方法配置
2.2 主要方法
def handle_missing_values(
df: pd.DataFrame,
method: str = 'mean',
columns: List[str] = None
) -> pd.DataFrame:
"""
处理缺失值
参数:
df: 输入数据框
method: 处理方法,可选['mean', 'median', 'mode', 'constant']
columns: 需要处理的列,默认处理所有数值列
"""
def remove_duplicates(
df: pd.DataFrame,
subset: List[str] = None
) -> pd.DataFrame:
"""
删除重复值
参数:
df: 输入数据框
subset: 用于判断重复的列,默认使用所有列
"""
def detect_outliers(
df: pd.DataFrame,
method: str = 'zscore',
threshold: float = 3
) -> pd.DataFrame:
"""
检测并移除异常值
参数:
df: 输入数据框
method: 检测方法,可选['zscore', 'isolation_forest']
threshold: zscore方法的阈值
"""
def save_processed_data(
df: pd.DataFrame,
filename: str
):
"""
保存处理后的数据到指定目录
参数:
df: 数据框
filename: 文件名
保存位置: dataset/dataset_processed/
"""
3. FeatureEngineer (特征工程类)
继承自DataProcessor,提供特征工程相关功能。
3.1 初始化参数
config: Dict = None
包含特征工程相关配置
3.2 主要方法
def scale_features(
df: pd.DataFrame,
method: str = 'standard',
columns: List[str] = None
) -> pd.DataFrame:
"""
特征缩放
参数:
df: 输入数据框
method: 缩放方法,可选['standard', 'minmax', 'robust']
columns: 需要缩放的列,默认所有数值列
"""
def select_features(
df: pd.DataFrame,
target: str,
method: str = 'chi2',
k: int = 10
) -> pd.DataFrame:
"""
特征选择
参数:
df: 输入数据框
target: 目标变量列名
method: 选择方法,可选['chi2', 'f_classif']
k: 选择的特征数量
"""
def create_datetime_features(
df: pd.DataFrame,
datetime_column: str
) -> pd.DataFrame:
"""
创建时间特征
参数:
df: 输入数据框
datetime_column: 时间列名
生成特征:
- year
- month
- day
- weekday
- is_weekend
"""
4. DataSplitter (数据集划分类)
继承自DataProcessor,提供数据集划分功能。
4.1 初始化参数
config: Dict = None
4.2 主要方法
def train_val_test_split(
df: pd.DataFrame,
target: str,
test_size: float = 0.2,
val_size: float = 0.2,
random_state: int = 42
) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]:
"""
划分训练集、验证集和测试集
参数:
df: 输入数据框
target: 目标变量列名
test_size: 测试集比例
val_size: 验证集比例
random_state: 随机种子
返回:
(训练集, 验证集, 测试集)
"""
5. 使用示例
# 配置
config = {
'log_dir': '.log',
'csv_params': {
'encoding': 'utf-8',
'na_values': ['', 'NULL', 'null']
}
}
# 创建处理器实例
cleaner = DataCleaner(config)
engineer = FeatureEngineer(config)
splitter = DataSplitter(config)
# 数据处理流程
df = cleaner.load_data('dataset/dataset_raw/data.csv')
df = cleaner.handle_missing_values(df, method='mean')
df = cleaner.remove_duplicates(df)
df = cleaner.detect_outliers(df, method='zscore')
# 特征工程
df = engineer.scale_features(df, method='standard')
df = engineer.create_datetime_features(df, 'date_column')
df = engineer.select_features(df, target='target', k=10)
# 数据集划分
train, val, test = splitter.train_val_test_split(df, target='target')
# 保存处理后的数据
cleaner.save_processed_data(train, 'train.csv')
cleaner.save_processed_data(val, 'val.csv')
cleaner.save_processed_data(test, 'test.csv')
6. 注意事项
-
数据存储规范:
- 原始数据存放在
dataset/dataset_raw/目录 - 处理后数据存放在
dataset/dataset_processed/目录 - 日志文件存放在
.log/目录
- 原始数据存放在
-
异常处理:
- 所有方法都包含异常处理
- 异常信息会记录到日志文件
- 建议使用try-except进行错误处理
-
日志记录:
- 每个操作都会记录详细日志
- 异常值信息会单独保存
- 可通过日志追踪数据处理过程
-
配置管理:
- 通过config字典统一管理配置
- 支持自定义配置扩展
- 关键参数都可配置化