【发布时间】:2017-09-06 07:20:05
【问题描述】:
Apache flink 具有计算欧几里得距离的设置库。我想使用相同的 API 在 n 维空间上进行距离计算。我有两个具有 3 个特征的数据集。
a = {0.1,0.3,0.8} b = {0.2,0.4,0.7}
如何使用 apache flink 计算这两个向量之间的距离。
【问题讨论】:
标签: java apache-flink euclidean-distance
Apache flink 具有计算欧几里得距离的设置库。我想使用相同的 API 在 n 维空间上进行距离计算。我有两个具有 3 个特征的数据集。
a = {0.1,0.3,0.8} b = {0.2,0.4,0.7}
如何使用 apache flink 计算这两个向量之间的距离。
【问题讨论】:
标签: java apache-flink euclidean-distance
这应该可以解决问题
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
final DataSet<double[]> a = env.fromElements(new double[]{0.1, 0.3, 0.8});
final DataSet<double[]> b = env.fromElements(new double[]{0.2, 0.4, 0.7});
a.cross(b).map(new MapFunction<Tuple2<double[],double[]>, Double>() {
final EuclideanDistance distance = new EuclideanDistance();
@Override
public Double map(Tuple2<double[], double[]> value) throws Exception {
return distance.compute(value.f0, value.f1);
}
})
.print(); // start execution and output result to STDOUT
这里我用org.apache.commons.math3.ml.distance.EuclideanDistance计算距离。
【讨论】: