Как я могу использовать данные test_proportion в модели машинного обучения?

У меня есть данные с 4000 функциями CNN, и это проблема бинарной классификации. Все, что я знаю о тестовых данных, — это пропорции 1 и 0. Как я могу сказать своей модели, чтобы предсказывать тестовые метки, используя данные о пропорциях? (Например, есть способ сказать, что для достижения этих пропорций я дам этому экземпляру 0.)

Как я могу использовать его для повышения точности? В моем случае обучающие данные в основном состоят из 1 (85%) и 0 (15%). Однако в моих тестовых данных доля l указана как (%38). Так что это сильно отличается от обучающих данных.

Я немного поработал с балансировкой данных, и это помогло. Однако моя модель по-прежнему предсказывает 1 почти для всех данных. Это может произойти и из-за проблем с адаптацией.

Как предложил @birdwatch, я уменьшаю порог для значения 0 и пытаюсь увеличить количество меток 0 в прогнозе.

# Predicting the Test set results 
y_pred = classifier.predict_proba(X_test) 
threshold=0.3 
y_pred [:,0] = (y_pred [:,0] < threshold).astype('int') 

Раньше количество занятий было следующим:

 1 :   8906
 0 :   2968

После изменения порога теперь

1 :  3221
0 :  8653

Однако есть ли другой способ использовать test_proportions, который гарантирует результат?


person Ege    schedule 02.05.2020    source источник


Ответы (1)


Нет никакого разумного пути к этому. Это создаст странную предвзятость в модели. Одна вещь, которую вы можете сделать, это принять менее вероятный результат, только если он имеет достаточно высокий балл. Обычно вы бы использовали порог 0,5, но здесь вы можете взять, например. 0,7.

person birdwatch    schedule 02.05.2020
comment
@Ege, пожалуйста, обратите внимание, что обновление вопроса после полезного ответа было предложено таким образом, что этот ответ становится неактуальным, - это не то, как работает SO. Я любезно предлагаю вам принять ответ и открыть новый вопрос с новыми деталями (при необходимости вы всегда можете указать здесь ссылку). Более того, ясно, что конкретные результаты, которые вы получаете сейчас, зависят от конкретного выбора порога, поэтому вы можете немного поэкспериментировать и включить результаты в свой новый вопрос. Включите термин несбалансированность класса или несбалансированные данные, а также тег imbalanced-data. - person desertnaut; 02.05.2020