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

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字符串。替换(regex,string)以替换XML中的内容   java Spring SOAP Web服务请求日志中XML请求有效负载的元素   java在一个类中保存作业对象并在另一个类中使用(初学者)   java无法定位com。西蒙图夫斯。奥内贾尔。在web启动中启动   java可以将Spring DAO合并到服务层吗?   使用互相关的声音文件的java时间延迟   java理解C中声明的数组指针算法   regex如何在Java中找到第一个未替换的引号?   当存在插入Spring数据JPA时进行java数据库轮询   java Axis客户端调用引发classcast异常   JavaFX ControlFX对话框中的java动作按钮css样式   使用iText Java获取空页计数   返回随机文本字段输入的java   java从spring boot stomp连接到外部activemq   java控制台错误无法找到或加载主类   java NoClassDefFoundError在尝试使用JarSigner对apk文件进行签名时出错。exe   GuavaJava:对象列表到字符串列表的可能转换   java PropertyPlaceHolderConfiguration和ResourceBundleMessageSource   java无法在回调中赋值   用于旋转变换的java简洁类(减少冗余)