我使用Scikit RandomForestClassifier对不 balancer 数据进行分类 . 目标类数据为“1”或“0”(99%的值为0) .
我想分配一个重量 . 我怎样才能做到这一点 .
我在文件中发现:
sample_weight:array-like,shape = [n_samples]或None样本权重 . 如果为None,则样本的权重相等 . 在每个节点中搜索拆分时,将忽略将创建具有净零或负权重的子节点的拆分 . 在分类的情况下,如果它们将导致在任一子节点中携带负权重的任何单个类,则也忽略分裂 .
我需要增加'1'的影响力
这是我应该这样做的方式:
s_weight = np.array([100 if i == 1 else 1 for i in y_train])
或者这样:
s_weight = y_train[:, 1:100].T.ravel()
.
clf.fit(X_train, y_train, sample_weight=s_weights)
由于我没有得到预期的结果,有人可以确认吗?
1 回答
技术上
虽然RF中的加权不像例如SVM那样简单,但这是正确的 . 您必须交叉验证才能找到最佳权重(可能比
100
小得多) .