Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add fields and parallelize with nothing #119

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
Open
1 change: 1 addition & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
TaijaBase = "10284c91-9f28-4c9a-abbf-ee43576dfff6"

[compat]
Aqua = "0.8"
Expand Down
2 changes: 2 additions & 0 deletions src/ConformalPrediction.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
module ConformalPrediction

using TaijaBase

# Conformal Models:
include("conformal_models/conformal_models.jl")
export ConformalModel
Expand Down
8 changes: 6 additions & 2 deletions src/conformal_models/inductive_classification.jl
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,18 @@ mutable struct SimpleInductiveClassifier{Model<:Supervised} <: ConformalProbabil
coverage::AbstractFloat
scores::Union{Nothing,Dict{Any,Any}}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
train_ratio::AbstractFloat
end

function SimpleInductiveClassifier(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=minus_softmax,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
train_ratio::AbstractFloat=0.5,
)
return SimpleInductiveClassifier(model, coverage, nothing, heuristic, train_ratio)
return SimpleInductiveClassifier(model, coverage, nothing, heuristic, parallelizer, train_ratio)
end

"""
Expand Down Expand Up @@ -127,16 +129,18 @@ mutable struct AdaptiveInductiveClassifier{Model<:Supervised} <: ConformalProbab
coverage::AbstractFloat
scores::Union{Nothing,Dict{Any,Any}}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
train_ratio::AbstractFloat
end

function AdaptiveInductiveClassifier(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=minus_softmax,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
train_ratio::AbstractFloat=0.5,
)
return AdaptiveInductiveClassifier(model, coverage, nothing, heuristic, train_ratio)
return AdaptiveInductiveClassifier(model, coverage, nothing, heuristic, parallelizer, train_ratio)
end

@doc raw"""
Expand Down
8 changes: 6 additions & 2 deletions src/conformal_models/inductive_regression.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,18 @@ mutable struct SimpleInductiveRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
train_ratio::AbstractFloat
end

function SimpleInductiveRegressor(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
train_ratio::AbstractFloat=0.5,
)
return SimpleInductiveRegressor(model, coverage, nothing, heuristic, train_ratio)
return SimpleInductiveRegressor(model, coverage, nothing, heuristic, parallelizer, train_ratio)
end

@doc raw"""
Expand Down Expand Up @@ -84,6 +86,7 @@ mutable struct ConformalQuantileRegressor{Model<:QuantileModel} <: ConformalInte
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
train_ratio::AbstractFloat
end

Expand All @@ -93,9 +96,10 @@ function ConformalQuantileRegressor(
heuristic::Function=function f(y, ŷ_lb, ŷ_ub)
return reduce((x, y) -> max.(x, y), [ŷ_lb - y, y - ŷ_ub])
end,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
train_ratio::AbstractFloat=0.5,
)
return ConformalQuantileRegressor(model, coverage, nothing, heuristic, train_ratio)
return ConformalQuantileRegressor(model, coverage, nothing, heuristic, parallelizer, train_ratio)
end

@doc raw"""
Expand Down
8 changes: 6 additions & 2 deletions src/conformal_models/transductive_classification.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@ mutable struct NaiveClassifier{Model<:Supervised} <: ConformalProbabilisticSet
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
end

function NaiveClassifier(
model::Supervised; coverage::AbstractFloat=0.95, heuristic::Function=minus_softmax
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=minus_softmax,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
)
return NaiveClassifier(model, coverage, nothing, heuristic)
return NaiveClassifier(model, coverage, nothing, heuristic, parallelizer)
end

@doc raw"""
Expand Down
52 changes: 39 additions & 13 deletions src/conformal_models/transductive_regression.jl
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,16 @@ mutable struct NaiveRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
end

function NaiveRegressor(
model::Supervised; coverage::AbstractFloat=0.95, heuristic::Function=absolute_error
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
)
return NaiveRegressor(model, coverage, nothing, heuristic)
return NaiveRegressor(model, coverage, nothing, heuristic, parallelizer)
end

@doc raw"""
Expand Down Expand Up @@ -79,12 +83,16 @@ mutable struct JackknifeRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
end

function JackknifeRegressor(
model::Supervised; coverage::AbstractFloat=0.95, heuristic::Function=absolute_error
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
)
return JackknifeRegressor(model, coverage, nothing, heuristic)
return JackknifeRegressor(model, coverage, nothing, heuristic, parallelizer)
end

