今天我要向大家介绍一个强大的 Python 库:OpenFE。
https://github.com/IIIS-Li-Group/OpenFE
OpenFE 是一个开源库,旨在自动化地处理特征,提升机器学习模型的性能和效率。
OpenFE 具有以下优点:
- 发现有效的候选特征,提升 GBDT 和神经网络的学习性能。
- 高效并支持并行计算。
- 涵盖 23 种有用且有效的运算符,用于生成候选特征。
- 支持二分类、多分类和回归任务。
- 自动处理缺失值和分类特征。
OpenFE 的特征生成过程采用了扩展和缩减框架:
- 扩展步骤使用预定义的运算符对基本特征进行转换,生成候选特征池。
- 缩减步骤采用两阶段修剪算法,有效地从候选池中识别有效特征。
初次体验:
<code>import pandas as pd from sklearn.datasets import fetch_california_housing from openfe import OpenFE, tree_to_formula, transform from sklearn.model_selection import train_test_split import lightgbm as lgb from sklearn.metrics import mean_squared_error def get_score(train_x, test_x, train_y, test_y): # 省略部分代码 return score data = fetch_california_housing(as_frame=True).frame label = data[['MedHouseVal']] del data['MedHouseVal'] train_x, test_x, train_y, test_y = train_test_split(data, label, test_size=0.2, random_state=1) # 获取基准分数 score = get_score(train_x, test_x, train_y, test_y) print("特征生成前的均方误差(MSE)为:", score) # 特征生成 ofe = OpenFE() ofe.fit(data=train_x, label=train_y, n_jobs=1) train_x, test_x = transform(train_x, test_x, ofe.new_features_list[:10], n_jobs=n_jobs) # 获取生成特征后的分数 score = get_score(train_x, test_x, train_y, test_y) print("特征生成后的均方误差(MSE)为:", score) print("前十个生成的特征为:") for feature in ofe.new_features_list[:10]: print(tree_to_formula(feature))</code>
通过对比可以看出,使用 OpenFE 进行自动化特征处理后,MSE 有了显著的降低。
这个强大的 Python 库可以在特征处理中为您节省大量时间和精力,快来体验吧!
© 版权声明
THE END
暂无评论内容