使用sklearn RandomForestClassifier进行分类

时间:2014-04-25 22:52:25

标签: python machine-learning classification scikit-learn

我正在使用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)

由于我没有得到预期的结果,有人可以确认吗?

1 个答案:

答案 0 :(得分:1)

技术上

s_weight = np.array([100 if i == 1 else 1 for i in y_train]) 

是正确的,尽管RF中的加权并不像例如SVM那样简单。您必须交叉验证才能找到最佳权重(可能比100小得多)。