自动特征工程与线性回归模型选择
autofeat的Python项目详细描述
autofeat
库
具有自动特征工程和选择的线性回归模型
此库包含具有与scikit-learn
模型相似接口的AutoFeatRegression
模型:
fit()
函数来拟合模型参数predict()
函数预测给定输入的目标变量score()
计算拟合优度的函数(r^2值)fit_transform()
和transform()
函数,它们通过模型设计和选择的附加功能扩展给定的数据
调用fit()
函数时,将在内部调用fit_transform()
函数,因此,如果您打算无论如何都对同一数据调用transform()
,请立即调用fit_transform()
。transform()
如果您已经将数据拆分为训练和测试数据,并且没有对整个数据集调用fit_transform()
,那么{fit()
/fit_transform()
时使用的原始数据帧的格式为predict()
和score()
函数提供数据,也可以为它们提供已转换的数据帧。
此外,在FeatureSelector
模型中也只有特征选择部分可用。
AutoFeatRegression
和FeatureSelector
模型都需要fit on data without nans,因为它们在内部称为sklearnLassoLarsCV
模型,该模型不能处理nans。当调用transform()
时,nans(但不是np.inf
)可以。
autofeat examples notebook包含一个简单的用法示例-试试看!:)其他示例可以在autofeat benchmark notebook(其中还包含从下面提到的论文中复制结果的代码)以及测试脚本中找到。
请记住,由于AutoFeatRegression
模型可以生成非常复杂的特征,因此可能会在数据集中overfit on noise过拟合,尽管与noise相关的特征的系数应该相当小。通常建议仔细检查autofeat
发现的特性,并使用那些对您有意义的特性来训练您自己的模型。
根据feateng_steps
(默认值2)的数量和输入特性的数量,autofeat
可以生成非常庞大的特性矩阵(在从这个大型特性池中选择最合适的特性之前)。通过在feateng_cols
中指定那些您认为在功能工程部分最有价值的列,可以大大减少功能的数量。此外,transformations
可以仅限于那些对数据有意义的功能转换。最后但并非最不重要的是,您可以对用于训练模型的数据进行子采样,以限制内存需求。模型拟合后,您可以对整个数据集调用transform()
,以仅生成在fit()
/fit_transform()
期间选择的少数特征。
有关模型和实现的更多详细信息,请参阅paper-当然,如果这段代码有助于您的研究,请考虑引用它:
@article{horn2019autofeat,
author = {Horn, Franziska and Pack, Robert and Rieger, Michael},
title = {The autofeat Python Library for Automatic Feature Engineering and Selection},
year = {2019},
journal = {arXiv preprint arXiv:1901.07329},
}
本规范旨在用于研究目的。
如果您有任何问题,请不要犹豫发送给我一个email当然,如果您应该找到任何错误或想贡献其他改进,拉请求是非常欢迎的!
安装
您可以从这里下载代码并在$PYTHONPATH
中包含autofeat文件夹,也可以通过pip安装(仅限库组件):
$ pip install autofeat
库需要python 3!其他依赖项:numpy
,pandas
,scikit-learn
,sympy
,joblib
,和pint
致谢
由于BASF的支持,这个项目得以实现。