Python打卡DAY13

知识点复习
  1. 不平衡数据集的处理:过采样、修改权重、修改阈值
  2. 交叉验证代码

作业:

从示例代码可以看到 效果没有变好,所以很多步骤都是理想是好的,但是现实并不一定可以变好。这个实验仍然有改进空间,如下。

1. 我还没做smote+过采样+修改权重的组合策略,有可能一起做会变好。

2. 我还没有调参,有可能调参后再取上述策略可能会变好

1. 结合SMOTE、Random OverSampling和修改类别权重

from imblearn.over_sampling import SMOTE, RandomOverSampler

# 假设X_train, y_train为训练集
# 1. 使用SMOTE生成合成样本
smote = SMOTE(sampling_strategy='auto', k_neighbors=5, random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)

# 2. 再用随机过采样做平衡(可选,根据效果调整)
ros = RandomOverSampler(sampling_strategy='auto', random_state=42)
X_final, y_final = ros.fit_resample(X_resampled, y_resampled)

# 3. 使用类别权重(以样本为权重或模型参数)
# 例如:在XGBoost中设置scale_pos_weight=(负样本数/正样本数)
model = xgb.XGBClassifier(
    scale_pos_weight=class_weight_ratio,  # 可以根据样本数比调整
    n_estimators=100,
    max_depth=6,
    learning_rate=0.1,
    random_state=42
)

model.fit(X_final, y_final)

2.调参

from sklearn.model_selection import GridSearchCV

param_grid = {
    'max_depth': [4, 6, 8],
    'learning_rate': [0.01, 0.1],
    'n_estimators': [50, 100, 150],
    'scale_pos_weight': [1, 5, 10]  # 根据样本比例调节
}

grid_search = GridSearchCV(estimator=model, param_grid=param_grid, scoring='f1', cv=5)
grid_search.fit(X_train, y_train)
print(grid_search.best_params_)

@浙大疏锦行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值