SAS中文论坛

标题: sas的函数表达以及化简能力 [打印本页]

作者: shiyiming    时间: 2006-12-5 12:21
标题: sas的函数表达以及化简能力
想使用基因表达式编程的算法,从数据中挖掘函数关系。大体思想和遗传算法类似,但进化操作的对象是函数表达式(例如a*b+c,当然这只是个简单例子)。

假设有一个数据集,数据集中的某几列值和某一列值中间存在着函数关系(或者可以用函数表达的规则规律),现在要挖掘出这个函数关系来。
一种类似遗传算法思想的算法就是,首先初始化生成一定数量的函数,用这些函数去匹配数据集中的数据,看匹配程度的情况,从中选择一些匹配程度较好的函数进行操作(交叉、变异等),生成新一批的函数。重复以上过程,直到某函数的匹配度满足提前设定的阀值条件,终止算法,得到这个函数。

现在的问题是,算法编写的过程中,如何表达这些函数式?直接的数学函数式在程序语言中是无法表达和操作的。比如在java语言中,就可以使用字符串“*+-abcd”来表示函数“(a + b)*(c - d)”运算。
但在sas中,能直接定义这样的字符串吗?不能的话,是不是可以定义一个数据集,比如定义一个7列的数据集,那么上面的字符串中每个字符可以依次存放在每一列。

data functions;
input s1 s2 s3 s4 s5 s6 s7;
cards;
* + - a b c d
;
run;

由于算法中表示函数的字符串都是定长的,新生成函数字符串时,只要往这个数据集中新添加列行就可以了,不会引起列数的变化。

初学sas,很多困惑的地方,希望这里的前辈高手们多多赐教,不甚感激。




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2