如何处理不代表数量的数字

时间:2017-02-14 19:40:50

标签: machine-learning neural-network artificial-intelligence deep-learning

以下是我的例子:

我有一家卖二手车的大商店。 我想编写一个可以预测未来汽车销售的程序。 我想用人工神经网络来分析历史数据并解决这个问题。 有多年的销售历史。

网络输入:

  • 制作年份
  • 制造
  • 颜色
  • 传输
  • 英里

(说实话吧。)

网络输出:数天留在市场。

当我尝试设计神经网络时,我很快就发现了一个问题。 变量颜色,制造和传输与其他3个变量不同。 让我们说共有3种颜色:白色,黑色和红色。 3制造:丰田,福特和奔驰。 3传动:手动,自动和CVT。

好的,因为"颜色"不是数字,我不能输入"颜色"变量为整数。 将它作为字符串输入也看起来不是一个好主意。 所以,我决定给每种颜色一个" id"。白色为0,黑色为1,红色为2。 然而,红色不是黑色的两倍,红色不比白色更接近黑色...... 制造和传输也存在同样的问题。

我怎样才能让神经网络知道这个整数意味着一个ID,而不是连续的数字或数量?使用一些简单的代码更好。

1 个答案:

答案 0 :(得分:3)

我们称之为分类变量,并且避免您描述的问题(红色不是黑色的两倍)的典型方法之一是使用一个热编码,因此对于具有K个可能值的变量,您将其编码为K位长二进制表示,如:

v = {red, black, white}

导致

red -> [1 0 0]
black->[0 1 0]
white->[0 0 1]

等等。所以你有二进制的逻辑特征"这个对象是红色的吗?"等等。