我正在尝试使用Tensorflow进行分析,但我一直不确定。我试图修改自己的版本,并要求语句,甚至重构了knn,结果仍然无法解决undefined
的问题。
testLabels
应该是一个数组数组,所以我要从中获取行和美元值。
require("@tensorflow/tfjs-node");
const tf = require("@tensorflow/tfjs");
const loadCSV = require("./load-csv");
function knn(features, labels, predictionPoint, k) {
features
.sub(predictionPoint)
.pow(2)
.sum(1)
.pow(0.5)
.expandDims(1)
.concat(labels, 1)
.unstack()
.sort((a, b) => (a.get(0) > b.get(0) ? 1 : -1))
.slice(0, k)
.reduce((acc, pair) => acc + pair.get(1), 0) / k;
}
let { features, labels, testFeatures, testLabels } = loadCSV(
"kc_house_data.csv",
{
shuffle: true,
splitTest: 10,
dataColumns: ["lat", "long"],
labelColumns: ["price"]
}
);
features = tf.tensor(features);
labels = tf.tensor(labels);
const result = knn(features, labels, tf.tensor(testFeatures[0]), 10);
console.log("Guess", result, testLabels[0][0]);
我继续得到这个结果:
Guess undefined 1085000
我已经在所有位置记录了控制台,除了变量result
以外,什么都没有返回:
console.log("Guess", result, testLabels[0][0]);
所以问题似乎出在knn
算法本身上,但是我不知道它是什么。