自动特征工程与线性回归模型选择

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模型中也只有特征选择部分可用。

AutoFeatRegressionFeatureSelector模型都需要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!其他依赖项:numpypandasscikit-learnsympyjoblib,和pint

致谢

由于BASF的支持,这个项目得以实现。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用哪个地图/集合?   bluej Java:计算税   由于性能问题,java双精度字符串替代方案   java Eclipse CDT生成设置因重新启动而丢失   如何在java控制台中显示字节流值   java获取url地址,其中是包含我的页面的iframe   java 403禁止的spring启动API调用错误?   如果一个方法返回true,java将停止计时器   使用JavaNIO获取文件创建日期   在Java中从整数转换为二进制时保留整个字节的字符串   java AspectJ&Maven警告:“未应用……中定义的建议?”   java为什么我得到3,我不应该得到+7   java当一个方法包含多个返回的if语句时,如何从该方法中获取返回值?   在运行时循环java(scan.nextLine()!="$")   java配置休眠。cfg。春天的xml   java使用HtmlUnit模拟用户,错误   java CLI如何持续检查更改   java最大素因子(返回)