2016-01-16 11 views
5

Sto eseguendo il rilevamento degli argomenti con l'apprendimento supervisionato. Tuttavia, le mie matrici sono di dimensioni molto grandi (202180 x 15000) e non riesco a inserirle nei modelli che voglio. La maggior parte della matrice è composta da zeri. Funziona solo la regressione logistica. C'è un modo in cui posso continuare a lavorare con la stessa matrice ma consentire loro di lavorare con i modelli che voglio? Come posso creare le mie matrici in un modo diverso?Come posso gestire enormi matrici?

Ecco il mio codice:

import numpy as np 
import subprocess 
from sklearn.linear_model import SGDClassifier 
from sklearn.linear_model import LogisticRegression 

from sklearn import metrics 

def run(command): 
    output = subprocess.check_output(command, shell=True) 
    return output 

carico Vocabolario

f = open('/Users/win/Documents/wholedata/RightVo.txt','r') 
    vocab_temp = f.read().split() 
    f.close() 
    col = len(vocab_temp) 
    print("Training column size:") 
    print(col) 

Crea treno Matrix

row = run('cat '+'/Users/win/Documents/wholedata/X_tr.txt'+" | wc -l").split()[0] 
print("Training row size:") 
print(row) 
matrix_tmp = np.zeros((int(row),col), dtype=np.int64) 
print("Train Matrix size:") 
print(matrix_tmp.size) 

label_tmp = np.zeros((int(row)), dtype=np.int64) 
f = open('/Users/win/Documents/wholedata/X_tr.txt','r') 
count = 0 
for line in f: 
    line_tmp = line.split() 
    #print(line_tmp) 
    for word in line_tmp[0:]: 
     if word not in vocab_temp: 
      continue 
     matrix_tmp[count][vocab_temp.index(word)] = 1 
    count = count + 1 
f.close() 
print("Train matrix is:\n ") 
print(matrix_tmp) 
print(label_tmp) 
print("Train Label size:") 
print(len(label_tmp)) 

f = open('/Users/win/Documents/wholedata/RightVo.txt','r') 
vocab_tmp = f.read().split() 
f.close() 
col = len(vocab_tmp) 
print("Test column size:") 
print(col) 

matrice di test Marchio

row = run('cat '+'/Users/win/Documents/wholedata/X_te.txt'+" | wc -l").split()[0] 
print("Test row size:") 
print(row) 
matrix_tmp_test = np.zeros((int(row),col), dtype=np.int64) 
print("Test matrix size:") 
print(matrix_tmp_test.size) 

label_tmp_test = np.zeros((int(row)), dtype=np.int64) 

f = open('/Users/win/Documents/wholedata/X_te.txt','r') 
count = 0 
for line in f: 
    line_tmp = line.split() 
    #print(line_tmp) 
    for word in line_tmp[0:]: 
     if word not in vocab_tmp: 
      continue 
     matrix_tmp_test[count][vocab_tmp.index(word)] = 1 
    count = count + 1 
f.close() 
print("Test Matrix is: \n") 
print(matrix_tmp_test) 
print(label_tmp_test) 

print("Test Label Size:") 
print(len(label_tmp_test)) 

xtrain=[] 
with open("/Users/win/Documents/wholedata/Y_te.txt") as filer: 
    for line in filer: 
     xtrain.append(line.strip().split()) 
xtrain= np.ravel(xtrain) 
label_tmp_test=xtrain 

ytrain=[] 
with open("/Users/win/Documents/wholedata/Y_tr.txt") as filer: 
    for line in filer: 
     ytrain.append(line.strip().split()) 
ytrain = np.ravel(ytrain) 
label_tmp=ytrain 

carico sorvegliata Modello

model = LogisticRegression() 
model = model.fit(matrix_tmp, label_tmp) 
#print(model) 
print("Entered 1") 
y_train_pred = model.predict(matrix_tmp_test) 
print("Entered 2") 
print(metrics.accuracy_score(label_tmp_test, y_train_pred)) 

risposta

5

È possibile utilizzare una particolare struttura dati disponibili nel scipy pacchetto chiamato matrice sparsa: http://docs.scipy.org/doc/scipy/reference/sparse.html

Secondo il definition:

Una matrice sparsa è semplicemente un matrice con un numero elevato di valori zero. Al contrario, una matrice in cui molte o molte voci sono diverse da zero si dice che sia densa. Non ci sono regole rigide per ciò che costituisce una matrice sparsa, quindi diremo che una matrice è scarsa se c'è qualche vantaggio nello sfruttare la sua scarsità. Inoltre, esistono una varietà di formati di matrice sparse progettati per sfruttare diversi pattern di sparsità (la struttura di valori diversi da zero in una matrice sparsa) e diversi metodi per accedere e manipolare le voci della matrice.

Problemi correlati