衍生变量确定方法、装置、设备和存储介质
文献发布时间:2023-06-19 10:06:57
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种衍生变量确定方法、装置、设备及可读存储介质。
背景技术
随着互联网科技金融的不断发展,越来越多的技术(如分布式、区块链Blockchain、人工智能等)应用在金融领域,同时对金融风险的控制也提出了更高的要求。构造衍生变量是金融风险模型领域中常见的数据处理方法,由于其可以挖掘出新的变量,增强数据的维度,而在风控模型中被广泛应用。
现有技术中,风险建模人员往往通过Python语言编写衍生变量代码。然而,由于目前的风控系统大多是基于其他编程语言编写的,例如:JAVA语言。所以在风险建模人员通过Python语言编写衍生变量代码后,还需要由开发人员用JAVA语言复写衍生变量代码的逻辑,经风险建模人员进行人工验证后,再将用JAVA语言复写衍生变量代码部署于风控系统中,以获得各数据的衍生变量。但是,上述衍生变量代码的部署过程繁琐,造成获得衍生变量的效率较低。
发明内容
本发明的主要目的在于提供一种衍生变量确定方法、装置、设备和存储介质,旨在解决现有技术中部署衍生变量代码的过程繁琐,获得衍生变量的效率较低的技术问题。
为实现上述目的,本发明提供一种衍生变量确定方法,应用于第一编程语言的客户终端,客户终端部署有第二编程语言编写的衍生变量代码,该方法包括:
获取待处理数据;
将待处理数据转换为第一数据结构的第一数据,第一数据结构适用于第二编程语言;
根据衍生变量代码,对第一数据结构的第一数据进行变量衍生,生成第一数据的衍生变量,其中,衍生变量用于模型训练。
可选的,将待处理数据转换为第一数据结构的第一数据,包括:
将待处理数据转换为第二数据结构的第二数据,第二数据结构适用于第一编程语言;
将第二数据结构的第二数据转换为第一数据结构的第一数据。
可选的,将待处理数据转换为第二数据结构的第二数据,包括:
将通过互联网获取的待处理数据转换为第一编程语言的数据对象;
将第一编程语言的数据对象,转换为第二数据结构的第二数据。
可选的,将第二数据结构的第二数据转换为第一数据结构的第一数据,包括:
将第二数据结构的第二数据转换为第三数据结构的第三数据,其中,第三数据结构适用于第三编程语言;
将第三数据结构的第三数据转换为第一数据结构的第一数据。
可选的,将通过互联网获取的待处理数据转换为第一编程语言的数据对象,包括:
根据待处理数据的数据类型,获取待处理数据对应的映射代码,映射代码用于将待处理数据映射为第一编程语言的数据对象;
根据映射代码将待处理数据转换为第一编程语言的数据对象,其中,映射代码是根据待处理数据的数据类型生成的。
可选的,将第一编程语言的数据对象,转换为第二数据结构的第二数据,包括:
若允许使用内存数据库,将第一编程语言的数据对象存储至内存数据库,通过内存数据库输出第二数据结构的第二数据;
或者,
若禁止使用内存数据库,将第一编程语言的数据对象通过第一编程语言的反射机制,转换为第二数据结构的第二数据。
可选的,根据衍生变量代码,对第一数据结构的第一数据进行变量衍生,生成第一数据的衍生变量之后,还包括:
将衍生变量的数据结构转换为第二数据结构,第二数据结构适用于第一编程语言;
第二数据结构的衍生变量用于模型训练。
本发明还提供一种衍生变量确定装置,应用于第一编程语言的客户终端,所述客户终端部署有第二编程语言编写的衍生变量代码,所述装置包括:
获取模块,用于获取待处理数据;
处理模块,用于将待处理数据转换为第一数据结构的第一数据,第一数据结构适用于第二编程语言;
输出模块,用于根据衍生变量代码,对第一数据结构的第一数据进行变量衍生,生成第一数据的衍生变量,其中,衍生变量用于模型训练。
可选的,处理模块具体用于:将待处理数据转换为第二数据结构的第二数据,第二数据结构适用于第一编程语言;
将第二数据结构的第二数据转换为第一数据结构的第一数据。
可选的,处理模块具体用于:将通过互联网获取的待处理数据转换为第一编程语言的数据对象;
将第一编程语言的数据对象,转换为第二数据结构的第二数据。
可选的,处理模块具体用于:将第二数据结构的第二数据转换为第三数据结构的第三数据,其中,第三数据结构适用于第三编程语言;
将第三数据结构的第三数据转换为第一数据结构的第一数据。
可选的,处理模块具体用于:根据待处理数据的数据类型,获取待处理数据对应的映射代码,映射代码用于将待处理数据映射为第一编程语言的数据对象;
根据映射代码将待处理数据转换为第一编程语言的数据对象,其中,映射代码是根据待处理数据的数据类型生成的。
可选的,处理模块具体用于:若允许使用内存数据库,将第一编程语言的数据对象存储至内存数据库,通过内存数据库输出第二数据结构的第二数据;
或者,
若禁止使用内存数据库,将第一编程语言的数据对象通过第一编程语言的反射机制,转换为第二数据结构的第二数据。
可选的,处理模块还用于:在生成第一数据的衍生变量之后,
将衍生变量的数据结构转换为第二数据结构,第二数据结构适用于第一编程语言;
第二数据结构的衍生变量用于模型训练。
本发明还提供一种电子设备,电子设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序;
计算机程序被处理器执行时实现第一方面任一实施方式所述的衍生变量确定方法的步骤。
本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如第一方面任一实施方式提供的衍生变量确定方法的步骤。
本发明还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面任一实施方式提供的衍生变量确定方法的步骤。
本发明提供的衍生变量确定方法,应用于第一编程语言的客户终端,客户终端部署有第二编程语言编写的衍生变量代码,该方法包括:获取待处理数据,将待处理数据转换为第一数据结构的第一数据,第一数据结构适用于第二编程语言;根据衍生变量代码,对第一数据结构的第一数据进行变量衍生,生成第一数据的衍生变量,其中,衍生变量用于模型训练。由于直接将采用第二编程语言编写的代码部署于第一编程语言的客户终端中,再通过将待处理数据的数据结构转换为第二编程语言适用的数据结构,从而使得客户终端可以直接调用第二语言编写的代码对转换后的数据进行处理,上述过程无需由开发人员用第一编程语言复写衍生变量代码的逻辑,在简化衍生变量代码部署流程的同时,提高了获得衍生变量的效率。
附图说明
图1为本发明一实施例提供的应用场景示意图;
图2为本发明一实施例提供的衍生变量确定方法的流程示意图;
图3为本发明另一实施例提供的衍生变量确定方法的流程示意图;
图4为本发明又一实施例提供的衍生变量确定方法的流程示意图;
图5为本发明又一实施例提供的数据结构转换的流程示意图;
图6为本发明另一实施例提供的数据结构转换的原理示意图;
图7为本发明一实施例提供的衍生变量确定装置的结构示意图;
图8为本发明一实施例提供的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
构造衍生变量是金融风险模型领中一种常见的数据处理方法,是数据能够应用于风控模型必不可少的一个环节。一方面,由于原始数据一般是非结构化的数据格式,呈现分散分布的特点,再通过主键连接起来,此种原始数据无法直接传入风控模型进行使用;另一方面,原始数据往往存在大量冗余无效的数据,直接将其输入模型中进行使用,会降低模型的准确性。因此,需通过衍生变量处理成宽表的形式,去除原始数据中的冗余数据,才能够在风控模型中进行使用,并且获得更加准确的模型。
在现有技术中,构建衍生变量代码需要建模人员具备丰富的领域知识,而且通常使用较为灵活的语言构建衍生变量代码,例如:Python语言等,当在变量应用于生产时,再将其部署在风控系统中。
然而,由于目前的风控系统大多是基于其他编程语言编写的,例如:JAVA语言,以上述两种编程语言为例,在建模人员通过Python语言编写衍生变量代码后,还需要由开发人员用JAVA语言复写衍生变量代码的逻辑,经风险建模人员进行人工验证后,再部署于风控系统,从而通过复写逻辑的衍生变量代码获得衍生变量。但是,一方面,每一次更新风控系统中衍生变量都需要很长时间的开发周期,另一方面,复写的衍生变量代码的功能需要建模人员与开发人员发复测试校验。上述过程繁琐,耗费大量人力与时间,且造成获得衍生变量的效率较低。
有鉴于此,本发明提供一种衍生变量确定方法、装置、设备和存储介质,将由第二编程语言编写的衍生变量代码直接部署于基于第一编程语言编写的风控系统的客户终端中,在获取到原始数据之后,通过将原始数据的数据结构转换为第二编程语言适用的数据结构,使得客户终端可以直接调用第二语言编写的代码对转换后的数据进行处理,以获得原始数据的衍生变量。上述过程无需由开发人员用第一编程语言复写衍生变量代码的逻辑,可以在简化衍生变量代码部署过程的同时,提升获得衍生变量的效率。
图1为本发明一实施例提供的应用场景示意图。如图1所示,本场景包括客户终端100、数据库101、服务器102以及终端设备103。其中,客户终端100中运行有风控系统,该风控系统中部署有构建好的衍生变量代码,服务器102中有训练模型,用于根据衍生变量进行模型训练。
具体的,客户终端100分别与服务器102以及数据库101通信连接,用于将衍生变量发送至服务器102或者数据库101;服务器102与数据库101通信连接,用于服务器102从数据库101获取存储的衍生变量;客户终端100与终端设备103通信连接,用于客户终端100获取终端设备103发送的待处理数据。
需要说明的是,终端设备103为数据提供方,对于数据提供方的类型本发明不做具体限制,例如,数据提供方可以为其他银行终端。
一些场景中,风控系统是基于第一编程语言开发的,本发明对于第一编程语言不做具体限定,例如,第一编程语言可以为:JAVA编程语言、C编程语言等;衍生变量代码是基于第二编程语言编写的,本发明对于第二编程语言也不做具体限定,例如,第二编程语言可以为:Python编程语言。
实际应用中,在利用风控系统生成衍生变量时,风控系统作为程序的主动调用方,负责启动程序以及加载数据,以生成衍生变量。
具体的,客户终端100通过网络向终端设备103发送http请求,当终端设备103接收到客户终端100发送的请求后,通过网络将待处理数据发送至客户终端100中。
进一步的,客户终端100通过风控系统调用衍生变量代码,以通过衍生变量代码生成待处理数据对应的衍生变量。
更进一步的,将生成好的衍生变量输入至服务器102中,根据训练模型进行模型训练,其中,对于训练模型的类型,本发明实施例不做具体限制,示例性的,训练模型可以为预测模型。
在一种可选方案中,在生成衍生变量之后,还可以将其录入数据库101中进行存储,以在使用时方便调用,服务器102可以从数据库101中调取该衍生变量以进行模型训练。
本发明中,由于直接将采用第二编程语言编写的代码部署于第一编程语言的客户终端中,再通过将待处理数据的数据结构转换为第二编程语言适用的数据结构,从而使得客户终端可以直接调用第二语言编写的代码对转换后的数据进行处理,上述过程无需由开发人员用第一编程语言复写衍生变量代码的逻辑,在简化衍生变量代码部署流程的同时,提高了获得衍生变量的效率。
图2为本发明一实施例提供的衍生变量确定方法的流程示意图。该方法应用于第一编程语言的客户终端,该客户终端部署有第二编程语言编写的衍生变量代码,如图2所示,该衍生变量确定方法可以包括以下步骤:
S201、获取待处理数据。
需要说明的是,第一编程语言、第二编程语言为不同种类的编程语言,本发明对于第一编程语言、第二编程语言的具体类型不做具体限定,示例性的,在一些场景中,第一编程语言为JAVA编程语言,第二编程语言为Python编程语言,在其他应用场景中,第一编程语言、第二编程语言还可以是其他类型的编程语言,本申请的方案以第一编程语言为JAVA编程语言,第二编程语言为Python编程语言为例进行说明。
本步骤中,客户终端可以是任意部署有风控系统的终端,本发明实施例不做具体限制,例如,客户终端可以是银行终端。
在实际应用中,客户终端可以通过发送http请求至数据提供方,数据提供方通过网络将待处理数据发送至客户终端中,以获得待处理数据,对于数据提供方,本发明不做具体限制,例如,数据提供方可以为其他银行终端。
待处理数据也可以是任意种类的数据,本发明实施例不做特别限定,示例性的,以客户终端为银行终端为例,该待处理数据可以是用户的征信数据。需要说明的是,由于数据提供方不同,每个数据提供方提供的待处理数据的数据格式以及数据结构等不尽相同,因此,对于待处理数据的数据格式以及数据结构,本发明也不做具体限定。
可选的,在上述数据进行交互的过程中,可以将交互的待处理数据进行加密处理。例如,本步骤中,数据提供方可以将待处理数据进行加密后发送给客户终端,从而保证数据的安全性,满足隐私保护计算的需要。
S202、将待处理数据转换为第一数据结构的第一数据。
其中,第一数据结构适用于第二编程语言。
需要说明的是,本发明提供的衍生变量确定方法中,由于部署的衍生变量代码是基于第二编程语言编写的,而获取到的待处理数据的数据格式可能难以适用,因此,在获取到待处理数据后,需要将待处理数据的数据结构转换为第二编程语言兼容的数据结构,使得衍生变量代码能够正常运行。
具体的,以第二编程语言为Python语言为例,第一数据结构的第一数据可以为Python语言中Pandas数据库中的DataFrame数据结构的数据,本步骤中,当第二编程语言为其他类型的语言时,第一数据结构的第一数据为该语言对应的数据结构。
继续以上述为例,一方面,Pandas数据库不仅限于读取本地的离线文件,也可以在线读取数据库的数据,处理后再写回数据库中,从而实时的读取数据,能满在足金融、统计、社会科学等领域中大多典型用例的同时,增加衍生变量确定的灵活性。
另一方面,由于DataFrame数据结构是一种表格型数据结构,按一定顺序排列的多列数据组成,其单元格可以存放数值、字符串等多种数据类型的数据,能够满足不同数据类型的数据的处理需求。
S203、根据衍生变量代码,对第一数据进行变量衍生,生成第一数据的衍生变量。
其中,衍生变量用于模型训练。
一种可选的方案中,衍生变量代码可以为数据管理与分析语言(StatisticalAnalysis System,SAS)代码。
在实际应用中,衍生变量代码是根据待处理数据编写的,本发明中,可以通过多种方式编写衍生变量代码,本发明实施例不做特别限定。
以待处理数据为用户的征信数据为例,一方面,可以由建模人员根据征信数据中的交易次数、交易金额、交易日期等数据,结合建模经验,对以上信息进行求和、平均、计数等处理,从而编写衍生变量代码。
通过此方法,可以充分发掘待处理数据中的信息,可以根据需求设计衍生变量代码,从而提高衍生变量代码可靠性。
另一方面,可以由代码生成工具自动生成衍生变量代码,具体的,根据待处理数据的类型确定衍生变量代码的生成逻辑,根据生成逻辑生成衍生变量代码。
通过此方法,可以提升衍生变量代码的生成效率,从而提升获得衍生变量的效率。
进一步的,基于当前运行环境运行该衍生变量代码,对第一结构的第一数据进行变量衍生处理,生成第一数据对应的衍生变量,其中,当前运行环境可以为离线环境。
可选的,在生成衍生变量之后,一方面,可以将衍生变量直接发送至模型训练系统中,用于模型训练。
另一方面,还可以将衍生变量存储至数据库中,以供后续模型训练过程中的调用。
本发明实施例提供的衍生变量确定方法,应用于第一编程语言的客户终端,客户终端部署有第二编程语言编写的衍生变量代码,该方法包括:获取待处理数据,将待处理数据转换为第一数据结构的第一数据,第一数据结构适用于第二编程语言;根据衍生变量代码,对第一数据进行变量衍生,生成第一数据的衍生变量,其中,衍生变量代码是基于第二编程语言编写的,衍生变量用于模型训练。由于直接将采用第二编程语言编写的代码部署于第一编程语言的客户终端中,再通过将待处理数据的数据结构转换为第二编程语言适用的数据结构,从而使得客户终端可以直接调用第二语言编写的代码对转换后的数据进行处理,上述过程无需由开发人员用第一编程语言复写衍生变量代码的逻辑,在简化衍生变量代码部署流程的同时,提高了获得衍生变量的效率。
图3为本发明另一实施例提供的衍生变量确定方法的流程示意图。如图3所示,该衍生变量确定方法应用于第一编程语言的客户终端,客户终端部署有第二编程语言编写的衍生变量代码,该方法可以包括以下步骤:
S301、通过互联网获取待处理数据。
在实际应用中,客户终端可以通过发送http请求至数据提供方,数据提供方接收到请求后,再通过网络将待处理数据发送至客户终端中,以使得客户终端获取待处理数据,对于数据提供方,本发明不做具体限制,例如,数据提供方可以为其他银行系统的终端设备。
S302、将通过互联网获取的待处理数据转换为第一编程语言的数据对象。
为方便理解,以第一编程语言为JAVA语言为例进行说明,请参考图4,图4为本发明又一实施例提供的衍生变量确定方法的流程示意图。如图4所示,当获取到待处理数据后,通过互联网获取的待处理数据转换为第一编程语言的数据对象,其中,第一编程语言的数据对象为JAVA语言的数据对象。
需要说明的是,由于数据提供方不同,获得的待处理数据的数据格式也不尽相同,通过本步骤,可以将获得到的待处理数据转换为第一编程语言的数据对象,使得当前客户终端可以直接调用。下面结合步骤S3021、S3022对步骤S302的转换过程进行具体说明:
S3021、根据待处理数据的数据类型,获取待处理数据对应的映射代码。
其中,述映射代码用于将待处理数据映射为第一编程语言的数据对象,映射代码是根据待处理数据的数据类型生成的。
具体的,通过对象关系映射(Object Relational Mapping,ORM)技术,根据待处理数据的类型生成一套适用于http数据源与JAVA数据对象映射关系的映射代码,本发明实施例对于待处理数据的类型不做特别限定。示例性的,待处理数据的类型可以为:个人征信数据、企业征信数据等。
对应的,数据映射代码可以为:个人征信数据映射代码、企业征信数据映射代码。
进一步的,当通过http请求获得待处理数据后,确定待处理数据的类型,根据待处理数据的类型以确定数据映射代码。
示例性的,当待处理数据的类型为个人征信数据映射代码时,确定数据映射代码为个人征信数据映射代码。
S3022、根据映射代码将待处理数据转换为第一编程语言的数据对象。
进一步的,基于当前运行环境运行该数据映射代码,生成待处理数据对应的JAVA语言的数据对象,可以理解的是,当前运行环境可以为离线环境。
通过上述步骤,可以实现程序数据对象到第一编程语言的数据对象的转换,从而使得当前运行环境可以直接调用该数据对象。
S303、将第一编程语言的数据对象,转换为第二数据结构的第二数据。
在一种实施方式中,第二数据结构的第二数据适用于第一编程语言,具体的,当第一编程语言为JAVA语言时,第二数据结构的第二数据可以为JAVA语言中HashMap数据结构表示的数据集。
在实际应用中,HashMap数据结构的数据集可以表示为:HashMap
其中,外层的HashMap中每一个键值对表示一张表,即每个键值对都是“表名->表内容”的形式;内层的HashMap
在实际应用中,由于HashMap数据结构的数据集中,每个关键字key对应唯一的值value,在一些场景中,通过将JAVA语言的数据对象转换为HashMap数据结构的数据集的数据结构,可以通过数据中的关键字迅速访问到其对应的值,且该过程具有很快的访问速度,从而可以提升数据查询和修改的速度,进一步提升系统衍生变量确定的性能。
在实际应用中,将JAVA语言的数据对象转换为HashMap数据结构表示的数据集的方式由多种,下面结合步骤S3031至S3032进行详细说明:
S3031、判断是否允许使用内存数据库。
具体的,在获得第一编程语言的数据对象之后,需要判断当前数据处理环境是否允许使用内存数据库。
S3032、若允许使用内存数据库,将第一编程语言的数据对象存储至内存数据库,通过内存数据库输出第二数据结构的第二数据。
仍以上为例,请继续参考图4,在一种可选方案中,若当前运行环境允许使用内存数据库时,将JAVA语言的数据对象存储至内存数据库中,从内存数据库中获取出JAVA语言的数据对象中所有的表,将表整合为HashMap数据结构表示的数据集。
通过本方法,实现了数据在内存库中的缓存与管理,可以实现数据的可管理性,同时保证数据的安全性与可靠性。
S3033、若禁止使用内存数据库,将第一编程语言的数据对象通过第一编程语言的反射机制,转换为第二数据结构的第二数据。
在另一种可选方案中,仍以第一编程语言为JAVA语言为例,若当前运行环境禁止使用内存数据库时,通过JAVA语言的反射机制将JAVA语言的数据对象转换为HashMap数据结构表示的数据集。
其中,编程语言的反射机制是指编程语言在运行时动态获取类的属性,下面以JAVA语言的反射机制为例进行说明:
需要说明的是,JAVA语言的数据对象的类定义为:
主表类:
类成员变量1:当前表的字段数据;
类成员变量2:子表,其中,子表的结构与主表一样。
HashMap数据结构表示的数据集的定义为:
主表名->主表数据
子表名->子表数据
具体的,将JAVA语言的数据对象作为该反射机制的输入数据,通过获取JAVA语言的数据对象的类信息,以确定该数据对象是否为表对象。
进一步的,若确定该数据对象为表对象,获取该数据对象中的表名称,并遍历该数据对象的所有成员变量,将字段数据分在一起,组合成当前表的字段数据,根据当前表的所有字段数据,以组成HashMap数据结构表示的数据集。
更进一步的,若确定该数据对象为子表,则继续递归调用上述表处理逻辑,当访问完所有数据对象的成员变量后,结束递归调用。
通过第一编程语言的反射机制,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性,并且能改变它的属性,从而可以在程序运行中动态的加载进入,以增加程序的灵活性。
需要说明的是,在一些场景中,若第一编程语言为其他类型的编程语言,例如:C语言,则使用C语言的反射机制,以将C语言的数据对象转换为其对应的数据结构的数据集,本发明实施例对于转换过程不做具体限定。具体的,若第一编程语言为C语言,则第二数据结构的第二数据为dict数据结构表示的数据集,即本步骤为:将C语言的数据对象转换为dict数据结构表示的数据集。
S304、将第二数据结构的第二数据转换为第一数据结构的第一数据。
在实际应用中,由于第二数据结构的第二数据适用于第一编程语言,衍生变量代码是基于第二编程语言编写的,因此需要将第二数据结构的第二数据转换为第二编程语言适用的第一数据结构的第一数据,以实现衍生变量代码的调用。
请参考图5,图5为本发明又一实施例提供的数据结构转换的流程示意图。
仍以上为例,在生成HashMap数据结构表示的数据集之后,将其转换为Python语言适用的dict数据结构表示的数据集。下面结合步骤S3041、S3042对该数据转化过程进行详细说明:
S3041、将第二数据结构的第二数据转换为第三数据结构的第三数据。
其中,第三数据结构适用于第三编程语言,其中,第三编程语言与第一编程语言和第二编程语言均可以直接调用,本发明实施例对于第三编程语言的类型不做具体限定,示例性的,第三编程语言可以为C语言或者C++语言。
具体的,将HashMap数据结构表示的数据集转换为C语言或C++语言中dict数据结构表示的数据集。
本步骤中,C语言或C++语言中dict数据结构表示的数据集中的数据类型包括:str、dict、list数据类型。其中,上述数据类型分别对应HashMap数据结构表示的数据集的中的数据类型:String、HashMap、ArrayList数据类型。
根据对应关系,可以得出dict数据结构可以表示为:dict
其中,外层的dict中每一个键值对表示一张表,即每个键值对都是“表名->表内容”的形式;内层的dict
本步骤中,对于上述数据结构转换的方式,本申请实施例不做具体限定,例如,可以开发相应的数据结构转换代码,以实现第二数据结构的第二数据到第三数据结构的第三数据的转换。
S3042、将第三数据结构的第三数据转换为第一数据结构的第一数据。
进一步的,将第三编程语言中dict数据结构表示的数据集,转换为第二编程语言中dict数据结构表示的数据集。
需要说明的是,第二编程语言中dict数据结构表示的数据集可以表示为:dict
更进一步的,请继续参考图5,在获得dict数据结构表示的数据集之后,将数据集中每一张表转换成第一编程语言中第一数据结构的第一数据,例如,Python语言的Pandas数据库中的DataFrame数据结构的数据,具体的,可以开发相应的数据结构转换代码,以实现第三数据结构的第三数据到第一数据结构的第一数据的转换。
其中,此转换过程的原理及有益效果与图2所示实施例中的S202类似,具体可参考图2所示实施例,此处不再赘述。
本方案中,由于JAVA语言与Python语言之间没有相互调用的接口,然而,JAVA语言、Python语言与C语言或C++语言之间都可以通过加载动态链接库的方式直接调用,因此,通过将第二数据结构的第二数据转换为C语言或C++语言适用的第三数据结构的第三数据,再将第三数据结构的第三数据转换为第一数据结构的第一数据,从而可以实现基于JAVA语言的客户终端调用基于Python语言编写的衍生变量代码。
需要说明的是,在一些场景中,若第一编程语言为其他类型的编程语言,例如:C语言,则第二数据结构的第二数据为dict数据结构表示的数据集,此时不需要将其再转换为第三数据结构的第三数据,即直接将第二数据结构的第二数据转换为第一数据结构的第一数据,通过本方案,可以减少数据格式转换所花费的时间,解耦客户终端处理数据的压力。
S305、根据衍生变量代码,对第一数据结构的第一数据进行变量衍生,生成第一数据的衍生变量。
具体的,基于JAVA语言编写的客户终端通过调用Python解释器,从而运行基于Python语言编写的衍生变量代码,对第一数据结构的第一数据进行变量衍生,以生成第一数据的衍生变量。
下面结合具体实施例,对本发明中通过数据结构转换,从而实现JAVA语言的客户终端调用Python解释器,以生成衍生变量的过程进行说明:
请参考图4,首先,在获得第二数据结构的第二数据(JAVA语言适用的HashMap数据结构)后,通过数据结构转换代码将第二数据转换为C语言或者C++语言适用的dict数据结构的第三数据,再通过数据结构转换代码将第三数据转换为Python语言适用的dict数据结构的第一数据;
进一步的,客户终端通过setValue方法将dict数据结构的第一数据赋值到Python解释器中;
更进一步的,客户终端通过execute方法,执行Python解释器中的衍生变量代码,对dict数据结构的第一数据进行变量衍生,生成第一数据对应的衍生变量。
最后,客户终端通过getValue方法,从Python解释器中获取第一数据对应的衍生变量。
通过本方案,基于JAVA语言编写的客户终端可以通过C语言或者C++语言,把数据转换为Python语言适用的第一数据结构的数据,再从Java传给Python解析器,以实现对Python语言的衍生变量代码的调用,从而无需由开发人员用第一编程语言复写衍生变量代码的逻辑,可以在简化衍生变量代码部署过程的同时,提升获得衍生变量的效率。
S306、将衍生变量的数据结构转换为第二数据结构。
其中,第二数据结构适用于第一编程语言,第二数据结构的衍生变量用于模型训练。
具体的,请继续参考图5,步骤S305中输出的衍生变量的格式为dict数据结构表示的数据集,其适用于第二编程语言,由于本发明提供的客户终端的运行环境是由第一编程语言编写的,因此,需要将衍生变量的数据结构转换为第二数据结构,示例性的,将dict数据结构表示的数据集转换为HashMap数据结构表示的数据集,以实现衍生变量的输出。
需要说明的是,本步骤中,将dict数据结构表示的数据集转换为HashMap数据结构表示的数据集的过程与将HashMap数据结构表示的数据集转换为dict数据结构表示的数据集的过程及原理相同,此处不再赘述。示例性的,首先通过数据结构转换代码将dict数据结构(第一数据结构)表示的数据集转换为C语言或者C++语言适用的dict数据结构的数据(第三数据结构),再将dict数据结构的数据转换为HashMap数据结构表示的数据集(第二数据结构),从而输出HashMap数据结构表示的衍生变量的数据集。
进一步的,在生成衍生变量之后,一方面,可以将衍生变量直接发送至模型训练系统中,用于模型训练。
另一方面,可以将衍生变量存储至数据库中,以供后续模型训练中调用。
本发明实施例提供的方法,将第二数据结构的第二数据转换为第一数据结构的第一数据,通过第三编程语言作为接口,以实现第一编程语言与第二编程语言之间的互相调用。由于将第二编程语言编写衍生变量代码直接部署于第一编程语言编写的风控系统中,从而不需要通过第一编程语言重新编写衍生变量代码,可以在简化衍生变量代码部署过程的同时,提升获得衍生变量的效率。
另外,需要注意的是,本发明各实施例中的步骤的执行顺序并不限于上述序号所限定的顺序,本领域技术人员可以根据具体的应用需求和设计需求进行任意配置。
图7为本发明一实施例提供的衍生变量确定装置的结构示意图。如图7所示,该衍生变量确定装置应用于第一编程语言的客户终端,该客户终端部署有第二编程语言编写的衍生变量代码,该衍生变量确定装置700可以包括:
获取模块701,用于获取待处理数据;
处理模块702,用于将待处理数据转换为第一数据结构的第一数据,第一数据结构适用于第二编程语言;
输出模块703,用于根据衍生变量代码,对第一数据结构的第一数据进行变量衍生,生成第一数据的衍生变量,其中,衍生变量用于模型训练。
本实施例提供的衍生变量确定装置,可以用于执行前述任一方法实施例提供的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选的,处理模块702具体用于:将待处理数据转换为第二数据结构的第二数据,第二数据结构适用于第二编程语言;
将第二数据结构的第二数据转换为第一数据结构的第一数据。
可选的,处理模块702具体用于:
将通过互联网获取的待处理数据转换为第一编程语言的数据对象;
将第一编程语言的数据对象,转换为第二数据结构的第二数据。
可选的,处理模块702具体用于:将第二数据结构的第二数据转换为第三数据结构的第三数据,其中,第三数据结构适用于第三编程语言;
将第三数据结构的第三数据转换为第一数据结构的第一数据。
可选的,处理模块702具体用于:根据待处理数据的数据类型,获取待处理数据对应的映射代码,映射代码用于将待处理数据映射为第一编程语言的数据对象;
根据映射代码将待处理数据转换为第一编程语言的数据对象,其中,映射代码是根据待处理数据的数据类型生成的。
可选的,处理模块702具体用于:若允许使用内存数据库,将第一编程语言的数据对象存储至内存数据库,通过内存数据库输出第二数据结构的第二数据;
或者,
若当前禁止使用内存数据库,将第一编程语言的数据对象通过第一编程语言的反射机制,转换为第二数据结构的第二数据。
可选的,处理模块702还用于:在生成第一数据的衍生变量之后,将衍生变量的数据结构转换为第二数据结构,第二数据结构适用于第一编程语言;
第二数据结构的衍生变量用于模型训练。
图8为本发明一实施例提供的电子设备的结构示意图。如图8所示,本发明提供的电子设备可以包括:
存储器801、处理器802及存储在存储器801上并可在处理器802上运行的衍生变量确定程序;
衍生变量确定程序被处理器802执行时实现如前述任一实施例所述的衍生变量确定方法的步骤。
可选地,存储器801既可以是独立的,也可以跟处理器802集成在一起。
本实施例提供的电子设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有衍生变量确定程序,衍生变量确定程序被处理器执行时实现如前述任一实施例所述的衍生变量确定方法的步骤。
本发明实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如如前述任一实施例提供的衍生变量确定方法的步骤。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
- 衍生变量确定方法、装置、设备和存储介质
- 衍生变量生成方法、装置、终端设备及存储介质