@doc raw"""
Expand Down Expand Up @@ -160,12 +168,16 @@ mutable struct JackknifePlusRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
end

function JackknifePlusRegressor(
model::Supervised; coverage::AbstractFloat=0.95, heuristic::Function=absolute_error
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
)
return JackknifePlusRegressor(model, coverage, nothing, heuristic)
return JackknifePlusRegressor(model, coverage, nothing, heuristic, parallelizer)
end

@doc raw"""
Expand Down Expand Up @@ -249,12 +261,16 @@ mutable struct JackknifeMinMaxRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
end

function JackknifeMinMaxRegressor(
model::Supervised; coverage::AbstractFloat=0.95, heuristic::Function=absolute_error
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
)
return JackknifeMinMaxRegressor(model, coverage, nothing, heuristic)
return JackknifeMinMaxRegressor(model, coverage, nothing, heuristic, parallelizer)
end

@doc raw"""
Expand Down Expand Up @@ -337,16 +353,18 @@ mutable struct CVPlusRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
cv::MLJBase.CV
end

function CVPlusRegressor(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
cv::MLJBase.CV=MLJBase.CV(),
)
return CVPlusRegressor(model, coverage, nothing, heuristic, cv)
return CVPlusRegressor(model, coverage, nothing, heuristic, parallelizer, cv)
end

@doc raw"""
Expand Down Expand Up @@ -442,16 +460,18 @@ mutable struct CVMinMaxRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
cv::MLJBase.CV
end

function CVMinMaxRegressor(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
cv::MLJBase.CV=MLJBase.CV(),
)
return CVMinMaxRegressor(model, coverage, nothing, heuristic, cv)
return CVMinMaxRegressor(model, coverage, nothing, heuristic, parallelizer, cv)
end

@doc raw"""
Expand Down Expand Up @@ -567,6 +587,7 @@ mutable struct JackknifePlusAbRegressor{Model<:Supervised} <: ConformalInterval
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
nsampling::Int
sample_size::AbstractFloat
replacement::Bool
Expand All @@ -577,13 +598,14 @@ function JackknifePlusAbRegressor(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
nsampling::Int=30,
sample_size::AbstractFloat=0.5,
replacement::Bool=true,
aggregate::Union{Symbol,String}="mean",
)
return JackknifePlusAbRegressor(
model, coverage, nothing, heuristic, nsampling, sample_size, replacement, aggregate
model, coverage, nothing, heuristic, parallelizer, nsampling, sample_size, replacement, aggregate
)
end

Expand Down Expand Up @@ -673,6 +695,7 @@ mutable struct JackknifePlusAbMinMaxRegressor{Model<:Supervised} <: ConformalInt
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
nsampling::Int
sample_size::AbstractFloat
replacement::Bool
Expand All @@ -683,13 +706,14 @@ function JackknifePlusAbMinMaxRegressor(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
nsampling::Int=30,
sample_size::AbstractFloat=0.5,
replacement::Bool=true,
aggregate::Union{Symbol,String}="mean",
)
return JackknifePlusAbMinMaxRegressor(
model, coverage, nothing, heuristic, nsampling, sample_size, replacement, aggregate
model, coverage, nothing, heuristic, parallelizer, nsampling, sample_size, replacement, aggregate
)
end

Expand Down Expand Up @@ -777,6 +801,7 @@ mutable struct TimeSeriesRegressorEnsembleBatch{Model<:Supervised} <: ConformalI
coverage::AbstractFloat
scores::Union{Nothing,AbstractArray}
heuristic::Function
parallelizer::Union{Nothing,AbstractParallelizer}
nsampling::Int
sample_size::AbstractFloat
aggregate::Union{Symbol,String}
Expand All @@ -786,12 +811,13 @@ function TimeSeriesRegressorEnsembleBatch(
model::Supervised;
coverage::AbstractFloat=0.95,
heuristic::Function=absolute_error,
parallelizer::Union{Nothing,AbstractParallelizer}=nothing,
nsampling::Int=50,
sample_size::AbstractFloat=0.3,
aggregate::Union{Symbol,String}="mean",
)
return TimeSeriesRegressorEnsembleBatch(
model, coverage, nothing, heuristic, nsampling, sample_size, aggregate
model, coverage, nothing, heuristic, parallelizer, nsampling, sample_size, aggregate
)
end

Expand Down
Loading