我正在使用Scikit RandomForestClassifier对不平衡数据进行分类。目标类数据是' 1'或者' 0' 0 (99%的值为0)。
我想分配一个重量。我怎样才能做到这一点。
我在文件中找到了:
sample_weight:类似数组,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)
由于我没有得到预期的结果,有人可以确认吗?
答案 0 :(得分:1)
技术上
s_weight = np.array([100 if i == 1 else 1 for i in y_train])
是正确的,尽管RF中的加权并不像例如SVM那样简单。您必须交叉验证才能找到最佳权重(可能比100
小得多)。