我有一个运行KNN分析的proc discriminim语句。当我设置k = 1然后它将所有类别分配(如预期的那样)。但是当k> 1它保留了一些未分配的观察结果(将类别设置为其他)。
我假设这是两个或更多类别的死锁投票的结果。我知道有办法解决这个问题,要么将随机的一个死锁票作为答案,要么把最近的僵局投票作为答案。
proc discriminim中是否提供此功能?你怎么告诉它如何处理死锁?
干杯!
答案 0 :(得分:1)
当最近邻居的数量是两个或更多时,您对“其他”类的观察分配由两个或多个指定类别的相同分配概率产生的假设是正确的。您可以通过指定PROC DISCRIM语句选项OUT = SASdsn来查看此信息,以写入程序对输入观察值进行分类的SAS输出数据集。该输出数据集包含分配给每个指定类的概率。例如,使用具有虹膜数据集的两个最近邻居(K = 2)产生五个观察,该过程被分类为不明确的,具有0.50的概率被分配给Versicolor或Virginica类。从输出数据集中,您可以选择这些模糊分类的观察值,并在随后的DATA步骤中将它们随机分配给这些类。或者,您可以将用于对这些模糊分类的观测值进行分类的变量值与每个类别的这些值的均值进行比较,可能是通过计算每个值的标准偏差标准化的平方距离+/-并指定观察到“最接近的”阶级。