7,520 karma · joined March 9, 2016
https://mljar.com
https://github.com/mljar/mercury
https://github.com/mljar/mljar-supervised
https://runmercury.com
meet.hn/city/pl-Łapy
Right now I'm working on integration with HuggingFace Spaces. So you can publish your notebook there.
It is very good for learning. I have users that are starting to learn Python and with Mercury they build amazing applications shared as web apps.
It is hard to share Jupyter Notebook with non-coders. Old way for sharing:
- create PowerPoint presentation - easy to do, but not interactive,
- rewrite the notebook into web framework and make a web app - requires a lot of work, you need to be Data Scientist and Web Developer
- share notebook as static HTML - not interactive, you need to hide the code to not scare the users,
Mercury turns Jupyter Notebook into interactive web app. You can add widgets to notebook by adding YAML configuration in the first RAW cell in the notebook. You can easily deploy it to the cloud. Main features:
- it is easy - just add YAML config, no need to mix User Interface code with analytics code,
- allow end-user to tweak widgets and execute the notebook from the top to the bottom,
- end-user can download executed notebook as single HTML file,
- you can hide notebook's code,
- there is app gallery built-in, so you can share many notebooks on single server,
- it has authentication available, you can select with who share notebooks,
- it has HTTPS support (certificate from Let's Encrypt),
- you embed interactive notebooks on any website,
- it has Admin Panel (to manage notebooks, users, groups).
The Mercury is dual-licensed. The core is on AGPL_v3. The commercial license provides more features, dedicated support and white-labeling. We select such business model to have sustainability.
The frontend is in TypeScript with React+Redux. The backend is in Python with Django+Celery.
The alternative might be to use rich package (https://github.com/Textualize/rich) but I don't have a tutorial yet.
Deployment should be easy, I wrote guides how it can be done on Heroku and AWS EC2 https://github.com/mljar/mercury/wiki
Mercury is open-source with AGPLv3 license. For companies looking for more features, commercial friendly license and dedicated support I'm planning to offer paid license (I hope it will give long live to the project).
In the near future I would like to add:
- notebooks scheduling (with email notifications)
- option to convert notebook to REST API (with YAML config)
I hope Mercury will be an easy tool for all notebook users and will help them to share their results with non-programmers.
Voila is using tornado, and for each user it is creating a python kernel. User can interact with notebook code with widgets (ipywidgets) created inside the notebook. Voila can serve one notebook at the time.
Mercury is built on Django+Celery. Widgets are defined outside the notebook with YAML. All executions are processed in the background. There can be served several different notebooks in the same time. The notebooks gallery is built-in.
In Mercury, it will be easy to add more options for notebooks execution. I'm planning to add notebook scheduling and option to convert notebook into REST API.
The framework is called Mercury and is open-source https://github.com/mljar/mercury
Thanks to this, no-coders will be able to create simple Python scripts. For experienced developers, it will make coding much faster - you don't need to jump over the docs, just click needed step and fill the form.
The MLJAR Studio is a desktop application, so everything is on your machine. Created program is compatible with Jupyter Notebook or can be converted to plain Python - no vendor lock-in.
We wrote the article with description how Google Sheets data can be read in Python with no-code MLJAR Studio https://mljar.com/blog/read-google-sheets-in-python-with-no-...
Currently we have a few steps for training Machine Learning model on tabular data. Here you have few gifs with screenshots: https://mljar.com/docs/how-does-python-notebook-work/ how it looks like, and example how to build ML model: https://mljar.com/docs/create-first-notebook/ on tabular data. The created notebook is compatible with Jupiter notebook.
In the near future, we are planning to add notebook scheduling and more steps (probably with some dynamic manager for steps loading). We see MLJAR Studio as an alternative to visual programming environments which are node based. Because the Python code is the source of truth, it offers a great flexibility to define new steps or to add custom Python code.
The app is desktop based (it is using electron framework). It automatically installs Python 3.9 with miniconda and required packages. The installation is local, without change to the environment path. You can see installation instructions here: https://mljar.com/docs/install-notebook/. The application is only for Windows. If you are interested in MacOS or Linux versions, please fill the form https://docs.google.com/forms/d/e/1FAIpQLSeB5-hA326sBg9fg-pp... and we will notify you when ready.
If you would like to try the app (currently Windows only), it can be downloaded from GitHub release page: https://github.com/mljar/studio/releases
Does user need to manually set threshold when alarms should be triggered?
What to do if there is a data drift?
What is the most difficult to detect drift example that you see?
Got a question. What do you think, is it possible to create internal tools as desktop apps that doesn't need servers/internet connection? I understand that your product is web based, so doesnt have such desktop-app feature. Can you recommend any no-code tool for building desktop based apps?
How does it differ from open-source AutoML frameworks like https://github.com/mljar/mljar-supervised or drag-and-drop tools like Azure ML Studio?
Is the no-writing the code a killer feature here?
Do you have financial data enhancement feature? Do you plan such feature?
Dataset Auto-WEKA auto-sklearn TPOT H2O AutoML GCP-Tables AutoGluon MLJAR
-------------- ----------- -------------- ------- ------------ ------------ ----------- -------
ieee-fraud 0.119 0.349 0.119 0.322 0.172
value 0.114 0.319 0.325 0.377 0.415 0.445
walmart 0.390 0.379 0.398 0.384 0.423
transaction 0.131 0.329 0.326 0.404 0.406 0.463
porto 0.158 0.331 0.315 0.406 0.434 0.462 0.540
allstate 0.124 0.310 0.237 0.352 0.74 0.706 0.764
mercedes 0.160 0.444 0.547 0.363 0.658 0.169 0.879
otto 0.145 0.717 0.597 0.729 0.821 0.988 0.924
satisfaction 0.235 0.408 0.495 0.740 0.763 0.823 0.975
bnp-paribas 0.193 0.412 0.460 0.417 0.440 0.986 0.986There is explanation of ML models and predictions:
- learning curves from training
- decision tree visualization
- linear model coeffs printout
- features importance (permutation based)
- SHAP features importance
- SHAP dependence plots
- SHAP decision plots
I have some old comparison of closed-source old system https://mljar.com/blog/automl-comparison/ but the open source version is much better and have more features.
- Operates in three modes: Explain, Perform, Compete.
- `Explain` is for data exploratory and checking the default performance (without HP tuning). It has Automatic Exploratory Data Analysis.
- `Perform` is for building production-ready models (HP tuning + ensembling).
- `Compete` is for solving ML competitions in limited time amount (HP tuning + ensembling + stacking).
- All ML experiments have automatic documentation which creates Markdown reports ready to commit to the repo (https://github.com/mljar/mljar-examples/tree/master/Income_c...).
- The package produces extensive explanations: decision tree visualization, feature importance, SHAP explanations, advanced metrics values.
- It has advanced feature engineering, like: Golden Features, Features Selection, Time and Text Transformations, Categoricals handling with target, label, or one-hot encodings.
Off the topic, I mainly write in Python. I started programming in C/C++. I very often miss header files from C/C++ during Python programming. In C++ header files you have the full interface definition and it was easy to understand the code. Somehow, the redux and C header files are for me similar (in the sense of clear code).
The boilerplate code runs with docker-compose on single server but in the future the frontend and backend can be easily divided, so separate teams can work on them.