以下是我的例子:
我有一家卖二手车的大商店。 我想编写一个可以预测未来汽车销售的程序。 我想用人工神经网络来分析历史数据并解决这个问题。 有多年的销售历史。
网络输入:
(说实话吧。)
网络输出:数天留在市场。
当我尝试设计神经网络时,我很快就发现了一个问题。 变量颜色,制造和传输与其他3个变量不同。 让我们说共有3种颜色:白色,黑色和红色。 3制造:丰田,福特和奔驰。 3传动:手动,自动和CVT。
好的,因为"颜色"不是数字,我不能输入"颜色"变量为整数。 将它作为字符串输入也看起来不是一个好主意。 所以,我决定给每种颜色一个" id"。白色为0,黑色为1,红色为2。 然而,红色不是黑色的两倍,红色不比白色更接近黑色...... 制造和传输也存在同样的问题。
我怎样才能让神经网络知道这个整数意味着一个ID,而不是连续的数字或数量?使用一些简单的代码更好。
答案 0 :(得分:3)
我们称之为分类变量,并且避免您描述的问题(红色不是黑色的两倍)的典型方法之一是使用一个热编码,因此对于具有K个可能值的变量,您将其编码为K位长二进制表示,如:
v = {red, black, white}
导致
red -> [1 0 0]
black->[0 1 0]
white->[0 0 1]
等等。所以你有二进制的逻辑特征"这个对象是红色的吗?"等等。