Skip to content

feat: Improve Error Handling of classifiers and regressors#355

Merged
alex-senger merged 15 commits intomainfrom
153-improve-error-handling-of-classifiers-and-regressors
Jun 16, 2023
Merged

feat: Improve Error Handling of classifiers and regressors#355
alex-senger merged 15 commits intomainfrom
153-improve-error-handling-of-classifiers-and-regressors

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

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