Python, Как использовать метрику Area Under Curve (AUC) в гиперпараметре Grid-поиска в Python с Keras? - PullRequest
0 голосов
/ 30 ноября 2019

Я решаю проблему двоичной классификации. «Точность» не является точной метрикой для двоичной классификации. Итак, я намерен использовать «Область под кривой» в гиперпараметрах Grid Search с Keras. Можно ли дать мне знать, как использовать метрику AUC в моем сеточном поиске

import timeit
start = timeit.timeit()


def DNN_model(activation_1='relu', activation_2='relu', 
                 neurons_input = 1, neurons_hidden_1=1,
                 optimizer='adam', loss = 'mse',dropout_rate = 0.2,
                 input_shape=(X_train.shape[1],)):
    model = Sequential()
    model.add(Dense(neurons_input, activation=activation_1, input_shape=input_shape, kernel_initializer='random_uniform'))
    model.add(Dropout(dropout_rate))
    model.add(Dense(neurons_hidden_1, activation=activation_2, kernel_initializer='random_uniform'))
    model.add(Dropout(dropout_rate))
    model.add(Dense(1, activation='sigmoid'))

    model.compile (loss = loss, optimizer=optimizer,, metrics=['accuracy'])

    return model

model = KerasClassifier(build_fn=DNN_model, epochs=20)

parameters = {'activation':['softmax', 'softplus', 'softsign', 'relu', 'tanh', 'sigmoid', 'hard_sigmoid', 'linear'],
              'loss' : ['mse', 'binary_crossentropy'],
              'activation' : ['relu' , 'tanh', 'sigmoid', 'hard_sigmoid', 'linear'],
              'dropout_rate' : [0.0 ,  0.2 , 0.4,  0.7, 0.9],
              'neurons' : [5, 10, 20, 50, 100],
              'optimizer' : ['SGD' , 'RMSprop' , 'Adagard', 'Adadelta' , 'Adam' , 'Adamax' , 'Nadam']}

clf = GridSearchCV(model, parameters)
clf.fit(X_SMOTE, y_SMOTE)


end = timeit.timeit()
print('Total time spent for hyperparameters: ', end - start)
...