Максимизация классификации Corretc с помощью пульпыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Максимизация классификации Corretc с помощью пульпы

Сообщение Anonymous »

В Python я пытаюсь решить проблему линейной оптимизации с помощью пакета пульпы.
Я имею n непрерывных показателей и дихотомическая цель. Мне нужно выбрать подмножество индикаторов M и порог для каждого индикатора, чтобы, если по крайней мере, индикаторы P выше их порога, запись классифицируется как 1.
Проблема оптимизации должна определить эти переменные: < /p>
Число M переменной подмножества < /li>
Число P минимального индикатора, которого можно нарушить < /li>
Порог для каждой переменной < /li>
< /ul>
Окончательная область - неправильно классифицировать как 1 не более 10 0s цели, максимизируя классификацию 1s < /p>
В дальнейшем мой пример кода… Я не понимаю, почему он настраивает очень высокие пороговые значения, и никакие записи не классифицируются как 1. < /p>
import pandas as pd
import numpy as np
from imblearn.over_sampling import SMOTE
from pulp import LpMaximize, LpProblem, LpVariable, lpSum, value

# Sample data
np.random.seed(42)
data = pd.DataFrame(np.random.rand(1000, 10), columns=[f'X{i}' for i in range(10)]) # 10 continuous indicators
data['target'] = np.random.choice([0, 1], size=1000, p=[0.7, 0.3]) # Binary target (30% ones)

# Parameters
M = 5 # Number of selected indicators
S = 3 # Minimum number of indicators above threshold to classify as 1
max_false_positives = 100 # Maximum allowed misclassified 0s

# Define model
model = LpProblem("Indicator_Selection", LpMaximize)

# Decision variables
X = {i: LpVariable(f'X_{i}', cat='Binary') for i in range(data.shape[1] - 1)} # Indicator selection
T = {i: LpVariable(f'T_{i}', lowBound=-100, upBound=100, cat='Continuous') for i in range(data.shape[1] - 1)} # Thresholds
Y = {j: LpVariable(f'Y_{j}', cat='Binary') for j in range(len(data))} # Predicted labels

# Auxiliary binary variables to represent whether each indicator exceeds its threshold
Z = {(j, i): LpVariable(f'Z_{j}_{i}', cat='Binary') for j in range(len(data)) for i in X}

# Constraint: Select exactly M indicators
model += lpSum(X for i in X) = T, 0 otherwise)
M_large = 1 # Upper bound for continuous values
for j in range(len(data)):
for i in X:
model += Z[j, i] >= (data.iloc[j, i] - T) / M_large
model += Z[j, i]

Подробнее здесь: https://stackoverflow.com/questions/794 ... -with-pulp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Максимизация правильной классификации с помощью пульпы
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Максимизация правильной классификации с помощью пульпы
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Рассчитать кривую ROC, отчет о классификации и матрицу путаницы для задачи классификации по нескольким меткам.
    Anonymous » » в форуме Python
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение статуса предварительного разрешения в модели пульпы
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Модель пульпы неосуществима, но дает осуществимые результаты
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»