Классификатор логистической регрессии в Керасе - PullRequest
0 голосов
/ 12 июня 2018

Я тренирую 2000 классификаторов логистической регрессии с использованием керас.Входные данные для каждого классификатора:

для обучения: векторы: 8250X50, метки: 8250

для проверки: 2750X50, метки: 2750

для тестирования: 3000X50, метки:3000

для каждого классификатора, я сохраняю прогнозы и оценки (оценка Каппа, точность ..)

Код очень медленный, для обучения первых 600 классификаторов требуется три часа.

Я использовал следующий код

def lg_keras2(input_dim,output_dim,ep,X,y,Xv,yv,XT,yT,class_weight1):

    model = Sequential() 
    model.add(Dense(output_dim, input_dim=input_dim, activation='sigmoid'))
    #model.summary()
    model.compile(optimizer='adam', loss='binary_crossentropy',metrics = ["accuracy",mcor,recall, f1]) 
    result = model.fit(X, y, epochs=ep, verbose=0, batch_size = 128, class_weight = {0 :class_weight1[0]  , 1:class_weight1[1] } ,validation_data = (Xv, yv)) 
    test = model.evaluate(XT, yT, verbose=0) 
    kappa_Score=(cohen_kappa_score( yT,(model.predict_classes(XT))))

    return model,result,test,kappa_Score

После этого я обучил 2000 классификаторов следующим образом:

from sklearn.utils import class_weight
from sklearn.metrics import cohen_kappa_score
directionsLGR=[]
scores=[]
predictions=[]
kappa_Score_all=[]
for i in  range(0,2000):

    Class_weight = class_weight.compute_class_weight('balanced',
                                             np.unique(pmiweights_Train[:,i]),
                                             pmiweights_Train[:,i])

    #start_time = time.time()
    model,results,test,kappa = lg_keras2(50,1,30,mdsTrain, pmiweights_Train[:,i],mdsVal, pmiweights_val[:,i],mdsTest,pmiweights_Test[:,i],Class_weight)
    #print("--- %s seconds ---" % (time.time() - start_time))
    weights=np.array(model.get_weights())[0].flatten()
    directionsLGR.append(weights)
    predictions.append(model.predict_classes(mds))
    kappa_Score_all.append(kappa)
    scores.append(test)

Могу ли я что-нибудь сделать, чтобы ускорить этот процесс.Буду признателен за любые предложения

...