打印矩阵子集

时间:2014-07-10 23:33:39

标签: sas sas-iml

我试图在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,],|)。选项或参数无法识别,将被忽略。

我是否有其他表格可以打印目标?

非常感谢!

1 个答案:

答案 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;