我试图在SAS基础上创建一个运行简单感知器的代码。 我想在每次迭代(或存储在表格中)中打印结果和目标,但是当我尝试打印y [i,]时出现错误:
proc iml;
use percept; read all var{x1 X2} into X;
read all var{Y} into Y;
W={0,0}; b=0; k=0; L=nrow(X); eta=.8; o=0;
print w b k L eta;
do step = 1 to 6;
mistakes=0;
do i=1 to L;
o=(X[i, ]*W + b);
if Y[i, ]*o <= 0 then do;
W = W + eta*(Y[i, ]-o)*X[i,]`;
b = b + eta*(Y[i, ]-o)*1;
k=k+1; mistakes=mistakes+1;
print o Y[i, ] W b k mistakes;
end;
end;
end;
我收到错误:
语法错误,期望以下之一:C,COLNAME,F,FORMAT, L,LABEL,R, ROWNAME,],|)。选项或参数无法识别,将被忽略。
我是否有其他表格可以打印目标?
非常感谢!
答案 0 :(得分:1)
每the documentation on PRINT,你需要这样做:
print(Y[i,])
这是因为它们会使[ ]
重载以表示格式,rownames / colnames等,这是相当愚蠢的(但可能是模仿其他语言?)。所以你只需要像这样包装(Y[i,])
。
这是一个愚蠢的例子。
proc iml;
use sashelp.class;
read all var{name,sex} into class;
read all var{height,weight,age} into classN;
y = mean(classN[,2]);
print class;
print (class[1:2,]);
print y (class[1:2,]);
quit;