OnevsrestClassifier和随机森林

时间:2016-07-18 13:22:04

标签: python scikit-learn

我正在尝试使用RandomForestClassifer在http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html重现该示例。

我无法看到如何转换这部分代码

# Learn to predict each class against the other
classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True,
                                 random_state=random_state))
y_score = classifier.fit(X_train, y_train).decision_function(X_test)

我试过

# Learn to predict each class against the other
classifier = OneVsRestClassifier(RandomForestClassifier())
y_score = classifier.fit(X_train, y_train).decision_function(X_test)

但我得到

AttributeError: Base estimator doesn't have a decision_function attribute.

有解决方法吗?

1 个答案:

答案 0 :(得分:6)

你应该知道decision_function的用途是什么。它仅用于SVM分类器的原因是它给出了数据点与分隔数据的超平面的距离,而当你使用RandomForestClassifier进行它时没有任何意义。您可以使用RFC支持的其他方法。如果您想获得分类数据点的概率,可以使用predict_proba

以下是支持的functions

的参考

仅提及RFC支持oob_decision_function,这是您训练集中的估计值。

所以只需替换你的行 -

y_score = classifier.fit(X_train, y_train).predict_proba(X_test)

y_score = classifier.fit(X_train, y_train).predict(X_test)