【发布时间】:2019-05-18 10:54:25
【问题描述】:
我正在为我的任务使用 RandomForestClassifier。拟合数据(数据平衡),进行交叉验证。当然在预测中会出现一些错误,但这是可以接受的。我的任务是二元的,但不正确的样本定义作为第一类比第二类更重要。有什么方法可以将假想的决策边界移向第二类,通过牺牲第二类的准确性来最小化第一类的错误?
ml_model = RandomForestClassifier(random_state=17, n_jobs=-1, class_weight='balanced')
ml_params = {'max_depth': range(5, 16), 'max_features': range(4, 15)}
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=17)
ml_grid = GridSearchCV(ml_model, ml_params, cv=skf, n_jobs=-1, scoring='roc_auc')
ml_grid.fit(x_train, y_train)
...
ml_grid.best_estimator_.predict(some_sample)
【问题讨论】:
-
您似乎在寻找
class_weight参数。试一试,看看你的类错误是如何变化的。 -
您也可以尝试将
GridSearchCV的scoring参数更改为您希望被视为重要的类的召回率或精度。 -
@FatihAkici 我用不同的 class_weight 参数尝试了我的模型,但看起来这对结果没有影响。而且我并不孤单:stats.stackexchange.com/questions/326125/…
-
@FatihAkici 几个实验表明
class_weight有效,但不是很有效。可能是因为这个参数目标是提供不平衡的训练数据...请将您的评论格式化为 anwer - 我会提交它 -
@VivekKumar 这也有效,但我不知道提交哪个答案
标签: python scikit-learn