神经网络/机器学习,如何将数据转化为数字



不知道怎么问这个问题,但它就在这里。因此,我一直在努力理解机器学习和神经网络的使用。

我有一个在 C# 中学习神经网络的简单示例。我明白代码在这一点上在做什么,它非常简单,我有一个"模式.csv"文件。它包含:x 输入、y 输入和 0 或 1 表示是或否。

0.11, 0.82, 0
0.13, 0.17, 0
0.20, 0.81, 0
0.21, 0.57, 1
0.25, 0.52, 1
0.26, 0.48, 1

这个模式.csv用于训练网络,所以如果我手动输入模拟x和y输入,它会给我一个1或0,与我有多少模式相关。

现在我的问题是如何将实际数据转换为 x 和 y 输入?使用图像,甚至是简单的垃圾邮件过滤器?我只是真的不明白如何将实际数据转换为两个浮点数。

我假设这将是使用这个简单的神经网络示例的正确方法,如果有人有任何想法或解释或很酷的方法,请随时发布任何相关的感谢!

搜索的关键字是编码。 有一篇好文章:

https://visualstudiomagazine.com/articles/2013/07/01/neural-network-data-normalization-and-encoding.aspx

这很好地解释了这个概念。 以下是一段摘录,演示了帮助训练的技巧:

独立分类数据的一个示例是预测变量 社区,可以采用"郊区"、"农村"或"城市"的价值。为 我建议使用通常称为 1-of-(C-1) 效应的数据 编码。效果编码并不明显,最好用 例:

   suburban = [ 0.0,  0.0,  1.0] 
   rural    = [ 0.0,  1.0,  0.0] 
   city     = [-1.0, -1.0, -1.0]

本文包含所谓的"数据规范化"的基本算法

您所要做的就是像

Lives in | IsMarried
Chicago  | 1
New York | 1
New York | 0
...

到:

Chicago | New York | IsMarried
1       | 0        | 1
0       | 1        | 1
0       | 1        | 0
...

我敢打赌还有其他技术,但这是我们本学期在监督机器学习讲座中使用的技术。

一旦你有了这个规范化矩阵,你就可以使用任何聚类/机器学习算法。

也看看这里。这篇文章解释了为什么需要这种编码/规范化。

那为什么不干脆用0代替芝加哥,用1代替纽约,等等。

这不是一个好主意,因为某些机器学习算法将不同的值处理为"距离"。因此,芝加哥(0)和纽约(1)(距离为1)不会像纽约和第100个城市(距离为99)那样获得相同的"不相似性评级"。

最新更新