私は SAS ユーザーではありませんが、簡単な Web ルックアップであなたの問題に対する良い答えが得られるようです:
私の知る限り、自分で実装する必要はありません。DISCRIMで十分です。
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 は内部で構築したツリーを出力しないため、"data= test= testout=" オプションを使用して新しいデータ セットをスコアリングします。