131 lines
3.0 KiB
Markdown
131 lines
3.0 KiB
Markdown
|
|
# 限制文件规则
|
||
|
|
|
||
|
|
本规则定义了项目中需要保护的文件和目录,这些文件不应被直接修改或删除。
|
||
|
|
|
||
|
|
## 禁止修改的文件
|
||
|
|
|
||
|
|
### 模型文件
|
||
|
|
|
||
|
|
- `**/*.cbm` - CatBoost 模型文件
|
||
|
|
- `**/*.pth` - PyTorch 模型检查点
|
||
|
|
- `**/best_model.pth` - 最佳模型文件
|
||
|
|
- `main/train/best_model.pth`
|
||
|
|
|
||
|
|
### 预测结果文件
|
||
|
|
|
||
|
|
- `**/predictions_*.tsv` - 预测结果文件
|
||
|
|
- `main/train/predictions_test.tsv`
|
||
|
|
- `main/train/predictions_train.tsv`
|
||
|
|
- `main/train/predictions.tsv`
|
||
|
|
- `main/train/test1.tsv`
|
||
|
|
- `main/train/test2.tsv`
|
||
|
|
- `predictions_test.tsv`
|
||
|
|
|
||
|
|
### 配置文件
|
||
|
|
|
||
|
|
- `.env` - 环境变量配置
|
||
|
|
- `.gitignore` - Git 忽略规则
|
||
|
|
|
||
|
|
## 禁止直接编辑的目录
|
||
|
|
|
||
|
|
### 模型训练输出目录
|
||
|
|
|
||
|
|
- `main/train/` - 模型训练输出目录
|
||
|
|
- 所有 `.pth` 文件
|
||
|
|
- 所有 `.tsv` 预测结果
|
||
|
|
- 所有 `.ipynb` 分析报告(需要时可通过 Jupyter 编辑)
|
||
|
|
|
||
|
|
### 数据文件目录
|
||
|
|
|
||
|
|
- `main/data/` - 数据文件目录
|
||
|
|
- 所有 `.ipynb` 数据处理笔记本(需通过 Jupyter 编辑)
|
||
|
|
- `update/` 子目录下的文件
|
||
|
|
|
||
|
|
### 模型文件
|
||
|
|
|
||
|
|
- `my_catboost_model.cbm` - CatBoost 训练好的模型
|
||
|
|
|
||
|
|
## 只读数据目录
|
||
|
|
|
||
|
|
以下目录包含只读数据,处理时需要特别注意:
|
||
|
|
|
||
|
|
```python
|
||
|
|
# 正确的读取方式
|
||
|
|
def load_data(filename):
|
||
|
|
data = pd.read_hdf(filename, key="data") # 使用 pandas 读取 HDF5
|
||
|
|
return data
|
||
|
|
|
||
|
|
# 错误的写入方式 - 不要修改源数据
|
||
|
|
def process_data(filename):
|
||
|
|
data = pd.read_hdf(filename, key="data")
|
||
|
|
data.to_hdf(filename, key="data") # 禁止!会覆盖源数据
|
||
|
|
```
|
||
|
|
|
||
|
|
## Jupyter Notebook 规则
|
||
|
|
|
||
|
|
### 允许的操作
|
||
|
|
|
||
|
|
- 在 `main/data/` 和 `main/train/` 目录下编辑 `.ipynb` 文件
|
||
|
|
- 运行 Notebook 进行数据分析
|
||
|
|
- 添加新的分析单元
|
||
|
|
|
||
|
|
### 禁止的操作
|
||
|
|
|
||
|
|
- 直接修改生成的模型文件
|
||
|
|
- 手动修改预测结果文件
|
||
|
|
|
||
|
|
## 保护机制
|
||
|
|
|
||
|
|
### 临时文件
|
||
|
|
|
||
|
|
临时计算产生的中间文件(如带前缀 `_` 的列)应在函数结束时清理:
|
||
|
|
|
||
|
|
```python
|
||
|
|
def get_factor(df):
|
||
|
|
old_columns = df.columns.tolist()[:]
|
||
|
|
|
||
|
|
# 临时计算
|
||
|
|
df["_temp_calc"] = df["close"] / df["open"]
|
||
|
|
|
||
|
|
# 清理临时列
|
||
|
|
cols_to_drop = ["_temp_calc"]
|
||
|
|
df.drop(columns=cols_to_drop, inplace=True, errors="ignore")
|
||
|
|
|
||
|
|
new_columns = [col for col in df.columns.tolist()[:] if col not in old_columns]
|
||
|
|
return df, new_columns
|
||
|
|
```
|
||
|
|
|
||
|
|
### 模型文件保护
|
||
|
|
|
||
|
|
模型文件只能通过训练脚本生成,禁止手动修改:
|
||
|
|
|
||
|
|
```python
|
||
|
|
# 正确:使用训练脚本
|
||
|
|
# python main/train/train_model.py
|
||
|
|
|
||
|
|
# 禁止:直接编辑模型文件
|
||
|
|
# 任何对 .pth, .cbm 文件的手动编辑都是不允许的
|
||
|
|
```
|
||
|
|
|
||
|
|
## 环境变量
|
||
|
|
|
||
|
|
以下环境变量在 `.env` 中定义,禁止硬编码:
|
||
|
|
|
||
|
|
- 数据库连接信息
|
||
|
|
- API 密钥
|
||
|
|
- 路径配置
|
||
|
|
|
||
|
|
如需使用这些变量,应通过 `os.getenv()` 或 `python-dotenv` 读取:
|
||
|
|
|
||
|
|
```python
|
||
|
|
from dotenv import load_dotenv
|
||
|
|
import os
|
||
|
|
|
||
|
|
load_dotenv()
|
||
|
|
api_key = os.getenv("API_KEY")
|
||
|
|
```
|
||
|
|
|
||
|
|
## 相关规则文件
|
||
|
|
|
||
|
|
读取限制规则已移至独立文件 [`restricted_reads.md`](restricted_reads.md),包含禁止读取 config 文件和 JSON 文件的详细规则。
|