下面是使用EuclideanDistance计算weka.core.EuclideanDistance距离的代码,其中两个实例都是缺失的值,如下所示
首先,所有缺失的值都是:?,?,?
例二是所有缺失的值:?,?,?
EuclideanDistance distance = new EuclideanDistance();
distance.setInstances(test);
Instance first = test.get(0);
Instance second = test.get(1);
double d = distance.distance(first, second);但是,当我运行代码时,我得到的结果是4.0,我不知道这4.0是从哪里来的,有人能告诉我吗?提前感谢!
发布于 2014-04-18 01:10:07
K-最近邻算法中的缺失值通常按照以下标准处理:
对于名义属性:
if isMissingValue(a) or isMissingValue(b), then
distance = 1对于数值属性:
if isMissingValue(a) and isMissingValue(b), then
distance = 1
if isMissingValue(a) and !isMissingValue(b), then
distance = max(b, 1-b)
if !isMissingValue(a) and isMissingValue(b), then
distance = max(a, 1-a)您可以检查来源中的实现(沃尔特提供的链接)。
https://stackoverflow.com/questions/20410954
复制相似问题