setGpFitnessFunc

语法

setGpFitnessFunc(engine, func, [funcArgs])
注:

社区版 License 暂不支持该函数,如需使用此功能,请联系技术支持。

详情

重置 GPLearn 引擎的适应度函数。

参数

engine 通过函数 createGPLearnEngine 创建引擎的返回对象。

func 替换后的适应度函数,可以是
  • 字符串类型标量,必须为 'mse', 'rmse', 'pearson', 'spearmanr', 'mae' 之一。
  • 用户自定义函数,至少包含两个入参,第一个参数代表因子计算结果,第二个参数代表预测值,如有其他参数,则通过 funcArgs 传递;函数的返回值必须是一个浮点型标量。自定义函数目前不支持复杂赋值、if、for 等语句,只支持 return 语句。return 值为支持的适应度函数和训练函数的组合,其中适应度函数需要手动写公式实现。例如:
    def f(x, y){
      return mean((x+y)*(x+y)-y*y)
    }

自定义的适应度函数,还可与辅助函数进行组合,从而实现在计算适应度前,对数据进行预处理。辅助函数如下所示

函数名

备注

clip(X,Y,Z)
zscore(x)
mad(X, [useMedian=false])
med(x)
mean(x)
corr(X,Y)
groupby(func, funcArgs, groupingCol)
std(X)
stdp(X)
skew(X)
kurtosis(X)
contextby(func, funcArgs, groupingCol, [sortingCol]) 仅支持 func 为辅助函数 rankzscore
rank(X, [ascending=true], [groupNum], [ignoreNA=true], [tiesMethod='min'], [percent=false], [precision]) 暂不支持设置参数 groupNum, ignoreNA, precision.

funcArgs 元组,其每个元素依次代表用户自定义的 func 中除因子计算结果和预测值外的其他参数。

例子

def myFitness(x, y, groupCOlA, groupColB) {
  return mean(abs(groupby(mean, x, groupCOlA) - groupby(mean, x, groupCOlA)))
}
setGpFitnessFunc(engine=myEngine, func=myFitness, funcArgs=[groupColA, groupColB])