SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 809|回复: 0
打印 上一主题 下一主题

sas的函数表达以及化简能力

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-12-5 12:21:48 | 只看该作者

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,很多困惑的地方,希望这里的前辈高手们多多赐教,不甚感激。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-3 23:46 , Processed in 0.069054 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表