Вариация вывода логистической регрессии при использовании SMOTE

Я работаю над случаем логистической регрессии с дисбалансом целевой переменной. Чтобы исправить это, я использую SMOTE (метод синтетической передискретизации меньшинства), но каждый раз, когда я запускаю свою регрессионную модель, я получаю разные числа в моей матрице путаницы. Я установил параметры random_state при вызове SMOTE, а также логистической регрессии, но все равно безрезультатно. Даже мои функции одинаковы на каждой итерации. Однажды мне удалось получить лучшее значение для отзыва, равное 0,81, и значение AUC, равное 0,916, но они больше не появляются. В некоторых случаях значение ложноположительных и ложноотрицательных результатов очень сильно возрастает, указывая на то, что классификатор очень плохой.

Пожалуйста, объясните, что я делаю не так, ниже фрагмент кода.

# Feature Selection
features = [ 'FEMALE','MALE','SINGLE','UNDER_WEIGHT','OBESE','PROFESSION_ANYS',
            'PROFESSION_PROF_UNKNOWN']

# Set X and Y Variables
X5 = dataframe[features]

# Target variable
Y5 = dataframe['PURCHASE']

# Splitting using SMOTE
from imblearn.over_sampling import SMOTE
os = SMOTE(random_state = 4)

X5_train, X5_test, Y5_train, Y5_test = train_test_split(X5,Y5, test_size=0.20)
os_data_X5,os_data_Y5 = os.fit_sample(X5_train, Y5_train)
columns = X5_train.columns

os_data_X5 = pd.DataFrame(data = os_data_X5, columns = columns )
os_data_Y5 = pd.DataFrame(data = os_data_Y5, columns = ['PURCHASE'])

# Instantiate Logistic Regression model (using the default parameters)
logreg_5 = LogisticRegression(random_state = 4, penalty='l1', class_weight = 'balanced')

# Fit the model with train data
logreg_5.fit(os_data_X5,os_data_Y5)

# Make predictions on test data set
Y5_pred = logreg_5.predict(X5_test)

# Make Confusion Matrix to compare results against actual values
cnf_matrix = metrics.confusion_matrix(Y5_test, Y5_pred)
cnf_matrix


0 ответов

Другие вопросы по тегам