背景:数据科学领域中,数据一直都是主要驱动力,特征工程作为其中重要一环,成为无论是kaggle类的数据竞赛,还是工业界应用中关注的重点。特征工程中有重要的一个环节叫做特征融合,好的特征融合能帮助构造当前模型不能学习到的知识,通常产生新的特征会很依赖于专家知识,当在缺乏专家知识的情况下,我们就需要一款工具帮我们自动生成特征。因此gplearn就主要产生了。

简介:待补充

gplearn特征生成使用案例:以官方给出的boston房屋数据为例

  • 安装
pip install gplearn #python3.7版本
pip install gplearn==0.3.0 #python2.7版本,当前0.4版本的gplearn不再支持python2.7

  • 引入库
from sklearn.datasets import load_boston
from gplearn.genetic import SymbolicTransformer›
import pandas as pd
import numpy as np
import gplearn as gp

  • 数据导入
def data_prepare():boston = load_boston()boston_feature = pd.DataFrame(boston.data, columns=boston.feature_names)boston_label = pd.Series(boston.target).to_frame("TARGET")boston = pd.concat([boston_label, boston_feature], axis=1)return bostondata = data_prepare()

  • 自定义可计算的算子:logical算子使用官方给定案例,自定义算子通过make_function()实现,这里我自定义一个box-cox算子(lamda = 2),注意一定要有报错机制,比如np.errstate,不然不会通过。官方自定义的‘add’等算子可以直接使用
def _logical(x1,x2,x3,x4):return np.where(x1 > x2,x3,x4)
logical = gp.functions.make_function(function = _logical,name = 'logical',arity = 4)
def _boxcox2(x1):with np.errstate(over='ignore', under='ignore'):return (np.power(x1,2)-1)/2
binary = gp.functions.make_function(function = _binary,name = 'binary',arity = 1)
function_set = ['add', 'sub', 'mul', 'div', 'log', 'sqrt', 'abs', 'neg','inv','sin','cos','tan', 'max', 'min',boxcox2,logical]

  • 初始化
gp1 = SymbolicTransformer(generations=1, population_size=1000,hall_of_fame=600, n_components=100,function_set=function_set,parsimony_coefficient=0.0005,max_samples=0.9, verbose=1,random_state=0, n_jobs=3)

  • 生成新特征
label = data['TARGET']
train = data.drop(columns=['TARGET'])
gp1.fit(train,label)
new_df2 = gp1.transform(train)

  • 查看新生成的特征
from IPython.display import Image
import pydotplus
graph = gp1._best_programs[0].export_graphviz()
graph = pydotplus.graphviz.graph_from_dot_data(graph)
Image(graph.create_png())

gplearn参数的介绍

  • unction_set。用于构成程式的函数(算子)集合
  • tournament_size。参与遗传算法计算下一代特征的特征数量(控制特征之间的相关性)
  • stopping_criteria。遗传算法停止条件
  • init_depth。初始化的树深度
  • parsimony coefficient。简化系数
  • p_hoist_mutation。提升变异系数
  • max_samples。最大采样比例
  • hall_of_fame。备选数量
  • const_range。混入程式的常数范围
  • init_method。初始化方法
  • metric。适应度标准
  • p_crossover。交叉变异系数
  • warm_start。热启动
  • n_jobs。并行计算使用的核心数量
  • verbose。显示信息控制
  • random_state。随机种子
  • p_subtree_mutation。子树变异系数
  • p_point_mutation。点变异系数

参考:

gplearn官网

一个github代码例子

