如何在机器学习中处理超过2维的输入数据

时间:2017-09-07 10:10:58

标签: machine-learning neural-network svm

这些天我正在学习ml课程。我发现示例输入数据是那样的(例如,恶性肿瘤分类):

/    size   gender    classification

m1  100     male      malignant

m2   50    female     benign

所有这些数据都可以放入m * n矩阵,其中m是样本数,n是特征数。

如果输入数据不是行和列的形式,该怎么办?例如,我想通过他的订单历史来预测客户是否是恶意的。输入数据的格式为:

我有多个客户:

[c1, c2, c3]

客户有多个订单:

[o1, o2, o3]

每个订单都有属性:

[orderDate, itemName. itemType, isPayed]

所以我想我不能把这些数据放到矩阵中。在程序代码中,它应该是一个三维数组。

如何处理这类数据?

2 个答案:

答案 0 :(得分:1)

也许你可以为每个订单使用不同的模型。如果客户不是基于该订单的恶意,则每个都应输出0,否则输出1。然后,使用多个投票以获得您的结果。

答案 1 :(得分:0)

您可以将整个订单集视为可变长度时间序列,并使用递归神经网络对该序列执行分类/预测。

e.g。客户1的时间步长可以是o1,o2,o3,而客户2的时间步长是o1,o2,o3,o4,o5。

每个时间步都有4个要素尺寸(您的订单属性)。客户1的全时序列输入看起来像这样(每列是一个时间步):

+--------------+--------------+--------------+--------------+ 
| o1.orderDate | o2.orderDate | o3.orderDate | o4.orderDate |
+--------------+--------------+--------------+--------------+ 
| o1.itemName  | o2.itemName  | o3.itemName  | o4.itemName  |
+--------------+--------------+--------------+--------------+ 
| o1.itemType  | o2.itemType  | o3.itemType  | o4.itemType  |
+--------------+--------------+--------------+--------------+ 
| o1.isPaid    | o2.isPaid    | o3.isPaid    | o4.isPaid    |
+--------------+--------------+--------------+--------------+

假设训练数据被正确标记,此设置还将发现在事件之间具有某种时间依赖性的欺诈。

看一下本教程。

https://r2rt.com/recurrent-neural-networks-in-tensorflow-iii-variable-length-sequences.html