2017-08-07 33 views
0

我有近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數據具有許多其他PARAMS太。但我想考慮使用這個標籤參數。 現在我想預測數據的性別。用算法或想法幫助我。目前使用Python並使用spark來加載大數據。

+0

你能提供一個你期望清理過的'標籤'輸出看起來像什麼樣子的例子嗎? – vealkind

+0

我的標記重複如'java','JAVA','Java'。我想在培訓前清理數據。如果我使用NeuralNetwork,我需要將所有內容都轉換爲數字。所以這些就是例子。 @vealkind –

回答

0

您可以將所有數據讀入稀疏矩陣。下面的代碼是基於您提供的簡要數據示例構建的,並且將生成一個稀疏字典,其中每條記錄是一行,每列是每條術語出現在該記錄的標籤列表中的次數。字典將在最終矩陣中提供術語到其列索引的映射。此外,在循環數據集的同時對變量進行計數時,單獨的列表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