psql where里有自定义函数慢_使用gplearn自定义特征自动生成模块相关推荐

  1. 生成特征_使用gplearn自定义特征自动生成模块

    背景:数据科学领域中,数据一直都是主要驱动力,特征工程作为其中重要一环,成为无论是kaggle类的数据竞赛,还是工业界应用中关注的重点.特征工程中有重要的一个环节叫做特征融合,好的特征融合能帮助构造当 ...

  2. EXCEL自定义函数无法运行的原因:可以在VBA里运行的函数,在EXCEL用自定义函数为什么报错?

    目录 1目标问题: 为什么VBA里,function可以运行的代码,在EXCEL用自定义函数,会返回错误值? 2 先说结论 2.1 最容易发生的原因 2.2 其他原因梳理 3  自定义函数返回值的情况 ...

  3. mysql自定义函数的分号_MySQL之自定义函数实例讲解

    转自:https://www.2cto.com/database/201804/740205.html MySQL中已经有很多函数,如时间函数等,但是有时这些函数不能满足自己的设计需求,此时需要自定义 ...

  4. R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然、自定义函数计算模型的分类效能(accuray、F1、偏差Deviance)、使用pander包美化界面输出内容

    R语言构建决策树模型(decision tree)并可视化决策树:自定义函数计算对数似然.自定义函数计算模型的分类效能(accuray.F1.偏差Deviance).使用pander包美化界面输出内容 ...

  5. mysql 自定义函数入门_【转】MYSQL入门学习之十三:自定义函数的基本操作

    转载地址:http://www.2cto.com/database/201212/177382.html 一.自定义函数(UDF)的特性和功能  www.2cto.com 函数能分返回字符串,整数或实 ...

  6. 最小值c语言编写自定义函数,C语言笔记55:自定义函数[老九学堂]

    函数定义 return_type function_name ([datetype1 arg1],[datype2 arg2,[...]){ //函数体 } 函数三要素返回值类型 函数名 参数列表 书 ...

  7. matlab 调用函数本身,怎么在matlab自定义函数中再调用一个自定义函数?

    Matlab自定义函数的七种方法1.函数文件+调用命令文件:需单独定义一个自定义函数的M文件.2.函数文件+子函数:定义一个具有多个自定义函数的M文件.3.Inline:无需M文件,直接定义.4.匿名 ...

  8. c语言中自定义函数返回数组,C语言自定义函数返回数组的方法(图文详解)

    C语言自定义函数返回数组的方法(图文详解) 最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢? 能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下: 直接返回str ...

  9. 自定义函数_Access中的WorkDate自定义函数

    Access专家课堂两周年庆,视频课程.培训班.企业版等5~8折优惠,->点此了解详情 在Access中使用类似EXCEL中的WorkDate函数. 在Excel中有workdate函数,在AC ...

最新文章

  1. 关于DWG文件转换成PDF
  2. 换工作必须避开的五个坑
  3. encoder decoder模型_如何突破Decoder性能瓶颈?揭秘FasterTransformer的原理与应用
  4. Docker 监控 之普罗米修斯--架构篇
  5. SAP--DEBUG--外部断点的设置
  6. java上机实验答案_java上机实验答案与解析
  7. MyCat分布式数据库集群架构工作笔记0021---高可用_单表存储千万级_海量存储_水平分表全局表
  8. linux search用法,在Linux中使用ldapsearch只返回一个值
  9. python常用文本处理功能
  10. 基于Householder变换的QR分解
  11. VB MSFlexGrid控件使用问题
  12. PHPEXCEL 不能输出中文内容,只显示空白
  13. 软件工程网络15个人阅读作业2(201521123010徐璐琳)
  14. 支持MacOS 12.x的虚拟机VMware Fusion Pro for Mac
  15. HTML5 植物大战僵尸项目介绍 和源码分析
  16. 打卡第十八天--用户体验设计师总结
  17. poi 垂直、水平居中
  18. 出生在商丘农村的80后的幸福童年
  19. 通过HOST VIP连接Oracle数据库
  20. 相敬如宾 你将获得更多敬重

热门文章

  1. 深入理解JDBC的超时设置 转
  2. Tomcat Firewall JMX RMI
  3. poj 3261 Milk Patterns 后缀数组 最长重复子串
  4. 移植根文件系统到linux内核 s3c2440,u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统...
  5. python1~10阶乘_小练习 python3 阶乘运算
  6. Android mergeDebugResources'. Error: java.util.concurrent.ExecutionException: com.android.ide.comm
  7. sqlserver 库服务器导数据
  8. Kotlin学习笔记(六) 伴生对象 对象表达式
  9. 第10章 springboot是什么
  10. IDEA git修改远程仓库地址