Hi everyone,
Recently I have humbly published a new machine learning package: NovaML.
I’ve been using Julia for several years now, and it’s become my go-to language for most of my work. However, I’ve noticed that some students and newcomers to machine learning sometimes find Julia’s ML ecosystem a bit challenging, especially if they’re coming from frameworks like Scikit-Learn.
I have started to develop NovaML in an effort to contribute to the Julia machine learning community. This package aims to leverage Julia’s powerful features, particularly functors and multiple dispatch, to create an intuitive and familiar interface for ML practitioners.
Here’s a quick example of how NovaML works:
using NovaML.LinearModel
using NovaML.Metrics
tree = DecisionTreeClassifier()
# Fit the model
tree(X, y);
# Make predictions
ŷ = tree(X);
accuracy_score(y, ŷ)
The module / method hierarchy is intentionally similar to Scikit-Learn to ease the transition for those familiar with it. But of course, my ultimate goal is not to make an exact copy of ScikitLearn. For example, as seen above, you can use a model struct to hold model parameters, train the model, and make predictions.
As another example, we can use pipe operations as follows, just like in base Julia:
sc = StandardScaler()
pca = PCA(n_components=2)
lr = LogisticRegression()
Xtrn |> sc |> pca |> X -> lr(X, ytrn) # fit_transform
ŷtst = Xtst |> sc |> pca |> lr # predict
NovaML is in its very early stages (currently v0.3.0). Several features have already been implemented but many more features are yet to be implemented and existing algorithms need optimization for speed and accuracy.
However, I hope that with time and community input, it can grow into a valuable addition to Julia’s machine learning ecosystem. I’d be grateful for any contributions, feedback, or suggestions.
NovaML repo: https://github.com/ilkerarslan/NovaML.jl
Documentation page: https://ilkerarslan.github.io/NovaML.jl/stable/