我正在进行机器学习实验,而我正试图找出一个快速执行此功能的功能:
在0-99之间需要两个整数并重新构造二进制数组:
var binaries = convert(12, 33);
console.log(binaries) //outputs [0,1,0,1,1,0]
然后将 binaries
与其他两个二进制文件进行比较,看看它是否匹配得最好:
var 1 = [0,1,1,1,1,0] // 5 matches
var 2 = [0,0,0,0,0,0] // 3 matches, 1 wins!
第一个值将是fead in,另一个将随机更改,以便找到尽可能理想的值。理想意味着基于输入它将创建一个输出,尽可能经常从1和2中选择正确的输出。生成的数组的长度未知。如何转换工作?
答案 0 :(得分:0)
可能的解决方案如下:
var arrToTest = [1,1,1];
function intToBinaryArray(num){
var binary = num.toString(2);
var arr = [];
for (var i=0; i<binary.length; i++){
arr[i] = parseInt(binary.charAt(i));
}
return arr;
}
function binaryComparison(a,b){
var result = 0;
a.forEach(function(r,i){
if(r === b[i]){
result++;
}
})
return result;
}
console.log(
binaryComparison(arrToTest,intToBinaryArray(7)) + ' out of ' +
arrToTest.length + ' matched.'
);
您可以根据需要添加任意数量的阵列进行测试,然后您可以循环遍历它们。具有binaryComparison
的高值的那个将具有最佳匹配。
修改强> 我错过了部分比较部分,我稍后会补充一下。
<强> EDIT2:强> 添加了比较部分。