Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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