Я обучил модель CNN
с Keras с df
из 921 rows x 10165 columns
Каждый ряд представляет собой образец с 10160
функциями. Затем я использовал предварительно обученную модель для прогнозирования.
Я удостоверился, что данные обучения были хорошо сбалансированы: около 50% образцов с меткой 0
, а остальные 50% с меткой 1
. Точность модели выглядит достойно, но проблема при прогнозировании.
Таким образом, входные данные выглядят так:
X = df.iloc[:,0:10160]
X = X.to_numpy()
X = X.reshape([X.shape[0], X.shape[1],1])
X_train_1 = X[:,0:10080,:]
X_train_2 = X[:,10080:10160,:].reshape(921,80)
Y = df.iloc[:,10163:10165]
Y = Y.to_numpy()
, и я предсказал количество выборок с предсказанной меткой '1' (для label_1
) с кодом:
prediction = pd.DataFrame(model.predict([X_train_1,X_train_2]))
prediction['label_1'] = ['0' if x < 0.5 else '1' for x in prediction['prob']]
prediction[prediction['label_1'] == '1'].shape[0]/921
Вторая строка кода вычисляет долю выборок с label_1 ==1
из всех выборок. Проблема заключается в том, что, учитывая, что входные данные имеют сбалансированное число 1
и 0
, я ожидал, что доля составляет около 50% или около того, но рассчитанная доля находится в диапазоне 0.08
~ 0.98
(если нет более экстремальный) с огромным несоответствием. Что могло пойти не так?