Skip to content
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

feat: Improve Error Handling of classifiers and regressors #355

Merged

Conversation

alex-senger
Copy link
Contributor

Closes #153 .

Summary of Changes

The Error Handling of classifiers and regressors was not ideal. Now every classifier and regressor validates the data, especially when given non-numerical or missing values in the table.

…de feedback if the data cannot be used.

feat: Added `NonNumericColumnError` and `DatasetMissesDataError`
feat: Added possibility to write help messages in `NonNumericColumnError` and `MissingValuesColumnError`

Co-authored-by: alex-senger <91055000+alex-senger@users.noreply.github.com>
@alex-senger alex-senger requested a review from a team as a code owner June 9, 2023 13:53
@alex-senger alex-senger linked an issue Jun 9, 2023 that may be closed by this pull request
@codecov
Copy link

codecov bot commented Jun 9, 2023

Codecov Report

Merging #355 (df21b23) into main (54f4ae1) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main      #355   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           47        47           
  Lines         2193      2223   +30     
=========================================
+ Hits          2193      2223   +30     
Impacted Files Coverage Δ
src/safeds/exceptions/__init__.py 100.00% <ø> (ø)
...c/safeds/ml/classical/classification/_ada_boost.py 100.00% <ø> (ø)
...feds/ml/classical/classification/_decision_tree.py 100.00% <ø> (ø)
.../ml/classical/classification/_gradient_boosting.py 100.00% <ø> (ø)
...l/classical/classification/_logistic_regression.py 100.00% <ø> (ø)
...feds/ml/classical/classification/_random_forest.py 100.00% <ø> (ø)
...lassical/classification/_support_vector_machine.py 100.00% <ø> (ø)
src/safeds/ml/classical/regression/_ada_boost.py 100.00% <ø> (ø)
...c/safeds/ml/classical/regression/_decision_tree.py 100.00% <ø> (ø)
...ml/classical/regression/_elastic_net_regression.py 100.00% <ø> (ø)
... and 11 more

@lars-reimann
Copy link
Member

lars-reimann commented Jun 9, 2023

🦙 MegaLinter status: ✅ SUCCESS

Descriptor Linter Files Fixed Errors Elapsed time
✅ PYTHON black 25 0 0 1.07s
✅ PYTHON mypy 25 0 2.26s
✅ PYTHON ruff 25 0 0 0.03s
✅ REPOSITORY git_diff yes no 0.01s

See detailed report in MegaLinter reports
Set VALIDATE_ALL_CODEBASE: true in mega-linter.yml to validate all sources, not only the diff

MegaLinter is graciously provided by OX Security

src/safeds/exceptions/_data.py Show resolved Hide resolved
src/safeds/exceptions/_data.py Outdated Show resolved Hide resolved
src/safeds/exceptions/_data.py Show resolved Hide resolved
src/safeds/exceptions/_data.py Show resolved Hide resolved
Marsmaennchen221 and others added 9 commits June 16, 2023 09:50
… to test `LearningError` and `PredictionError`

refactor: Removed option in `_util_sklearn.predict` to set feature_names or target_name to None as if at least one of them is None the method will always raise an Exception

Co-authored-by: alex-senger <91055000+alex-senger@users.noreply.github.com>
Co-authored-by: Junior Atemebang <129027012+jxnior01@users.noreply.github.com>
…s or target_name to None to satisfy the linter again

Co-authored-by: alex-senger <91055000+alex-senger@users.noreply.github.com>
…rOnFitAndPredict` to satisfy the linter

Co-authored-by: alex-senger <91055000+alex-senger@users.noreply.github.com>
…alueErrorOnFitAndPredict` to satisfy the linter

Co-authored-by: alex-senger <91055000+alex-senger@users.noreply.github.com>
@alex-senger alex-senger enabled auto-merge (squash) June 16, 2023 12:49
@alex-senger alex-senger merged commit 66f5f64 into main Jun 16, 2023
@alex-senger alex-senger deleted the 153-improve-error-handling-of-classifiers-and-regressors branch June 16, 2023 12:50
lars-reimann pushed a commit that referenced this pull request Jun 30, 2023
## [0.14.0](v0.13.0...v0.14.0) (2023-06-30)

### Features

* 290 properties for width-height of image ([#359](#359)) ([d9ebdc1](d9ebdc1)), closes [#290](#290)
* Add `find_edges` method to `Image` class ([#383](#383)) ([d14b6ce](d14b6ce)), closes [#288](#288)
* Add `StandardScaler` transformer ([#316](#316)) ([57b0572](57b0572)), closes [#142](#142)
* Add docstrings to the getter methods for hyperparameters in Regression and Classification models ([#371](#371)) ([9073f04](9073f04)), closes [#313](#313)
* Added `Table.group_by` to group a table by a given key ([#343](#343)) ([afb98be](afb98be)), closes [#160](#160)
* Added and improved errors and warnings in the table transformers ([#372](#372)) ([544e307](544e307)), closes [#152](#152)
* added crop() method in image and tests ([#365](#365)) ([eba8163](eba8163))
* added invert_colors method ([#367](#367)) ([1e4d110](1e4d110))
* adjust brightness and contrast of image ([#368](#368)) ([1752feb](1752feb)), closes [#289](#289) [#291](#291)
* blur Image method ([#363](#363)) ([c642176](c642176))
* check that methods of table can handle an empty table ([#314](#314)) ([686c2e7](686c2e7)), closes [#123](#123)
* convert image to grayscale ([#366](#366)) ([1312fe7](1312fe7)), closes [#287](#287)
* enhance `replace_column` to accept a list of new columns ([#312](#312)) ([d50c5b5](d50c5b5)), closes [#301](#301)
* Explicitly throw `UnknownColumnNameError` in `TaggedTable._from_table` ([#334](#334)) ([498999f](498999f)), closes [#333](#333)
* flip images / eq method for image ([#360](#360)) ([54f4ae1](54f4ae1)), closes [#280](#280)
* improve `table.summary`. Catch `ValueError` thrown by `column.stability` ([#390](#390)) ([dbbe0e3](dbbe0e3)), closes [#320](#320)
* improve error handling of `column.stability` when given a column that contains only None ([#388](#388)) ([1da2499](1da2499)), closes [#319](#319)
* Improve Error Handling of classifiers and regressors ([#355](#355)) ([66f5f64](66f5f64)), closes [#153](#153)
* Resize image ([#354](#354)) ([3a971ca](3a971ca)), closes [#283](#283)
* rotate_left and rotate_right added to Image ([#361](#361)) ([c877530](c877530)), closes [#281](#281)
* set kernel of support vector machine ([#350](#350)) ([1326f40](1326f40)), closes [#172](#172)
* sharpen image ([#364](#364)) ([3444700](3444700)), closes [#286](#286)

### Bug Fixes

* Keeping no columns with Table.keep_only_columns results in an empty Table with a row count above 0 ([#386](#386)) ([15dab06](15dab06)), closes [#318](#318)
* remove default value of `positive_class` parameter of classifier metrics ([#382](#382)) ([58fc09e](58fc09e))
* remove default value of `radius` parameter of `blur` ([#378](#378)) ([7f07f29](7f07f29))
@lars-reimann
Copy link
Member

🎉 This PR is included in version 0.14.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@lars-reimann lars-reimann added the released Included in a release label Jun 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
released Included in a release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve error handling of classifiers and regressors
6 participants