首页 > 解决方案 > Brainjs返回错误数据

问题描述

我正在使用 Brain.js 来检测消息中的诈骗。现在,我正在传递一系列消息,brain.js 应该告诉我这是否是一个骗局。

我只用了 1 条消息进行了尝试,它奏效了。现在有了 2,它会无缘无故地返回非常高的数字。

我的代码: serializer.js:

const fixLengths = (data) => {

  let maxLengthInput = -1;
  for (let i = 0; i < data.length; i++) {
    if (data[i].input.length > maxLengthInput) {
      maxLengthInput = data[i].input.length;
    }
  }

  for (let i = 0; i < data.length; i++) {
    while (data[i].input.length < maxLengthInput) {
      data[i].input.push(0);
    }
  }

  return data;
}

const encode = d => {
  const newArr = [];

  for (let i = 0; i < d.length; i++) {
  d[i].split('').map(c => {
    newArr.push((c.charCodeAt(0) / 255))
  })
  }
  return newArr;
}

const encodeData = data => {

  return data.map( d => {

    return {
        input:  encode(d.input),
        output: d.output
      }
  })
}

const serialize = data => fixLengths(encodeData(data))

module.exports = {
  serialize:  serialize,
  encode:     encode,
  fixLengths: fixLengths
}

index.js:

const brain      = require('brain.js')
const trainData  = require('./src/training-data')
const serializer = require('./src/serializer')
const net        = new brain.NeuralNetwork()

net.train(serializer.serialize(trainData))

let messages = ["I just got tons of free money by clicking this link and going to this website: bux.gg. It really works!", "hi can I have free money please?"]

const output = net.run(serializer.encode(messages))

console.log(output) // Returning some crazy numbers like ".99 for scam", when it should be around .5

任何帮助都会很棒。谢谢!

标签: javascriptjsonoutputbrain.js

解决方案


推荐阅读