MLPlatform/doc/development_doc.md

244 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 机器学习平台开发文档
## 数据处理模块接口文档
### 1. DataProcessor (数据处理基类)
基础数据处理类,提供数据读取和保存功能。
#### 1.1 初始化参数
```python
config: Dict = None
- csv_params: Dict # CSV文件读取参数
- log_level: str # 日志级别
```
#### 1.2 主要方法
```python
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 初始化参数
```python
config: Dict = None
- log_dir: str # 日志保存路径
- missing_value_methods: Dict # 缺失值处理方法配置
```
#### 2.2 主要方法
```python
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 初始化参数
```python
config: Dict = None
包含特征工程相关配置
```
#### 3.2 主要方法
```python
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 初始化参数
```python
config: Dict = None
```
#### 4.2 主要方法
```python
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. 使用示例
```python
# 配置
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. 注意事项
1. 数据存储规范:
- 原始数据存放在 `dataset/dataset_raw/` 目录
- 处理后数据存放在 `dataset/dataset_processed/` 目录
- 日志文件存放在 `.log/` 目录
2. 异常处理:
- 所有方法都包含异常处理
- 异常信息会记录到日志文件
- 建议使用try-except进行错误处理
3. 日志记录:
- 每个操作都会记录详细日志
- 异常值信息会单独保存
- 可通过日志追踪数据处理过程
4. 配置管理:
- 通过config字典统一管理配置
- 支持自定义配置扩展
- 关键参数都可配置化