Skip to content

Commit

Permalink
initial files
Browse files Browse the repository at this point in the history
  • Loading branch information
tlienart committed Jun 5, 2020
1 parent 178eb9c commit 53e47e8
Show file tree
Hide file tree
Showing 32 changed files with 2,844 additions and 21 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/TagBot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: TagBot
on:
schedule:
- cron: 0 0 * * *
jobs:
TagBot:
runs-on: ubuntu-latest
steps:
- uses: JuliaRegistries/TagBot@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Manifest.toml
*DS_Store
16 changes: 16 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
### Documentation: http://docs.travis-ci.com/user/languages/julia/
language: julia
os:
- linux
env:
global:

This comment has been minimized.

Copy link
@tlienart

tlienart Jun 5, 2020

Author Collaborator

This comment has been minimized.

Copy link
@tlienart

tlienart Jun 5, 2020

Author Collaborator
- PYTHON=Conda
julia:
- 1.0
- 1.4
- nightly
notifications:
email: false

after_success:
- julia -e 'import Pkg; Pkg.add("Coverage"); using Coverage; Coveralls.submit(process_folder())'
21 changes: 0 additions & 21 deletions LICENSE

This file was deleted.

24 changes: 24 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
The MLJ.jl package is licensed under the MIT "Expat" License:

> Copyright (c) 2020: Thibaut Lienart, Anthony Blaom and collaborators
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:
>
> The above copyright notice and this permission notice shall be included in all
> copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> SOFTWARE.
>
23 changes: 23 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name = "MLJScikitLearnInterface"
uuid = "5ae90465-5518-4432-b9d2-8a1def2f0cab"
authors = ["Thibaut Lienart, Anthony Blaom"]
version = "0.1.0"

[deps]
MLJModelInterface = "e80e1ace-859a-464e-9ed9-23947d8ae3ea"
PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0"
ScikitLearn = "3646fa90-6ef7-5e7e-9f22-8aca16db6324"

[compat]
MLJModelInterface = "0.2"
PyCall = "1"
ScikitLearn = "0.5,0.6"
julia = "1"

[extras]
MLJBase = "a7f614a8-145f-11e9-1d2a-a57a1082229d"
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["StableRNGs", "Test", "MLJBase"]
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# MLJ <> ScikitLearn.jl

**Note**: for errors with MKL on Mac, please refer to [ScikitLearn.jl](https://github.com/cstjean/ScikitLearn.jl) as it's a known issue.

## Todo

**June 2020**

* Tests for clustering (port from MLJModels)
* Maybe more integration tests
74 changes: 74 additions & 0 deletions src/MLJScikitLearnInterface.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
module MLJScikitLearnInterface

import MLJModelInterface
import MLJModelInterface:
@mlj_model, _process_model_def, _model_constructor, _model_cleaner,
Table, Continuous, Count, Finite, OrderedFactor, Multiclass, Unknown
const MMI = MLJModelInterface

import ScikitLearn
function __init__()
ScikitLearn.Skcore.import_sklearn()
end
const SK = ScikitLearn

# Note: PyCall is already imported as part of ScikitLearn so this is cheap
import PyCall: ispynull, PyNULL, pyimport

# ------------------------------------------------------------------------
# NOTE: the next few lines of wizardry and their call should not be
# modified carelessly. In particular do consider the recommendations at
# JuliaPy/PyCall.jl#using-pycall-from-julia-modules
# from which much of this stems.

# supervised
const SKLM = PyNULL()
const SKGP = PyNULL()
const SKEN = PyNULL()
const SKDU = PyNULL()
const SKNB = PyNULL()
const SKNE = PyNULL()
const SKDA = PyNULL()
const SKSV = PyNULL()
sklm(m) = (:SKLM, :linear_model, m)
skgp(m) = (:SKGP, :gaussian_process, m)
sken(m) = (:SKEN, :ensemble, m)
skdu(m) = (:SKDU, :dummy, m)
sknb(m) = (:SKNB, :naive_bayes, m)
skne(m) = (:SKNE, :neighbors, m)
skda(m) = (:SKDA, :discriminant_analysis, m)
sksv(m) = (:SKSV, :svm, m)

# unsupervised
const SKCL = PyNULL()
skcl(m) = (:SKCL, :cluster, m)

# Generic loader (see _skmodel_fit_* in macros)
ski!(sks, mdl) = copy!(sks, pyimport("sklearn.$mdl"))
# ------------------------------------------------------------------------

const Option{T} = Union{Nothing,T}

# recurrent information for traits
const SK_NAME = "ScikitLearn"
const SK_UUID = "3646fa90-6ef7-5e7e-9f22-8aca16db6324"
const SK_URL = "https://github.com/cstjean/ScikitLearn.jl"
const SK_LIC = "BSD"

const CV = "with built-in cross-validation"

include("macros.jl")
include("meta.jl")

include("models/linear-regressors.jl")
include("models/linear-regressors-multi.jl")
include("models/linear-classifiers.jl")
include("models/gaussian-process.jl")
include("models/ensemble.jl")
include("models/discriminant-analysis.jl")
include("models/svm.jl")
include("models/misc.jl")

include("models/clustering.jl")

end
Loading

1 comment on commit 53e47e8

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/15918

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.1.0 -m "<description of version>" 53e47e89dac403570cc88b6f8ed89d95bf424c0b
git push origin v0.1.0

Please sign in to comment.