我有一个如下所示的数据集:
Feature 1 Feature 2 Feature 3 Feature 4 Feature 5 Class
Obj 2 2 2 8 5 1
Obj 2 8 3 3 4 2
Obj 1 7 4 4 8 1
Obj 4 3 5 9 7 2
这些行包含具有许多特征的对象。出于演示目的,我放置了 5 个特征,但每个对象大约有 50 个特征,最后一列是每个对象的类标签。
我想在这个数据集上创建并运行最近邻分类器算法并检索错误率。我已经设法让 NN 算法适用于每个特征,下面是一个简短的伪代码示例。对于每个特征,我遍历每个对象,根据其最近的邻居分配对象 j。
for i = 1:Number of features
for j = 1:Number of objects
distance between data(j,i) and values of feature i
order by shortest distance
sum or the class labels k shortest distances
assign class with largest number of labels
end
error = mean(labels~=assigned)
end
我遇到的问题是如何为多个特征制定 1-NN 算法。我将从我的数据集中选择特征 1,2 和 3。如果我将特征 5 添加到我的一组选定特征中,我想计算错误率。我想用 1NN 来解决这个错误。我会在我选择的特征中找到我所有特征 1-3 中最接近的值吗?
例如,对于我上面的数据集:
添加特征 5 - 对于特征 5 的对象 1,最接近的数字是特征 3 的对象 4。由于它的类标签为 2,我将把特征 5 的对象 1 分配给类 2。这显然是一个错误分类,但我会继续对特征 5 中的所有其他对象进行分类,并比较分配的值和实际值。
这是针对多个特征执行 1NN 的正确方法吗?