-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Objectives API: Create new binary / multiclass pipeline classes and remove objectives from pipeline classes #405
Conversation
Codecov Report
@@ Coverage Diff @@
## improved_objectives #405 +/- ##
======================================================
Coverage ? 97.37%
======================================================
Files ? 110
Lines ? 3317
Branches ? 0
======================================================
Hits ? 3230
Misses ? 87
Partials ? 0
Continue to review full report at Codecov.
|
Codecov Report
@@ Coverage Diff @@
## improved_objectives #405 +/- ##
=======================================================
+ Coverage 97.42% 97.53% +0.11%
=======================================================
Files 111 113 +2
Lines 3376 3448 +72
=======================================================
+ Hits 3289 3363 +74
+ Misses 87 85 -2
Continue to review full report at Codecov.
|
@dsherry RE: suggestions for tests:
|
@angela97lin thanks for response. Should I re-review?
So for binary classification, we need to pick a classification threshold during
Yep, I just mean expecting that error.
What do you think? Would it be more clear to throw our own error? If so I'm a fan
I guess I meant providing test coverage for the former. Like, we should have a test for each of those methods for |
Hm, I was actually thinking about keeping an implementation closer to what we have today, which is if there's no objective specified (/it doesn't need fitting) then we use the pipeline estimator's predict method: https://github.com/FeatureLabs/evalml/blob/master/evalml/pipelines/pipeline_base.py#L200
I think for now, IndexError makes sense, but did add a separate custom exception ObjectiveNotFoundError custom exception for accessing objectives invalidly
Yup, all our previous class tests fit into this category since they now subclass BinaryClassificationPipeline, MulticlassificationPipeline, and RegressionPipeline :) Yes, if you could take another quick final look before I merge it into the improved_objectives feature branch, that'd be fantastic! |
else: | ||
return objective.predict(y_predicted_proba) | ||
|
||
return self.estimator.predict(X_t) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes sense for now -- you've moved this code over from where it used to be in ObjectiveBase
, if I'm following correctly. But I think before we merge the feature branch back to master, we should update BinaryClassificationPipeline.predict()
to always use a classification threshold. I'd guess that'll be coming in a later PR though, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
* Objectives API: Create new binary / multiclass pipeline classes and remove objectives from pipeline classes (#405) * Objectives API: Remove ROC and confusion matrix as objectives (#422) * Change `score` output to return one dictionary (#429) * Create binary and multiclass objective classes (#504) * Update dependencies (#412) * Hide features with zero importance in plot by default (#413) * Update dependencies check: package whitelist (#417) * Add fixes necessary for docs to build for improved objectives project (#605) * Remove calculating plot metrics from AutoML (#615)
As part of #346, we need to split our pipelines into binary and multiclass pipelines.
Closes #404, #348
(Note: renamed branch to include issue number)
(Closes #348 by making
predict_proba
return the full output regardless of binary and multiclass and handling the dimensional logic inscore
instead.)