Получите то же значение для прогнозов нейронной сети, реализованной с использованием python

Я хочу предсказать, выживет ли данный пассажир или нет в титанической катастрофе. Я даю 0 невыжившим и 1 выжившим. Я использовал библиотеку обучения python scikit и реализовал следующую нейронную сеть для классификации. При прогнозировании я получаю только 0 для всех пассажиров. Может ли кто-нибудь помочь мне решить эту проблему.

from sklearn.neural_network import MLPClassifier

>>> clf = MLPClassifier(solver='lbgfs', alpha=1e-5,
...                     hidden_layer_sizes=(5, 2), random_state=1)
...
>>> clf.fit(train_data)                         
MLPClassifier(activation='relu', alpha=1e-05, batch_size='auto',
       beta_1=0.9, beta_2=0.999, early_stopping=False,
       epsilon=1e-08, hidden_layer_sizes=(5, 2), learning_rate='constant',
       learning_rate_init=0.001, max_iter=200, momentum=0.9,
       nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
       solver='lbgfs', tol=0.0001, validation_fraction=0.1, verbose=False,
       warm_start=False)

person Thamali Wijewardhana    schedule 17.09.2016    source источник


Ответы (2)


Возможно, это связано с форматом ваших обучающих данных, если вы используете 2 выходных слоя для двоичной классификации, вам нужно будет применить «одно горячее кодирование» для вашей выходной переменной, пробовали ли вы логистическую активацию, чтобы увидеть, возвращает ли она значения между 0 и 1?

person Luis Leal    schedule 17.09.2016

Этот тип проблемы обычно наблюдается, когда данные не нормализованы/стандартизированы (по крайней мере, я не вижу этого в вашем коде). Методы нейронных сетей очень чувствительны к разнице масштабов между различными функциями, поэтому хорошей практикой является стандартизация данных [среднее = 0 стандартное = 1] для всех столбцов.

person abhiieor    schedule 18.09.2016