精华内容
下载资源
问答
  • 衍生变量数据平台

    2021-01-22 11:42:15
    衍生变量数据平台 ODS:数据源,从区联社下发的数据加载到ODS层; DDS:根据数据下发是全量还是增量,对ODS层数据进行处理,确定加载方式,加上主键以及生效日期和失效日期。 ADS:根据业务主题分类汇总数据, SDS ...

    衍生变量数据平台

    1. ODS:数据源,从区联社下发的数据加载到ODS层;
    2. DDS:根据数据下发是全量还是增量,对ODS层数据进行处理,确定加载方式,加上主键以及生效日期和失效日期。
    3. ADS:根据业务主题分类汇总数据,建立基础数据模型。(只记录当天最新的数据)
    4. SDS:根据用户数据分析和报表需求建设多个主题区域模型,加工业务明细数据。(SDS月表记录每个月月末的数据)
    5. RDM:应用层,为360视图提供数据
    展开全文
  • 最近有同学跟我们讨论人行征信数据和反欺诈模型/策略中如何进行变量衍生。今天跟大家讲解下变量特征工程的衍生方法,学会这这一套特征变量衍生,不管是模型还是策略,应用到哪一个场景中都是适用的。本文就给大家...

    最近有同学跟我们讨论人行征信数据和反欺诈模型/策略中如何进行变量衍生。今天跟大家讲解下变量特征工程的衍生方法,学会这这一套特征变量衍生,不管是模型还是策略,应用到哪一个场景中都是适用的。本文就给大家介绍下特征工程衍生的相关的方法。
    我们通常可以把数据分为四个level:
    1.Nominal level
    根据名字描述:比如性别,人名,手机号前缀,手机号归属地,手机卡运营商,购买渠道,app版本,钱包购买类型,联系人关系,设备ID,设备品牌,密码,IP网络信息,IP省,IP市,代理信息等等,每个类别是平行的关系,属于定性特征。对这类特征我们能做的数学处理只有统计他们每个类别数据出现的频率。常见的对数据的编码方式有:
    Dummy encoding:
    以性别数据为例,因为性别只有男性女性两个选择,判断一个人的性别可以只有男性一个特征,下面用0和1进行编码,男性用1表示,女性用0表示。相当于表示2个选项只需要1个特征。扩展到n个选项时,n个选项只需要n-1个特征,最后一个特征用全0来表示。
    在这里插入图片描述
    one-hot encoding:
    与dummy encoding类似,只是n个选项需要n个特征来表述,一条记录必定有一个特征是1,其余均为0,如下图所示:
    在这里插入图片描述
    两种编码方式相比较,one-hot encoding易于理解,但是表示同样的数据多用了一维特征,添加了多余的自由度。用在回归问题上wx+b,相当于多了一个xi,多了一个wi,会导致问题缺点,就是容易导致过拟合,需要引入正则化的方式约束wi。
    2.Ordinal level
    在nominal level的基础上,增加了有序的特征,比如收入的低、中、高。中是介于低和高之间的,不同类别之间存在高低、大小关系。需要说明的是,这类数据仍然属于类别特征。这类数据可以使用连续整数进行编码,如0代表低,1代表中,2代表高。编码后,我们可以计算数据的一些统计信息,例如中位数,分位数以及绘制箱型图等。比如在会员等级上,学历信息,收入等级。
    3.Interva level
    反映变量的连续变化,可以画出两个变量特征的关系曲线,以发觉变量之间的变化趋势。比如对于手机号码登录时长,关机时间,联系人号码近N天无>30s的主叫通话记录,设备相邻两次注册时间,7天内设备上提交不同的账户数量,设备关联手机数,同一账户最近4小时关联ip数,注册、登录时间间隔,登录购买钱包时间间隔,设备购买钱包次数,失败后变更IP尝试数量等等

    4.Ratio level
    这个level的数据在intervallevel的基础上还有乘除的能力,比如金钱数额,物品重量等。一般也就理财价格*数量,来计算总额的数据。
    而在相关的特征衍生中,我们经常用到的两大数据衍生方式是:
    a.技术衍生
    ** 数学运算**:数量、金额求和求积等等
    ** 二值化**:是否类型的字段做1和0
    ** 特征离散化**:提取连续型变量特征的非线性影响并减弱个别数值(或异常值)的作用强度
    技术衍生的特征通过没有业务逻辑,就像冷冰冰的一串串数字,在业务的角度来看都缺乏相关的逻辑,于是我们需要增加也有意义基于业务角度衍生的逻辑。从目前各种模型跟策略的角度来看,基于业务角度衍生的数据才是具有生命力也最容易被业务接收。我们先讲逻辑,再举例讲解。
    b.特征衍生
    从特征的业务意义出发,生成具有不同层面业务含义的新特征。方法:逻辑关联、频率分析、相对强度水平等。比如在相关的反欺诈场景中,我们基于业务的角度衍生的特征衍生变量有以下类型:
    ** 逻辑关联**:
    同一账户订单12小时内ip省、ip市是否一致;同一账户订单24小时内ip省、ip市是否一致;订单金额小数点末尾是99;购买时间是否在凌晨12点到4点;24小时内同一电话不同设备提交的购买次数>3次;7天内同一电话 不同设备提交的购买次数>7次;24小时内同一设备不同电话提交的购买次数>3次;7天内同一设备不同电话提交的 购买次数>7次;注册手机号与购买钱包ip省,市是否相同;购买时版本是否是新版等等
    垃圾注册:同一设备注册和登录手机号是否一致;同一设备24小时内注册数量是否>3;手机号码、银行卡、姓 名、身份证号一致/不一致;银行卡、姓名、身份证号一致/不一致;身份证号、姓名、手机号码一致/不一致;姓 名、身份证号一致/不一致;紧急联系人号码近7天无通话记录,同一设备注册的性别是否失衡;工作地址,住房及 租房地址是否雷同;紧急联系人是否关联多个账户;注册手机号是否是虚拟运营商;地址信息是否雷同;注册时间是否在凌晨12点到4点等等**
    频率分析**:最近一周购买钱包的次数;一天内不同地区登录次数;最近1周/24小时同一号码购买次数,总额;7天内同一设备注册手机数量;7天内同一手机登录不同设备次数;7天内设备不同电话购买次数;购买年龄;时间段购买次数等等**
    相对强度水平**:单次购买金额是否小于100元,单次购买金额末尾是否是99,24小时内购买金额比上次是否多1w元等
    再比如以番茄风控较早的文章中,开发的催收模型为例,变量最显著的仍是贷后相关变量,比如BP、KTPT-RATE等变量,一个变量的iv就能达到0.2的水平。追踪其原因,就会发现BP是打破承诺的业务含义,试想一位客户经常性地不按照还款日还款,并且在被催收后屡次承诺还款而不还,有这种行为变量的客户很难想象会按时履约。
    数据界一直流行着一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。课件特征工程的重要性,做特征工程也是最复杂的跟最耗时间的事情。
    在最开始,我们提及了征信数据,那怎么能不见相关的征信数据共飨各位读者,请看这个内容,相关的excel也存放至知识星球平台,可至星球查阅:
    在这里插入图片描述
    ~原创文章

    end

    展开全文
  • I frequently use standard Java property files for configuring my Groovy applications. One feature I have been missing is the ability to use variables as part of the property value so they can be expan...

    I frequently use standard Java property files for configuring my Groovy applications. One feature I have been missing is the ability to use variables as part of the property value so they can be expand dynamically during use. I thought I could provide this functionality using the following design:

    Use a special format to annotate the properties that should be expanded. I have chosen to enclose such templates in double exclamation marks (!!). These property values are essentially a template to be expanded with the local variables

    Before using the properties in the application, use the groovy 'evaluate' method to expand application variables in the template

    Re-assign the original property key to the new value before use

    So, if I have a property file config.properties with properties like:

    version=2.3

    local_lib=!!${env['GROOVY_HOME']}/${configProps.getProperty('version')}/lib!!

    The local_lib property will be expanded from the GROOVY_HOME environment variable and the version property value.

    In my application, I have coded this as follows:

    //Load the environment variables and configuration file

    env=System.getenv()

    configFile=new File('config.properties')

    configProps= new Properties()

    configProps.load(configFile.newDataInputStream())

    //Replace configuration property values with their expanded equivalent

    configProps.each{

    //if a property value is a template we evaluate it

    if (it.value.startsWith('!!')){

    valTemplate=it.value.replace('!!','"')

    it.value=evaluate(valTemplate)

    }

    }

    //then we use the expanded property values

    This seems to work. When I do

    println configProps

    I see that the value is expanded and not null

    However, the getProperty method for the expanded property returns null.

    assert configProps.getProperty('local_lib')=='C:\\DEVTOOLS\\groovy-2.4.7/2.3/lib'

    | | |

    | null false

    [local_lib:C:\DEVTOOLS\groovy-2.4.7/2.3/lib, version:2.3]

    What is causing this discrepancy? I would have expected to return the value shown in the property map.

    解决方案

    Your local_lib value looks like a String, but it isn't. It is a GString, only lazily coerced to String as needed (like when printing out the configProps map value).

    Thus, a little known effect of Properties.getProperty() takes effect here. When the actual map value is not a String, Properties.getProperty() returns null.

    So, in order to get the desired behavior, you need to coerce the GString to String before you store the value in the property map. Like so:

    it.value=evaluate(valTemplate).toString()

    or

    it.value=evaluate(valTemplate) as String

    Then you should see the desired results downstream.

    展开全文
  • .index, inplace=True) return stock_df['code'].tolist() '''获得股票衍生变量数据''' # 通过公式1获取成交量涨跌幅 def chg1(stock_table): stock_table['f_volume'] = stock_table['volume'].shift(-1) stock_...

    基于股票信息的数据分析与可视化

    项目简介:采用皮尔逊相关系数研究A股开盘前十分钟成交量变化与当日收盘价变化的相关性,最后将数据导入到Excel中做可视化分析。
    结论:大部分都没有很强的相关性。

    在这里插入图片描述

    import baostock as bs
    import pandas as pd
    import matplotlib.pyplot as plt
    import xlwings as xw
    from scipy.stats import pearsonr
    # 设置显示最大行和列
    pd.set_option('display.max_columns', 1000)
    pd.set_option('display.width', 1000)
    pd.set_option('display.max_rows', None)
    #### 登陆系统 ####
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:'+lg.error_code)
    print('login respond  error_msg:'+lg.error_msg)
    def get_code(start_date):
        stock_rs = bs.query_all_stock(start_date)
        stock_df = stock_rs.get_data()
        stock_df.drop(stock_df[stock_df.code < 'sh.600000'].index, inplace=True)
        stock_df.drop(stock_df[stock_df.code > 'sz.399000'].index, inplace=True)
        return stock_df['code'].tolist()
    
    '''获得股票衍生变量数据'''
    # 通过公式1获取成交量涨跌幅
    def chg1(stock_table):
        stock_table['f_volume'] = stock_table['volume'].shift(-1)
        stock_table['chg_volume1(%)'] = (stock_table['volume']-stock_table['f_volume'])/stock_table['f_volume']*100
        return stock_table
    
    # 通过公式2获得成交量涨跌幅
    def chg2(stock_table):
        ten_mean = stock_table['volume'].sort_index().rolling(10, min_periods=1).mean()
        stock_table['m10_volume'] = ten_mean
        stock_table['chg_volume2(%)'] = (stock_table['volume']-stock_table['m10_volume'])/stock_table['m10_volume']*100
        stock_table['ma5'] = stock_table['close'].sort_index().rolling(5).mean()
        return stock_table
    
    def get_timedataAll(start_date, end_date):
        stock_list = get_code(start_date)
        data = pd.DataFrame()
        i = 0
        for code in stock_list:
            i += 1
            #获取前十分钟数据
            rs = bs.query_history_k_data_plus(code, "date,time,code,open,high,low,close,volume,amount",
                                              start_date=start_date, end_date=end_date,frequency="5", adjustflag="3")
            #获取收盘涨跌幅
            rs1 = bs.query_history_k_data_plus(code, "date,code,open,high,low,close,volume,amount,pctChg",
                                               start_date=start_date, end_date=end_date, frequency="d",
                                               adjustflag="3")
            df1 = rs1.get_data()
            df = rs.get_data()
            if not df.empty:
                df = df[(df['time'].str[-9:] == '093500000') | (df['time'].str[-9:] == '094000000')]
                # 统计前10分钟成交量
                df['volume'] = df['volume'].apply(pd.to_numeric)
                df = df.groupby(['code', 'date'], as_index=False, sort=True)['volume'].sum()
            else:
                print(code, '为空')
            stock_table = pd.merge(df1[['code', 'date', 'open', 'close', 'pctChg']],
                                   df[['code', 'date', 'volume']], on=['code', 'date'])
            stock_table = stock_table.set_index('date')
            data1 = chg1(stock_table)
            data2 = chg2(stock_table)
    
            # 通过公式1计算的相关性
            stock_table['pctChg'] =stock_table['pctChg'].apply(pd.to_numeric)
            corr = pearsonr(stock_table['pctChg'][:-1], data1['chg_volume1(%)'][:-1])
            if corr:
                stock_table['corr1'] = corr[0]
                stock_table['p1'] = corr[1]
    
            # 通过公式2计算的相关性
            corr2 = pearsonr(stock_table['pctChg'][1:], data2['chg_volume2(%)'][1:])
            if corr2:
                stock_table['corr2'] = corr2[0]
                stock_table['p2'] = corr2[1]
            # 选取所需要的列
            target_columns = ['code', 'open', 'close', 'pctChg', 'volume', 'chg_volume2(%)', 'chg_volume1(%)', 'corr1','p1','corr2','p2']
            stock_table = stock_table[target_columns]
            data = data.append(stock_table, ignore_index=True)
            #股票数量太多,可只打印三个股票
            if(i>3):
                break
        return data
    
    def getChangeRate(start_date, end_date):
        return get_timedataAll(start_date, end_date)
    
    start_date = '2021-03-01'
    end_date = '2021-04-15'
    # print(getChangeRate(start_date, end_date))
    final_table = getChangeRate(start_date, end_date)
    
    
    '''数据可视化呈现'''
    # 创建一个Excel文件,并设置为不可见
    app = xw.App(visible=False)
    wb = app.books.add()
    
    # 新建一张Excel表,命名为stock_name,也即最开始定义的“万科A”
    sht = wb.sheets.add('浦发银行')
    
    # 将之前生成的所有股票的指标选出自己想可视化的代码,导入到Excel中
    final_table = final_table[final_table['code']=='sh.600000']
    sht.range('A1').value = final_table
    
    # 数据可视化,并将图片导入到Excel当中
    fig = plt.figure()  # 设置一下要导入Excel中的图片
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题
    
    # 绘制第一个折线图:股价涨跌幅(%)
    plt.plot(final_table.index, final_table['pctChg'], label='股价涨跌幅(%)', color='red')
    plt.legend(loc='upper left')  # 设置图例位置
    
    # 绘制第二个折线图:10分钟成交量涨跌幅(%)
    plt.twinx()  # 生成双坐标轴
    plt.plot(final_table.index, final_table['chg_volume2(%)'], label='10分钟成交量涨跌幅(%)', linestyle='--')
    plt.legend(loc='upper right')
    
    # 设置图片标题,自动调整x坐标轴刻度的角度并展示图片
    plt.title('浦发银行')  # 设置标题
    plt.gcf().autofmt_xdate()  # 自动调整x坐标轴刻度的角度
    # plt.show()
    
    # 把图片放到excel中
    sht.pictures.add(fig, name='图1', update=True, left=500)
    
    wb.save(r'G:\code\股票量化分析10.xlsx')
    wb.close()
    app.quit()
    
    print('股票策略分析及Excel生成完毕')
    
    展开全文
  • dict = temp_dict[col + '_target_mean'].to_dict() data_train[col + '_target_mean'] = data_train[col].map(temp_dict) data_test_a[col + '_target_mean'] = data_test_a[col].map(temp_dict) # 其他衍生变量 ...
  • 类别型变量缺失值的处理三、特殊变量的处理1.类别变量2.日期/时间型变量四、构建流失行为的特征1.内部数据2.外部数据 引言   以下部分完整代码见Github:...
  • Tushare股票分析笔记-第一节 来自钢小伙 今天是辛丑年正月初四,终于下定决心,开始写一个股票分析系统。从后台到前端,全部一个人完成。由于是机械专业出身,代码写的实在水平有限,但是我会慢慢努力,我会把相应的...
  • %定义变量t1、t2,分别为每个切割的起点和终点,以及它们的计算方法 t1=(0:17)*sz+1; t2=(1:18)*sz; %%%%将字符单独切割出来,并且显示在同一个figure中 figure; k=0; %将目标区域从左至右开始切割提取(对每一个...
  • Linux变量

    2021-05-16 04:02:51
    变量:(大的分为环境变量与本的变量)本地变量:本地变量在用户现在的shell生命期的脚本中使用。例如,本地变量file-name="loop.doc",这个值只在用户当前shell生命期有意义。如果在shell中启动另一个进程或退出,此值...
  • 在汇编编译器编译时直接将变量名转换成内存地址,变量名并不占内存空间在编译的时候编译器会把程序中出现的所有变量名都换成相对内存地址,变量名不占内存变量名不占空间变量:用来标识(identify)一块内存区域,这块...
  • Linux中shell的变量介绍

    2021-05-16 01:20:02
    Linux中shell的变量介绍发布时间:2020-06-24 16:20:39来源:亿速云阅读:112作者:元一这期内容当中的小编将会给大家带来有关Linux中shell的变量介绍,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以...
  • 毕业论文的内容是利用机器学习算法对次新股进行量化投资。进行该研究首当其冲就是要下载相关数据,再此记录一下我利用Tushare下载股票数据的过程,分享给大家。我只是Python的初学者,所以程序中难免有贻笑大方之处...
  • 一个抽象类可以包含抽象方法,而抽象方法没有实现,所以抽象类不具备实际功能,只用于衍生子类。 final:声明该类不能被继承,即没有子类。不能通过扩展这个类来创建新的类。 extends:声明该类的父类,一个子类从其...
  • 电路基本变量

    2021-02-12 14:51:29
    电路中的基本变量为:电量、电流、电功、电功率、电压。 5个变量中,每2个变量之间都有相对应的函数关系,所以我们说电学中的变量四通八达。 课本中常用来分析的变量是:电压,电流,电功率。而工程设计中,这些变量...
  • tushare财经数据接口包 pip install tushare 作用:提供相关指定的财经数据 相关文档:Tushare -财经数据接口包 需求:股票分析 使用tushare包获取某股票的历史行情数据。 tushare财经数据接口包,基于该模块...
  • C语言内存管理二:变量存储类)1.程序中内存从哪里来1 1.程序中内存从哪里来1 4.5.1.1、程序执行需要内存支持 ()对程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序运行时需要内存来存储一些...
  • 需要衍生的信息—表12.需要衍生的信息—表23.数据清洗二、特征的分箱1.分箱的方法2.监督式分箱法:Best-KS3.卡方分箱法—ChiMerge4.无监督分箱方法三、WOE编码1.计算公式2.WOE编码的意义四、代码 一、构建信用风险...
  • 在RedHat及其衍生系统上安装Oracle 11gR1oracle版本:11.1.0.6.0redhat版本:RedHat EL4,5 Oracle EL 4,5 CentOS 4,5安装过程分以下四个步骤一,安装准备二,下载安装三,相关设置四,常见错误一,安装准备1,创建...
  • 变量/类变量签名添加m/s前缀,就是从这种命名方法衍生出来的。考虑匈牙利命名法的产生背景,我们可以大致了解这种方法的产生以及流行的原因:该方法产生与上世纪80年代左右,当时的IDE并没有现代IDE这样强大的功能...
  • 文章目录全局作用域模块作用域函数作用域块作用域词法...在任何函数、块或模块作用域之外定义的变量称为全局变量。可以从应用程序的任何地方访问全局作用域内的变量 模块作用域 函数作用域 块作用域 词法作用域 ...
  • 系统需要一些变量来提供他数据的存取(或者是一些环境的设定参数值,例如是否要显示彩色等等的),所以就有一些所谓的环境变量需要来读入系统中了。 显示环境变量HOME: echo $HOME 或者是 echo ${HOME} 若该变量...
  • 类、方法、成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ - public(公共的) √ √ √ √ -...
  • OpenCV Sobel Derivatives衍生物Sobel Derivatives衍生物目标理论索贝尔算子代码解释声明变量加载源图像减少噪音灰阶索贝尔算子将输出转换为CV_8U图像坡度显示结果结果 Sobel Derivatives衍生物 目标 在本教程中,您...
  • vue 衍生知识

    2021-05-15 20:37:26
    最终,router-link 会被渲染为 a 标签 组1 组2 绑定变量 除了在 router-link 中直接为 to 属性指定要切换的组件以外,也通过使用data数据绑定一个变量 <!-- 要切换的组件来自于变量所对应的值 --> 内容1...
  • 单个卡方检验流程 table(data$smoke,data$sex) s=chisq.test(data$smoke,data$...多个变量进行卡方检验循环 #性别是四格表的一个变量和其他比较 myFUN<- function(x){chisq.test(data[,"sex"],x ,correct = TRUE)}
  • Windows变量路径%SystemDrive%操作系统所在的分区号。如 C:%SystemRoot%操作系统根目录。如 C:\WINDOWS%windir%操作系统根目录。如 C:\WINDOWS%ALLUSERSPROFILE%相当于 C:\Documents and Settings\All Users%APPDATA...
  • 进程优先级 进程优先级:cpu资源分配的先后顺序 6.1查看系统进程 使用 ps -l UID : 代表执行者的身份 PID : 代表这个进程的代号 PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号 PRI :代表这个...
  • 最近看到粉丝向我提交的问题,他本想写一段程序,就是通过变量A获取变量B的地址并打印 代码如下: #include <stdio.h> int test(int a,int b){ int* p = &a; printf("%d",p+1); return 0; } ...
  • 通常根据模型的需要,类别型特征需要进行哑变量处理,即按照特征类别进行编码,一般一个类别为k的特征需要编码为一组k-1【避免引起多重共线性】个衍生变量,这样就可以表示特征内部所有的类别(将其中基准比较类设...
  • 简述java中的栈和堆,变量和对象的地址存放和绑定机制初学java的小白,很多人都搞不清楚java中堆和栈的概念,我们都知道计算机只能识别二进制字节码文件,如果分不清楚对象和变量在内存的地址分配,也就是堆和栈的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,417
精华内容 18,966
关键字:

衍生变量