Closed ablaom closed 2 years ago
Since TunedModel is just a wrapper, caching data might create an unnecessary copy.
TunedModel
Here tmodel::TunedModel wraps an EvoTreeClassifier object and X is a DataFrame.
tmodel::TunedModel
EvoTreeClassifier
X
DataFrame
mach = machine(tmodel, X, y) |> fit! julia> mach.data # "outer" unecessary cached data (3×2 DataFrame Row │ a b │ Float64 Float64 ─────┼───────────────────── 1 │ 1.0 0.136725 2 │ 2.0 0.00546956 3 │ 3.0 0.947711, CategoricalArrays.CategoricalValue{Char, UInt32}['a', 'a', 'a']) julia> mach.cache[end].fitresult.machine.data # atomic model specific cached data ((matrix = [1.0 0.13672511011651545; 2.0 0.005469560151032837; 3.0 0.9477113320687569], names = [:a, :b]), CategoricalArrays.CategoricalValue{Char, UInt32}['a', 'a', 'a'])
The matrix is Tables.matrix(X) and so is a copy, not a view.
Tables.matrix(X)
Remedy Declare MLJBase.caches_data_by_default(::Type{<:TunedModel}) = false.
MLJBase.caches_data_by_default(::Type{<:TunedModel}) = false
Since
TunedModel
is just a wrapper, caching data might create an unnecessary copy.Here
tmodel::TunedModel
wraps anEvoTreeClassifier
object andX
is aDataFrame
.The matrix is
Tables.matrix(X)
and so is a copy, not a view.Remedy Declare
MLJBase.caches_data_by_default(::Type{<:TunedModel}) = false
.