Максимизация правильной классификации с помощью пульпыPython

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

Сообщение Anonymous »

В Python я пытаюсь решить проблему линейной оптимизации с помощью пакета пульпы. Мне нужно выбрать подмножество максимально m индикаторов M и порог для каждого индикатора, чтобы, если по крайней мере, индикаторы P выше их порога, запись классифицируется как 1.
Проблема оптимизации должна определить эти переменные: < /p >

, которые являются индикаторами, которые будут использоваться < /li>
Порог для каждой используемой переменной < /li>
< /ul >
n, m и p приведены. 1. < /p>
Вот мой пример кода. Я не понимаю, почему он устанавливает очень высокие пороговые значения, и никакие записи не классифицируются как 1.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 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Максимизация классификации Corretc с помощью пульпы
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Рассчитать кривую ROC, отчет о классификации и матрицу путаницы для задачи классификации по нескольким меткам.
    Anonymous » » в форуме Python
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение статуса предварительного разрешения в модели пульпы
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Модель пульпы неосуществима, но дает осуществимые результаты
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

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