Giter Club home page Giter Club logo

behaiv-java's Introduction

behaiv-java's People

Contributors

andymacdroo avatar dmi3coder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

behaiv-java's Issues

Switch to structured data store

Use a structured data store to capture all the features.

  • Java - sqlite or h2
  • Android and IOS - sqlite
  • javascript - remote server
    Other storage types will be available
    Required for #38

registerLabel should allow more parameters or have attributes

Case 1: User should have ability to put laber not only as an string

TLRPC.User user = (TLRPC.User) object;
ApplicationLoader.behaiv().registerLabel(user.username);

Case 2: Probably user can put multiple keys into label or have attributes method

TLRPC.User user = (TLRPC.User) object;
ApplicationLoader.behaiv().registerLabel(user.id, user.username);

Optimize providers

Providers work okay from first tries, I'm definitely sure there's something wrong with them in the long run.

  • Make ordering explicit.
  • Handle failed providers
  • Handle permissions for android?
  • Handle modification of providers: add additional provider, remove specific provider, disable probider.

Retrofit Java version to 7

Downgrade java version to 7 because of android support. Everything except lamdas(e.g streams, utils) should be reverted to 7th analogs.
Contact me if you need help

Refactor storage for better migration and kernel switching

Currently, each kernel saves data in its own way. So currently if I want to switch one kernel to another I need to drop all the data. It can be really good if we can re-use some of data.
Actually, I don't think we'll have support between e.g KNN and Logistic regression, so on changing the kernel we'll need to drop model data and re-train new model.
In any case, we'll need to draw a diagram on how storage should interact with kernels.

  • introduce versioning of kernels and migration from one version to next on upgrade

Optional providers

Make .setProvider() analog that will accept optional providers. If this feature is not available on a device this will be ignored(probably automatically set to 0)

Add Kernel migration

Due to migration from plain java classes to proto, we need to add migration that will be invoked on startup.
This is probably not required prior beta, but still, a good feature to have

Optimize labels

Current Kernel re-initializes output what is really strange. It should fail when we add an additional label. Figure out what's wrong and can harm in the long run.
Related to #16

Throttling data capturing

In our android example, we have edge cases. When you call .stopCapturing() several times with a new thread it may get unpredictable results and will compute endlessly. We need some data throttling, primarily for .stopCapturing()
https://github.com/dmi3coder/behaiv-android/blob/master/example_kotlin/src/main/java/de/dmi3y/behaiv/example/tasks/TasksFragment.kt#L66
So, we need to add additional param to Behaiv.Builder called .setThrottle(long amount) And use this param to wait for a specific amount of data to arrive before doing any computations.

Add ability to always keep data

It's possible that developers want to keep data from the user. It's automatically saved with the remote kernel. We need the ability to always store them even when it's one-batch training.

Logical providers

Create a provider that can use logical operators on multiple providers
e.g

new LogicalProvider.Builder(provider1).or(provider2).and(provider3).xor(provider4)

Providers should have a logistic marker interface in order to use with LogicalProvider

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.