我正在尝试使用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.
有解决方法吗?
答案 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)