我有一段代码,其中包括:
var clusterCenters = [{"x": 1,"y": 1},{"x": 10,"y": 10}];
console.log(clusterCenters);
在 Chrome 26 中:
在 Firefox 21 中:
为什么会出现这个错误?
我猜错误必须在以下函数中。
function getKMeansInfo(k, mouseX, mouseY) {
// choose cluster centers
var clusterCenters = [{"x": 1,"y": 1},{"x": 10,"y": 10}];
console.log(clusterCenters);
for (iteration=0;iteration< 20;iteration++) {
// for each object, check which cluster is nearest
for (i=0; i<points.length; i++) {
var distMin = 1000000;
var clusterMin = 0;
for(j=0; j<k; j++) {
var dist = euklideanDist(clusterCenters[j], points[i]);
if (dist < distMin) {
distMin = dist;
clusterMin = j
}
}
points[i]["cluster"] = clusterMin;
}
// calculate center of cluster
var clusterSum = new Array(k);
for (i=0; i<k; i++) {
clusterSum[i] = {"x":0, "y":0, "n":0};
}
for (i=0; i<points.length; i++) {
clusterSum[points[i]["cluster"]]["x"] += points[i]["cluster"]["x"];
clusterSum[points[i]["cluster"]]["y"] += points[i]["cluster"]["y"];
clusterSum[points[i]["cluster"]]["n"] += 1;
}
for (i=0; i<k; i++) {
if (clusterSum[i]["n"] > 0) {
clusterCenters[i] = {
"x":clusterSum[i]["x"]/clusterSum[i]["n"],
"y":clusterSum[i]["y"]/clusterSum[i]["n"]};
}
}
}
return {"cluster":1, "radius":10};
}
完整源代码在GitHub 上。
编辑:只有完整的例子仍然在线。
也欢迎任何有关使用 JavaScript 的建议(我是 JavaScript 新手)。
我刚刚认识到在上面的示例中使用浮点数可以减少错误……但错误仍然存在。因为我从不通过“x”或“y”进行划分,而只通过“n”(并且我在划分之前检查 n 是否为 0)我不知道如何获得 NaN。