背景:数据科学领域中,数据一直都是主要驱动力,特征工程作为其中重要一环,成为无论是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代码例子

生成特征_使用gplearn自定义特征自动生成模块相关推荐

  1. psql where里有自定义函数慢_使用gplearn自定义特征自动生成模块

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

  2. webstorm如何自动换行_怎样在word中自动生成目录

           欢迎关注支持,谢谢!!! 用 Word 编排好一本书后,不用制作目录,可以用自动生成的方法生成,那么Word2016目录怎么自动生成呢?如果要自动生成目录,排版时就要设置好章节,如果等排 ...

  3. java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...

    压缩包 : 试卷自动生成系统.rar 列表 试卷自动生成系统/.classpath 试卷自动生成系统/.project 试卷自动生成系统/bin/Db/Sql.class 试卷自动生成系统/bin/f ...

  4. Vue生成二维码,自定义插入图片生成logo

    Vue生成二维码,自定义插入图片生成logo vue-qr是一个很棒的制作二维码开源库,github地址:https://github.com/Binaryify/vue-qr 1.安装vue-qr ...

  5. 如何用python自动改试卷_利用Python和Jinja2自动生成试卷

    一.概述 Jinja2是Python 3下一个被广泛应用的模版引擎,它的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能.其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能 ...

  6. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

  7. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...

  8. mysql javabean 工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)...

    TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下: 1.新增对JDK9及以上版本Java环境的支持 2.生成JavaBean更名为生成数据模型并且提供了C#.C++.Gol ...

  9. linux清除configure文件_在Linux操作系统下自动生成Makefile的方法

    在Linux操作系统下进行开发,编写Makefile似乎是不可缺少的事情.但是对于一个比较大的工程,编写一个符合规范的Makefile并非易事.而且由于Makefile的各种显式,隐式规则,加之平时并 ...

最新文章

  1. HDU_1075 What Are You Talking About(Trie 树)
  2. [NOI2015]品酒大会
  3. Gitlab+Gerrit+Ldap+nginx+mysql 之Gerrit搭建与配置(一)
  4. Apache的虚拟主机配置
  5. zmq 接口函数之 :zmq_socket_monitor - 注册一个监控回调函数
  6. 智能语音识别转文字字幕实时上屏直播系统
  7. 《打造七星级团队》观后感
  8. java如何阻塞父窗体,java图形设计,窗口阻塞的问题。
  9. shell脚本头,#!/bin/sh与#!/bin/bash的区别.
  10. c++数据结构中 顺序队列的队首队尾_数据结构与算法(三)栈和队列
  11. uooc c语言作业测验答案,UOOC优课在线组织行为学测验作业答案
  12. 倍加福编码器AHM58N-0BAK1R0BN-1212
  13. HTTP Headers
  14. python取值范围_python 数据库取值范围
  15. 李泉老师《高级商务礼仪锻造》
  16. 希捷和西数移动硬盘哪个好_希捷,西数哪个移动硬盘更好
  17. 获取Mac地址getMacAddress
  18. qt+opencv进行七巧板识别应用(三)
  19. 【华为云技术分享】风格迁移——让你的照片秒变手绘日漫风,祝大家六一快乐!
  20. 一条sql语句在mysql中如何执行的

热门文章

  1. 报错 classes 拒绝访问_3种方式“移除”快速访问;为什么移除?你懂的...
  2. [转载] java常量池-字符串常量池、class常量池和运行时常量池
  3. c语言 函数的参数传递示例_isunordered()函数与C ++中的示例
  4. mysql的安装和基本命令_MySQL安装以及简单命令用法
  5. python mpi开销_GitHub - hustpython/MPIK-Means
  6. 系统延时任务及定时任务
  7. 正则过滤符号_多角度理解正则项
  8. c struct 对齐_C中的struct大小| 填充,结构对齐
  9. 40 个 SpringBoot 常用注解:让生产力爆表!
  10. Sql Server内置函数实现MD5加密