Implementation: Current Best Learning #591
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implemented the pseudocode from chapter 19, and added a testcase.
Since the
learning
module is getting a bit too large, I decided to create a new module (knowledge
for the chapter title "Knowledge in Learning"). I feel like this is the best way to go, but I can change it if this is not appropriate. A few notes on the PR:In the implementation I could have used the expression functionality we have already implemented, but after some quick testing the easiest way to go was a dictionary. I do plan though on converting the resulting hypothesis in my implementation into an
Expr
object in the future. Also, I am experimenting with another format for the hypothesis. It will take some time to settle though, since I want to see what the other algorithms in the chapter need. At least for now, I believe this will do.The example I used (the restaurant example from the book) is taking too long to complete (between 5-15 seconds) due to the number of attributes.
In the future (when I work on its notebook section) I will add new, simpler examples.I also added another, smaller example set.I tried to make performance better, but the code was getting a bit too complicated, so I switched for the almost bruteforce-y way. I don't think that's an issue though, since students will rarely (if ever) encounter examples larger than the restaurant example, which at most takes about 20 seconds to complete, and that if the user is very unlucky.