FAQ > 金融建模 > 第三方交互 > Python

Q:tspy_utils与sklearn接口使用说明    

  • tspy_utils与sklearn接口使用说明详情附件:tspy_utils与sklearn接口使用说明2023-07-10.pdf
    摘要:
    1、本文档中介绍的是两个天软调用python方法的单元工具包,分别为tspy_utils与sklearn。
    2、由于是调用第三方接口的实现,所以在天软平台中相关代码都必须是本地执行。
    3、在调用之前,需要做相关的配置:
      本接口依赖于TSL与Python交互,交互配置请查看:FAQ:2019-05-08-应用专题-第三方交互07:天软平台和PYTHON的交互

    tspy_utils接口使用说明
     1、tspy_utils是一个单元工具包,调用该单元内的方法时,需要在程序首行进行声明。如:uses tspy_utils;
     2、tspy_utils接口是使用的TSL调python的相关模型封装的,方便调用python代码
      比如call_py_func模型可以直接调用python指定模块中的函数
    常用方法使用范例
    call_py_func
    定义:call_py_func(module:String or Python Obj,func_name:String,params_arr:Array):any
    说明:对pycall的以参数数组调用方式进行封装,如果运行状态返回值错误则报错
    参数
     module:字符串,模块名,或者获取的Python对象
     func_name:字符串,函数名
     params_arr:数组,调用函数时的参数组成的数组,字符串下标表示命名参数,调用时如果不给参数,表示取属性,给nil表示无参数调用函数
    返回:any,所调用函数的返回值
    范例:调用python函数获取指定范围生成的随机整数
      例如调用python中numpy模块中的randint函数,其在python中的具体定义如下:
      定义:numpy.random.randint(low,high:int,size:int or tuple of ints,dtype) :int/array
      说明:根据参数中所指定的范围生成随机 整数。
      参数:
       low: int 生成的数值的最小值(包含),默认为0,可省略。
       high: int 生成的数值的最大值(不包含)。
       size: int or tuple of ints 随机数的尺寸, 默认是返回单个,输入 10 返回 10个,输入 (3,4) 返回的是一个 3*4 的二维数组。(可选)。
       dtype:想要输出的结果类型。默认值为int。(可选)。
      返回:随机生成一个整数或整数数组。
      在天软中调用该python函数如下:
     uses tspy_utils;
     return call_py_func('numpy.random','randint',array('high':9,'low':6));
     //7

    sklearn接口使用说明
     sklearn接口主要实现的是在TSL中调用python中的sklearn模块中的方法,交互的过程使用的是tspy_utils单元中的接口。
    接口命名:sklearn_interface_版本号,版本号区分到二级,目前支持0.19到1.2版。
      例如,本机电脑中安装的python下,sklearn(sklearn.__version__)的版本号为1.2.1,则应使用接口sklearn_interface_1_2
    sklearn接口封装是对类的接口进行封装,接口类的成员函数接口跟python原本的接口名一致,参数只有一个,表示调用该成员函数的参数组成的数组,字符串下标表示命名参数。
    sklearn相关介绍:https://scikit-learn.org/stable/
    使用范例
    线性回归的范例:本地执行该脚本
    uses sklearn_interface_1_2; //注意,要使用对应版本号的接口
    obj := new LinearRegression();
    obj.fit_intercept := false;
    obj.fit(array('X':x,'y':y));
    obj.coef_.tolist();
    writeln(tostn(obj.predict(array(x)).tolist()|y));