Skip to content

Latest commit

 

History

History
35 lines (30 loc) · 3.33 KB

TODO.md

File metadata and controls

35 lines (30 loc) · 3.33 KB
  • Separate DBFit into 3 classes: fetcher, fitter and predicter.

  • Associare ai modelli SOLO gli attributi associati alle regole e non tutti gli attributi su cui è stato effettuato il training. L’obiettivo è che se, ad esempio, per un’istanza l’attributo BMI = NULL, ma non ho regole per BMI associate a quel modello, posso comunque effettuare una predizione. Ancora meglio, si potrebbe trovare un modo per attivare comunque la regola se, ad esempio, BMI è presente a partire dalla N-esima regola ma non è presente fra le prime, e quindi associadno gli attributi addirittura alle regole stesse invece che non ai modelli.

  • Trovare un modo per stampare dei messaggi di errore chiari in caso di config sbagliata. Si è tentato di farlo durante tutto lo sviluppo, ma pul certamente essere migliorato. Mantenere questa cosa anche in caso di nuovi parametri, e valutare se ciò che è presente al momento è sufficiente.

  • Update the storage of rules into the piton_rules table in the database.

  • Rename 'update_models' into 'learn_problem'

  • Fix those == that should actually be === https://stackoverflow.com/questions/12151997/why-does-1234-1234-test-evaluate-to-true#comment16259587_12151997

  • Make sql querying secure with addslashes or whatever

  • Parallelize code ( https://medium.com/@rossbulat/true-php7-multi-threading-how-to-rebuild-php-and-use-pthreads-bed4243c0561 )

  • Code is probably not ready for weighted datasets (e.g., see pushInstance)

  • Add to each model only the attributes associated with its rules insted of all the attributes used for training.

  • Use CheckCutOff to also check the number of the instances (atm it only checks for a minimum ratio between the two classes). Furthermore, find a better name for CutOffValue.

  • One column can generate more attributes; make this part of code elegant.

  • Add stemming in italian

  • Add Bag-of-words parameter for specifying the language for each column

  • Randomly shuffle train in an independent fashon (Not for JRip; e.g., add a "shuffle" parameter)

  • Text processing via NLPTools http://php-nlp-tools.com/documentation/transformations.html http://php-nlp-tools.com/documentation/tokenizers.html

  • Implement an unweighted version of Instances?

  • Creation of "dead nodes" in the hierarchy in case a model isn't trained for a specific sub-problem, and of the "I couldn't predict" case in predictByIdentifier.

  • Revise the json_logic_rules field in the piton_class_models table.

  • Print all errors messages into a Laravel log file instead of stdin.

  • Print clear error messages in case of errors in the configuration. Restore some form of logging to the control flow on multiple levels of detail.

  • Build test suite for verifying the behavior of DBFit and learning algorithms

  • provide method for creating arbitrary attributes

  • provide method for creating column categorical from a checkbox+value pair of attrs, with reverse=false flag

  • don't recurse when the outcome is false. ? Note: NO_thing is not entirely safe

  • At prediction time just interrogate the database once and then use that same row for every level. Is there a way to avoid multiple queries?

  • for ($j = 0; $j < $data->numInstances(); $j++) { che diventi un generatore di istanze

  • PRip: check consistency between with Weka's JRip (must activate debug info)

  • ? Ignore nan rules at predict time?

  • Move processing from SQL to PHP? force non-null values check in code?