【问题标题】:k nearest neighbor in SAS: how to get the neighbor list for each row?SAS中的k最近邻居:如何获取每一行的邻居列表?
【发布时间】:2013-10-28 20:02:46
【问题描述】:

目前我正在使用 SAS 中的 proc discrim 对数据集运行 kNN 分析,但问题可能需要我获取表中每一行的前 k 个邻居列表,那么我该如何获取此列表来自 SAS??

感谢您的回答,但我正在寻找每个数据点的邻居列表,例如,如果我有数据集: 姓名 年龄 邮政编码 酒精 约翰 26 08439 是 凯茜 49 47789 没有 史密斯 37 90897 没有 汤姆 34 88642 是的

那么我需要列表:

命名邻居1 邻居2 约翰汤姆凯茜 凯茜汤姆史密斯 史密斯凯茜汤姆 汤姆·约翰·凯茜

我无法从 SAS 中找到此输出,我可以编写什么程序来获取此列表?谢谢!

【问题讨论】:

标签: machine-learning sas bigdata nearest-neighbor knn


【解决方案1】:

我不是 SAS 用户,但快速的网络查找似乎可以很好地解决您的问题:

据我所知,您不必自己实现它。歧视就够了。

来自http://www.sas-programming.com/2010/05/k-nearest-neighbor-in-sas.html的虹膜数据代码

ods select none;
proc surveyselect data=iris  out=iris2  
                  samprate=0.5  method=srs  outall;
run;
ods select all;

%let k=5;
proc discrim data=iris2(where=(selected=1))   
             test=iris2(where=(selected=0))
             testout=iris2testout
             method=NPAR k=&k 
             listerr crosslisterr; 
      class Species; 
      var SepalLength SepalWidth PetalLength PetalWidth; 
      title2 'Using KNN on Iris Data'; 
run; 

这里也有详细的描述: http://analytics.ncsu.edu/sesug/2012/SD-09.pdf

来自 sas 社区:

通过使用选项“METHOD=NPAR K=”让 PROC DISCRIM 使用非参数方法。注意不要同时使用“R=”选项,它对应于基于半径的最近邻法。还要注意 PROC DISCRIM 如何自动处理分类数据。有时,您可能希望提前将分类数据更改为度量坐标。由于 PROC DISCRIM 不会输出它在内部构建的 Tree,因此请使用“data= test= testout=" 选​​项对新数据集进行评分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-06
    • 2019-06-05
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2017-10-21
    • 2011-05-09
    相关资源
    最近更新 更多