xgboost模型训练

XGBoost

通过训练特征,在训练一个特征的基础上训练下一个,预测与真实分布的差距,通过不断训练弥补差距,最终组合真实分布模拟

目标函数包含正则项和损失函数

损失函数代表模型拟合数据程度

通常用他的一阶导数指出梯度下降的方向,还计算了二阶导数,考虑梯度变化,拟合更快精度更高

正则项用来控制模型的复杂程度

节点越多模型越大运算时间长,超过一定限度会过拟合,导致分类效果下降

calc_util.py

calc_features计算特定时间窗口内的特征

get_features对整个数据集应用特征计算,并保存结果

collections用于高效的数据容器,如 deque

type_list=collections.deque(maxlen=max_len)

使用 deque 创建一个双端队列,限制最大长度为 max_len


特征计算逻辑

遍历数据,根据高低点的比较,动态更新特征列表

根据上一个特征点的类型(高点或低点),判断当前点是否形成新的特征点

计算当前特征

close_mean=type_df.close.mean()close_std=type_df.close.std()cur_features['score']=(close-close_mean)/close_std


calc_features

函数的核心逻辑是通过遍历时间序列数据,动态识别高低点,并根据这些高低点计算特征

get_features

这个函数负责对整个数据集应用特征计算,并保存结果

对每个时间点,取最近的data_len条数据作为窗口,调用calc_features计算特征


calc_model_util.py

sklearn:用于模型训练、评估和数据预处理。

xgboost:提供XGBoost模型(回归和分类)。

joblib:用于保存训练好的模型。

prepare_data 函数处理数据

创建包含固定列名的DataFrame(score_mean到diff_mean,最后一列为label)。

检查数据是否为空。

提取特征列名(最后一列label除外)。

使用均值填充缺失值。

返回原始数据、处理后的数据和特征名称。

train_model 函数训练分类模型

调用prepare_data处理数据。

分割特征和标签。

对标签进行编码(转换为数值)。

划分训练集和测试集(比例7:3)。

初始化XGBoost分类器(目标函数为二分类逻辑回归)。

训练模型并预测测试集。

输出混淆矩阵和分类报告。

保存模型到eth.pkl。

predict_result 函数使用训练好的模型进行预测并保存结果

预处理数据并提取特征。

对标签编码。

预测标签及其概率。

生成结果DataFrame,包含预测标签、真实标签、概率和精度。

保存结果到result.csv。

calc_util.py

calc_features 函数从原始价格数据中提取特征。

对数据按时间降序排序。

在初始20个数据点中识别第一个高点或低点。

遍历数据,动态更新高点和低点序列(交替生成,需满足最小间隔min_interval)。

计算所有点的均值和标准差,生成标准化后的特征(如score和score_0到score_34)。

get_features 函数批量生成特征并保存。

定义高/低点的最小间隔(4)和最大序列长度(35)。

计算价格变化率(diff)。

遍历数据,每次取最近的1000条数据调用calc_features生成特征。

保存所有特征到features.csv

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容