Привет, у меня есть следующая проблема:
При проведении логистической c регрессии из sklearn.linear_model.LogisticRegression моя модель log_reg предсказывает только 1 (отток = покупка совершена) и нет 0 (отток = нет покупка сделана). Поскольку мои данные несбалансированы, я попытался увеличить выборку данных.
Есть ли у кого-нибудь советы?
#Split data into train/test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size= 0.8 , test_size=0.2,
random_state=14)
#Validation set
X_train, X_valid, y_train, y_valid = train_test_split(X_train, y_train, train_size= 0.9 ,
test_size=0.1, random_state=14)
#Oversampling with SMOTE
sm = SMOTE(random_state = 2, )
X_train_sm, y_train_sm = sm.fit_sample(X_train, y_train)
print("befor smote :", Counter(y_train))
print("after smote :", Counter(y_train_sm))
log_reg1 = LogisticRegression(random_state=14)
log_reg1.fit(X_train_sm,y_train_sm)
log_reg1.predict(X_test)
#y_predict = log_reg1.predict(X_test)
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
array([[0.33918125, 0.66081875],
[0.33918127, 0.66081873],
[0.33918127, 0.66081873],
[0.33918127, 0.66081873],
[0.33918126, 0.66081874],
[0.33918124, 0.66081876],
[0.33918127, 0.66081873],
[0.33918127, 0.66081873],
precision recall f1-score support
0 0.00 ??? 0.00 ??? 0.00 18
1 0.89 1.00 0.94 146
accuracy 0.89 164
macro avg 0.45 0.50 0.47 164
weighted avg 0.79 0.89 0.84 164