我尝试为CatBoostClassifier绘制学习曲线。当我将CatBoostClassifier拟合到Yellowbrick的LearningCurve中时出现了错误。我认为这应该可以工作,因为CatBoost与sklearn兼容,而Yellowbrick是sklearn的扩展。
代码片段:
kf = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=0)sizes = np.linspace(0.2, 1.0, 10)estimator = CatBoostClassifier( iterations=42, learning_rate=0.3, max_depth=10)visualizer = LearningCurve( estimator, cv=kf, scoring='accuracy', train_sizes=sizes, n_jobs=-1)visualizer.fit(X, y)visualizer.show()
错误:
… yellowbrick.exceptions.YellowbrickTypeError: Cannot detect the model name for non estimator: ”
有什么建议吗?
回答:
您可以使用第三方估计器的包装器,更多详情。我已经尝试过了,确实有效。类似这样的代码:
from yellowbrick.classifier import ROCAUCfrom yellowbrick.contrib.wrapper import wrapcatboost_model = CatBoostClassifier()model = wrap(catboost_model)visualizer = ROCAUC(model)visualizer.fit(X_train, y_train)visualizer.score(X_test, y_test)visualizer.show()