在随机林中传递Class_weight参数时出错

时间:2017-12-13 18:23:38

标签: pandas scikit-learn random-forest

我在做二元分类器。由于我的数据不平衡,我使用的是体重。我在传递值时会收到错误,如何解决这个问题。

错误:ValueError:class_weight必须是dict,' balance'或者None,得到:[{0:0.4,1:0.6}]"

代码

rf=RandomForestClassifier(n_estimators=1000,oob_score=True,min_samples_leaf=500,class_weight=[{0:.4, 1:.6}])
    fit_rf=rf.fit(X_train_res,y_train_res)

错误

\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\utils\class_weight.py in compute_class_weight(class_weight, classes, y)
     60         if not isinstance(class_weight, dict):
     61             raise ValueError("class_weight must be dict, 'balanced', or None,"
---> 62                              " got: %r" % class_weight)
     63         for c in class_weight:
     64             i = np.searchsorted(classes, c)

ValueError: class_weight must be dict, 'balanced', or None, got: [{0: 0.4, 1: 0.6}]

如何解决此问题。

1 个答案:

答案 0 :(得分:2)

根据documentation

  

class_weight:dict,dicts列表,“balance”,

因此,class_weight参数接受字典,字典列表或字符串" balanced"。您给出的错误消息表明它需要一个字典,因为您只有一个字典,所以不需要列表。

所以,试试吧:

rf=RandomForestClassifier(n_estimators=1000,
                          oob_score=True,
                          min_samples_leaf=500,
                          class_weight={0:.4, 1:.6})

fit_rf=rf.fit(X_train_res,y_train_res)