机器学习处理每批中的新数据

时间:2017-08-07 14:47:09

标签: python machine-learning

我要处理几乎TB的数据。我有一个字段是视频链接到的标签列表。问题是有很多标签和一个视频信息链接到太多标签,如何在处理之前转换它(清理它)。 OnehotEncoding和所有其他算法都不适合这个算法。

示例

{"user_id":1, "vid_id":101, "name":"abc", "tags":["night", "horror"], "gender":"Male"}
{"user_id":2, "vid_id":192, "name":"xyz", "tags":["action", "twins"], "gender":"Male"}

等等

上面的json数据也有很多其他的参数。但我想考虑使用这个标签参数。 现在我想预测数据的性别。帮助我解决算法或想法。目前使用Python并使用spark加载大数据。

1 个答案:

答案 0 :(得分:0)

您可以将所有数据读入稀疏矩阵。下面的代码是基于您提供的简短数据示例构建的,并将生成一个稀疏字典,其中每个记录都是一行,每列是每个术语在该记录的标记列表中出现的次数。 vocabulary dict将在最终矩阵中提供术语与其列索引的映射。此外,在循环数据集计数标记时,使用结果变量构建单独的列表targets。最后,您应该可以使用mattargets来训练您的分类器。

idx_pointer = [0]
indices = []
mat_data = []
vocabulary = {}
targets = []
for d in data:
    targets.append(d['gender'])
    for t in d['tags']:
        index = vocabulary.setdefault(t, len(vocabulary))
        indices.append(index)
        mat_data.append(1)
    idx_pointer.append(len(indices))

mat = scipy.sparse.csr_matrix((mat_data, indices, idx_pointer), dtype=int)

使用您提供的示例输入,密集输出将是如下矩阵。

night    horror    action    twins
1        1         0         0
0        0         1         1