我正在使用看起来像这样的数据集-
PERSON1 = [["Person1Id", "Rome", "Frequent Flyer", "1/2/2018"],["Person1Id", "London", "Frequent Flyer", "3/4/2018"],["Person1Id", "Paris", "Frequent Flyer", "2/4/2018"], ...]
PERSON2 = [["Person2Id", "Shenzen", "Frequent Flyer", "1/2/2018"],["Person2Id", "London", "Frequent Flyer", "2/6/2018"],["Person2Id", "Hong Kong", "Not Frequent Flyer", "1/3/2017"], ...]
PERSON3 = [["Person3Id", "Moscow", "Frequent Flyer", "1/2/2018"],["Person3Id", "London", "Frequent Flyer", "3/4/2018"],["Person3Id", "Paris", "Frequent Flyer", "2/4/2018"], ...]
...
TRAIN_X = [
PERSON1, PERSON2, PERSON3, ..., PERSONN
]
TRAIN_Y = [
1, 0, 1, ..., 1
]
根据训练数据,有些人属于1
类,有些人属于0
类。 (实际使用的数据数组更长,这是简化版本。)
我的问题是-给定这种数据结构-如何正确将其加载到Tensorflow中以训练神经网络系统?我已经使用了诸如Iris数据集,MNIST等更简单的数据集。我不知道如何处理像这样的更复杂的真实数据,而且我似乎找不到任何文档/资源/示例代码做类似的事情。
我认为这里的第一步是需要对数据进行平整,规范化等操作-但是,我不确定如何进行处理。
答案 0 :(得分:1)
您需要对该数据进行一些更重的预处理。神经网络无法直接处理文本数据,因此您需要进行一些嵌入。
根据特征向量的类型,您可能需要对数据进行某种类型的编码为数字by onehot or label encoding或将其转换为地理坐标(如果对任务有意义)。
您可能会对城市名称使用一键编码,因为它们是分类数据,但是您希望将有序数据(例如日期)转换为数字。 并考虑哪些数据对任务有用。例如。如果您要使用NN解决的问题是否使用了人员ID。
此外,在输入处理之后,您可能会拥有不同形状的张量,因此最好将输入拆分为多个变量(例如,如果您将某些特征编码为“一键通”,而有些则没有)。>
还要记住,您需要normalize inputs到网络,因此请相应地选择表示形式。
恐怕没有为此的即插即用解决方案。
答案 1 :(得分:0)
您似乎拥有分类数据。并假设这就是您想要的样子。
如果给定您的数据量,这可以用纯python进行预处理(例如,运行一次预处理并保存预处理的数据,而不是每次都进行重新处理)。这将意味着具有以下内容:
import numpy as np
def one_hot(index, max_dim):
return np.eye(max_dim)[index]
destinations = {
"Moscow": 0,
"London": 1,
# etc.
}
one_hot_destinations = {
k: one_hot(v, len(destinations))
for k, v in destinations.items()
}
def process_loc(loc):
return one_hot_destinations[loc]
# do some similar processing to other properties of a "PERSON"
# so that you represent them in a vector / scalar way then:
def process_person(person_item):
pid, loc, status, date = person
return np.concatenate(
[
process_pid(pid),
process_loc(loc),
process_status(status),
process_date(date)
],
axis=0)
TRAIN_X = [[process_person(item) for item in p] for p in PERSONS]
或者您可以使用tensorflow即时用C ++处理它
因此,您可以做的是table_lookup
,就像查看字典一样:
dictionary = tf.contrib.lookup.index_table_from_file(dictionary, num_oov_buckets=0)
您必须了解,鉴于给定的上下文和代码量,与MatějRačinský相比,我很难尝试进一步帮助您。例如,我们不知道您的下游任务是什么。
如果您想做一些与NLP相关的事情,也许您可以看一下我几个月前写的博客文章:Multi-label Text Classification with Tensorflow,其中包括使用table_lookup
进行数据预处理>