gpt4 book ai didi

python - 使用加权类处理 GradientBoostingClassifier 中的不平衡数据?

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:55 25 4
gpt4 key购买 nike

我有一个非常不平衡的数据集,我需要在此基础上构建一个模型来解决分类问题。数据集有大约 30000 个样本,其中大约 1000 个样本标记为 -1-,其余标记为 0。我通过以下几行构建模型:

X_train=training_set
y_train=target_value
my_classifier=GradientBoostingClassifier(loss='deviance',learning_rate=0.005)
my_model = my_classifier.fit(X_train, y_train)

由于这是一个不平衡的数据,简单地按照上面的代码建立模型是不正确的,所以我尝试使用类权重如下:

class_weights = compute_class_weight('balanced',np.unique(y_train), y_train)

现在,我不知道如何使用 class_weights(基本上包括 0.5 和 9.10 值)来使用 GradientBoostingClassifier 训练和构建模型。

有什么想法吗?如何使用加权类或其他技术处理这种不平衡数据?

最佳答案

您应该使用样本权重而不是类别权重。换句话说,GradientBoostingClassifier 允许您为每个观察而不是类分配权重。这就是你可以做到的,假设 y = 0 对应于权重 0.5,y = 1 对应于权重 9.1:

import numpy as np
sample_weights = np.zeros(len(y_train))
sample_weights[y_train == 0] = 0.5
sample_weights[y_train == 1] = 9.1

然后将这些权重传递给fit 方法:

my_model = my_classifier.fit(X_train, y_train, sample_weight = weights)

关于python - 使用加权类处理 GradientBoostingClassifier 中的不平衡数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com