【问题标题】:weka EuclideanDistanceweka 欧几里得距离
【发布时间】:2013-12-05 21:20:11
【问题描述】:

我有以下代码使用 weka.core.EuclideanDistance 计算 EuclideanDistance 距离,其中两个实例都是缺失值,如下所示

Instance first 都是缺失值:?,?,?,?

实例第二个都是缺失值:?,?,?,?

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 来自哪里,谁能告诉我?提前致谢!

【问题讨论】:

  • 我试图重现您的问题,我创建了一个“.arff”,其中包含仅包含这两个实例的四个属性。我也得到一个数值 (1.73) 但不是 4.0 。您的测试数据集是否包含两个以上的实例?
  • 谢谢 Walter,不是 4.0 而是 2.23606797749979,不管结果如何,我不知道我们可以从所有缺失的数据中获得价值吗?你能告诉我,结果是如何计算的吗?
  • 您找到答案了吗?我有兴趣!

标签: weka euclidean-distance


【解决方案1】:

k-Nearest Neighbors 算法中的缺失值通常按照以下标准处理:

对于名义属性:

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)

您可以在sourceWalter 提供的链接)中查看实现。

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 2015-07-15
    • 2014-02-04
    • 2021-10-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多