Получите глубокий результат обучения между 0 и 1

1

Я новичок в глубоком обучении. Мои данные обучения содержат 3121 записей и 137 входных переменных. Эти 137 переменных, которые я получил после разработки функций из исходных 2K переменных.

Поэтому я выполнил стандартизацию переменной между 0 и 1 и затем использовал следующую модель

model.add(Dropout(0.2, input_shape=(136,)))

model.add(keras.layers.Dense(15,kernel_initializer='normal',activation='sigmoid',kernel_constraint=maxnorm(3)))
#model.add(Dense(60, kernel_initializer='normal', activation='relu', kernel_constraint=maxnorm(3)))

model.add(keras.layers.Dense(30,kernel_initializer='normal',activation='sigmoid',kernel_constraint=maxnorm(3)))
model.add(keras.layers.Dense(15,kernel_initializer='normal',activation='sigmoid',kernel_constraint=maxnorm(3)))
model.add(keras.layers.Dense(1,kernel_initializer='normal',activation='linear',kernel_constraint=maxnorm(3)))
model.compile(loss='mse',optimizer='adam')
model.fit(x,y,epochs=100,shuffle=True,verbose=2)

Поскольку моя цель - получить minimu MSE, поэтому я использовал loss = 'mse'.My output varable в моих тестовых данных содержит значение между 0 и 1, например 0.35. Но после установки модели я получаю прогнозируемый результат как 0 & 1 Можете ли вы предложить мне, что я должен попытаться получить прогнозируемый результат между 0 и 1?

также попытался активировать функцию как "relu" в моем скрытом слое и сигмоиде в выходном слое. Но все же только 0 и 1 на моем выходе

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

y_pred=model.predict_classes(x_test)
pred=pd.DataFrame(y_pred,columns=['predicted'])
pred.predicted.unique()
  • 0
    Чтобы вернуть вероятность прогнозирования модели для проблемы двоичной классификации, вам нужно использовать model.predict_prob (test_data) вместо model.predict_classes (test_data)
  • 0
    Я бы поменял все активации на ReLU и активацию на последнем выходе на сигмоид, который ограничен между 0 и 1.
Теги:
deep-learning

1 ответ

1
Лучший ответ

Используйте model.predict_proba(x_test) вместо model.predict_classes(x_test)

Использование:

y_pred=model.predict_proba(x_test)

Интерпретировать y_pred:

Вы имеете дело с проблемой двоичной классификации (Да (1) или Нет (0)). Предположим, что каждый экземпляр ввода имеет функции K.

Затем,

y_pred[0] = [Input feature 0,Input feature 1,...Input feature K-1] y_pred[1] = [probability of each instance belonging to class 1]

следовательно

1- y_pred[1] возвращает вероятность для класса 0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню