如何为 knn 分类器找到两组数据的决策边界

Posted

技术标签:

【中文标题】如何为 knn 分类器找到两组数据的决策边界【英文标题】:How to find the decision boundary for two set of data for knn classifier 【发布时间】:2015-01-20 22:46:46 【问题描述】:

我有两套,

N1 = 10; N2 = 15; % Class sizes
set1=[0.333; 0.509; 0.607; 1.172; 0.275; 0.762; 0.850; 0.920; 0.556; -0.046];
set2=[ 0.295; -0.203; -0.097; 0.633; 0.147; 0.356; 0.235; -0.054; -0.024; 0.377; -0.180; 0.512; 0.428; -0.129; 0.094];

我想找到 (3,1) 最近邻分类器的决策边界和决策区域。任何想法,如何做到这一点?

【问题讨论】:

【参考方案1】:

为了简单地可视化决策边界和决策区域,暴力测试您感兴趣的整个领域通常是令人满意的。

具体来说,您将定义一组跨越您感兴趣的领域的离散点,您将逐步评估每个点,评估该点属于哪个类,然后绘制结果。

可能是这样的:

%define your domain of interest
dx = 0.001;           
x = [-1.0:dx:2.0];

%step through each point and decide which class it is part of
x_class = NaN*ones(size(x));
for I=1:length(x)
    %apply your KNN decision algorithm here
    %it outputs a 1 for class 1, or it outputs a 2 for class 2
    x_class(I) = my_KNN_algorithm(set1,set2,rules,x(I));
end

%plot results
plot(x,x_class);
hold on;
plot(set1,ones(size(set1)),'ro');
plot(set2,2*ones(size(set2)),'gs');
xlabel('Value');
ylabel('Class');
legend('Test Point','Given Set 1','Given Set 2')

【讨论】:

以上是关于如何为 knn 分类器找到两组数据的决策边界的主要内容,如果未能解决你的问题,请参考以下文章

如何为训练观察实现具有自定义权重的 KNN 分类器

基于 KNN 算法的贝叶斯分类器

kNN 是统计分类器吗?

一种轻量且准确的分类器,可在来源有限的设备上使用

选择最适合的分类器算法

绘制文本分类的决策边界