From 5de6f3f8ee5e3d6d9c93f6fba387894245df5366 Mon Sep 17 00:00:00 2001 From: Maeve Chen Date: Fri, 8 Nov 2024 07:19:28 -0500 Subject: [PATCH 1/5] MLJ feature importance --- src/SmartDB.jl | 133 +++++++++++++++++++++++++++++++++++++++++- src/SmartDiscovery.jl | 10 ++-- src/SmartSolve.jl | 8 +++ 3 files changed, 145 insertions(+), 6 deletions(-) diff --git a/src/SmartDB.jl b/src/SmartDB.jl index 3a93bc3..02beecd 100644 --- a/src/SmartDB.jl +++ b/src/SmartDB.jl @@ -1,6 +1,6 @@ export compute_feature_values -all_features = OrderedDict() +all_features = OrderedDict() all_features[:length] = x -> length(x) all_features[:n_rows] = x -> size(x, 1) all_features[:n_cols] = x -> size(x, 2) @@ -58,3 +58,134 @@ function get_smart_choices(db, mat_patterns, ns) end return db_opt end + +#------------------------------------------------------------------------------ +function smartfeatures(df) +#Computes the contribution of each feature to reduce the error using Shapley values. +#------------------------------------------------------------------------------ +#1. Calculate feature importance + DecisionTreeClassifier = @load DecisionTreeClassifier pkg=DecisionTree + model = DecisionTreeClassifier(max_depth=3, min_samples_split=3) + fs = [:length, :n_rows, :n_cols, :rank, :cond, + :sparsity, :isdiag, :issymmetric, :ishermitian, :isposdef, + :istriu, :istril] + fs_vals = [df[:, f] for f in fs] + X = NamedTuple{Tuple(fs)}(fs_vals) + y = CategoricalArray(String.(df[:, :pattern])) + mach = machine(model, X, y) |> fit! + #------------------------------------------------------------------------------ + #PREVIOUS + fi = feature_importances(mach) + #------------------------------------------------------------------------------ + # #NEW + # fit!(mach) + + # function predict_function(model, data) + # data_pred = DataFrame(y_pred=predict(model, data)) + # return data_pred + # end + # println(df[1:50, :]) + # println(df[1:50, fs]) + # # explain = copy(df[1:300, :]) #may have to edit how many/what instances + # # explain = select(df, Not(Symbol(outcome_name))) + + # data_shap = ShapML.shap(explain=df[1:50, fs], + # reference=df[:, fs], + # model=mach, + # predict_function=predict_function) + + # show(data_shap, allcols=true) + + # fi = combine(groupby(data_shap, :feature_name))[:, [:feature_name, :shap_effect]] + #------------------------------------------------------------------------------ + fil = String.(map(x->x[1], fi)) + fiv = map(x->x[2], fi) + + nn = count(x -> x != 0, fiv) # include all nonzero features + fi = fi[1:nn] + fil = fil[1:nn] + fiv = fiv[1:nn] + + println(fi) + + sparsity(x) = count(iszero, x) / length(x) + condnumber(x::Matrix) = cond(A, 2) + condnumber(x::SparseMatrixCSC) = cond(Array(A), 2) + +#------------------------------------------------------------------------------ +#2. computes the computational cost (score) of each feature. + # Compute feature times + ft = zeros(nn) + c = zeros(nn) + A = [] + for i in 1:size(df, 1) + p = df[i, :pattern] + n = df[i, :n_rows] + if p in ["blur", "poisson"] + n′ = round(Int, sqrt(n)) + n′′ = n′^2 + else + n′ = n + n′′ = n + end + println("$p, $n") + try + global A = convert.(Float64,matrixdepot(p, n′)) + if size(A) != (n′′, n′′) + throw("Check matrix size: $(p), ($n, $n) vs $(size(A))") + end + for j in 1:nn + ft[j] += @elapsed @eval $(Symbol(fil[j]))(A) + c[j] += 1 + end + catch e + println(e) + end + GC.gc() + end + ftm = ft ./ c + + # Compute Score + score = fiv ./ ftm + + # Plot + plot() + shapes = [:circle, :rect, :diamond, :star5, :utriangle] + colors = palette(:tab10) + for i in 1:nn + plot!( [fiv[i]], + [ftm[i]], + zcolor=[score[i]], + color=:viridis, + seriestype = :scatter, + thickness_scaling = 1.35, + markersize = 7, + markerstrokewidth = 0, + markershapes = shapes[i], + label=fil[i]) + end + plot!(dpi = 300, + label = "", + legend=:topleft, + yscale=:log10, + xlabel = "Shapley-based feature importance", #changed name + ylabel = "Time [s]", + clims =(minimum(score), maximum(score)), + colorbar_title = "Importance-time rate") + savefig("featurebench.png") #change file location + +#------------------------------------------------------------------------------ + #sort features by score +# perm = sortperm(score) +# fil[perm] + +# #feature selection algorithm +# while i < length(fs) & (e > e_tol | t > t_tol) +# curr_fs = fs[1:i] +# e,t = train(mach, curr_fs, df) +# i += 1 +# end +# #NOT FINISHED + +# return curr_fs +end diff --git a/src/SmartDiscovery.jl b/src/SmartDiscovery.jl index 46dc773..41c44fd 100644 --- a/src/SmartDiscovery.jl +++ b/src/SmartDiscovery.jl @@ -8,7 +8,7 @@ function smartsolve(alg_path, alg_name, algs; mats = []) # Create result directory - run(`mkdir -p $alg_path`) + mkpath("$alg_path") # Save algorithms BSON.@save "$alg_path/algs-$alg_name.bson" algs @@ -31,10 +31,10 @@ function smartsolve(alg_path, alg_name, algs; CSV.write("$alg_path/smartdb-$alg_name.csv", smartdb) # Smart model - features = [:length, :sparsity, :condnumber] - features_train, labels_train, + features = smartfeatures(smartdb) + features_train, labels_train, features_test, labels_test = create_datasets(smartdb, features) - smartmodel = train_smart_choice_model(features_train, labels_train) + smartmodel = train_smart_choice_model(features_train, labels_train) BSON.@save "$alg_path/features-$alg_name.bson" features BSON.@save "$alg_path/smartmodel-$alg_name.bson" smartmodel @@ -104,7 +104,7 @@ function discover!(i, db, mat_patterns, algs, ns) end function discover!(i, db, mat_patterns, algs) - for (j, mat_pattern) in enumerate(mat_patterns) + for (j, mat_pattern) in enumerate(mat_patterns) println("Experiment:$i, pattern number:$j, pattern:$mat_pattern.") flush(stdout) try diff --git a/src/SmartSolve.jl b/src/SmartSolve.jl index 2e0daa1..a699408 100644 --- a/src/SmartSolve.jl +++ b/src/SmartSolve.jl @@ -11,6 +11,14 @@ using Random using BenchmarkTools using BSON +using ShapML +using MLJ +using Plots +using TreeRecipe +using CategoricalArrays +using SparseArrays +using ColorSchemes + include("SmartDiscovery.jl") include("SmartDB.jl") include("SmartModel.jl") From 7fa1d8a3b934fc0498e9e426c9b6ecc0c2e2d4bd Mon Sep 17 00:00:00 2001 From: Maeve Chen Date: Fri, 8 Nov 2024 13:06:04 -0500 Subject: [PATCH 2/5] 11/8/24 --- Project.toml | 10 + examples/smartlu/Manifest.toml | 2467 ++++++++++++++++++++++++++ examples/smartlu/Project.toml | 9 + examples/smartlu/generate_smartlu.jl | 5 +- src/SmartDB.jl | 35 +- src/SmartDiscovery.jl | 5 + src/featurebenchmark.jl | 102 ++ src/smartdb-lu.csv | 140 ++ 8 files changed, 2757 insertions(+), 16 deletions(-) create mode 100644 examples/smartlu/Manifest.toml create mode 100644 src/featurebenchmark.jl create mode 100644 src/smartdb-lu.csv diff --git a/Project.toml b/Project.toml index b823a08..0cd73f5 100644 --- a/Project.toml +++ b/Project.toml @@ -9,11 +9,21 @@ BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" DecisionTree = "7806a523-6efd-50cb-b5f6-3fa6f1930dbb" +Gadfly = "c91e804a-d5a3-530f-b6f0-dfbca275c004" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MKL = "33e6dc65-8f57-5167-99aa-e5a354878fb2" +MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" +MLJDecisionTreeInterface = "c6f25543-311c-4c74-83dc-3ea6d1015661" MatrixDepot = "b51810bb-c9f3-55da-ae3c-350fc1fbce05" OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a" +RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" ScikitLearn = "3646fa90-6ef7-5e7e-9f22-8aca16db6324" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" +ShapML = "8523bd24-6f66-414b-9e1e-b02db3916d64" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +TreeRecipe = "1fa7448c-8018-415c-9278-624f5a245816" +CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597" +ColorSchemes = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" diff --git a/examples/smartlu/Manifest.toml b/examples/smartlu/Manifest.toml new file mode 100644 index 0000000..bb9bf70 --- /dev/null +++ b/examples/smartlu/Manifest.toml @@ -0,0 +1,2467 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.11.1" +manifest_format = "2.0" +project_hash = "8b6352aaf8aaad41614ad7e62e19b84748f0101a" + +[[deps.ARFFFiles]] +deps = ["CategoricalArrays", "Dates", "Parsers", "Tables"] +git-tree-sha1 = "678eb18590a8bc6674363da4d5faa4ac09c40a18" +uuid = "da404889-ca92-49ff-9e8b-0aa6b4d38dc8" +version = "1.5.0" + +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" +weakdeps = ["ChainRulesCore", "Test"] + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + +[[deps.AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] +git-tree-sha1 = "b392ede862e506d451fc1616e79aa6f4c673dab8" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.38" + + [deps.Accessors.extensions] + AccessorsAxisKeysExt = "AxisKeys" + AccessorsDatesExt = "Dates" + AccessorsIntervalSetsExt = "IntervalSets" + AccessorsStaticArraysExt = "StaticArrays" + AccessorsStructArraysExt = "StructArrays" + AccessorsTestExt = "Test" + AccessorsUnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + Requires = "ae029012-a4dd-5104-9daa-d747884805df" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "50c3c56a52972d78e8be9fd135bfb91c9574c140" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.1.1" +weakdeps = ["StaticArrays"] + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + +[[deps.AliasTables]] +deps = ["PtrArrays", "Random"] +git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" +uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" +version = "1.1.3" + +[[deps.ArgCheck]] +git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" +uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" +version = "2.3.0" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.2" + +[[deps.ArnoldiMethod]] +deps = ["LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" +uuid = "ec485272-7323-5ecc-a04f-4719b315124d" +version = "0.4.0" + +[[deps.Arpack]] +deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] +git-tree-sha1 = "9b9b347613394885fd1c8c7729bfc60528faa436" +uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" +version = "0.5.4" + +[[deps.Arpack_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"] +git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e" +uuid = "68821587-b530-5797-8361-c406ea357684" +version = "3.5.1+1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" + +[[deps.AssetRegistry]] +deps = ["Distributed", "JSON", "Pidfile", "SHA", "Test"] +git-tree-sha1 = "b25e88db7944f98789130d7b503276bc34bc098e" +uuid = "bf4720bc-e11a-5d0c-854e-bdca1663c893" +version = "0.1.0" + +[[deps.Atomix]] +deps = ["UnsafeAtomics"] +git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" +uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" +version = "0.1.0" + +[[deps.AxisAlgorithms]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] +git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" +uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" +version = "1.1.0" + +[[deps.BSON]] +git-tree-sha1 = "4c3e506685c527ac6a54ccc0c8c76fd6f91b42fb" +uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" +version = "0.3.9" + +[[deps.BangBang]] +deps = ["Accessors", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires"] +git-tree-sha1 = "e2144b631226d9eeab2d746ca8880b7ccff504ae" +uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" +version = "0.4.3" + + [deps.BangBang.extensions] + BangBangChainRulesCoreExt = "ChainRulesCore" + BangBangDataFramesExt = "DataFrames" + BangBangStaticArraysExt = "StaticArrays" + BangBangStructArraysExt = "StructArrays" + BangBangTablesExt = "Tables" + BangBangTypedTablesExt = "TypedTables" + + [deps.BangBang.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" + TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.Baselet]] +git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" +uuid = "9718e550-a3fa-408a-8086-8db961cd8217" +version = "0.1.1" + +[[deps.BenchmarkTools]] +deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "f1dff6729bc61f4d49e140da1af55dcd1ac97b2f" +uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +version = "1.5.0" + +[[deps.BitFlags]] +git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.9" + +[[deps.Blink]] +deps = ["Base64", "Distributed", "HTTP", "JSExpr", "JSON", "Lazy", "Logging", "MacroTools", "Mustache", "Mux", "Pkg", "Reexport", "Sockets", "WebIO"] +git-tree-sha1 = "bc93511973d1f949d45b0ea17878e6cb0ad484a1" +uuid = "ad839575-38b3-5650-b840-f874b8c74a25" +version = "0.12.9" + +[[deps.BufferedStreams]] +git-tree-sha1 = "6863c5b7fc997eadcabdbaf6c5f201dc30032643" +uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d" +version = "1.2.2" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "8873e196c2eb87962a2048b3b8e08946535864a1" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.8+2" + +[[deps.CEnum]] +git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.4.2" + +[[deps.CSV]] +deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] +git-tree-sha1 = "deddd8725e5e1cc49ee205a1964256043720a6c3" +uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" +version = "0.10.15" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "009060c9a6168704143100f36ab08f06c2af4642" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.18.2+1" + +[[deps.CategoricalArrays]] +deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] +git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" +uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" +version = "0.10.8" + + [deps.CategoricalArrays.extensions] + CategoricalArraysJSONExt = "JSON" + CategoricalArraysRecipesBaseExt = "RecipesBase" + CategoricalArraysSentinelArraysExt = "SentinelArrays" + CategoricalArraysStructTypesExt = "StructTypes" + + [deps.CategoricalArrays.weakdeps] + JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" + StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" + +[[deps.CategoricalDistributions]] +deps = ["CategoricalArrays", "Distributions", "Missings", "OrderedCollections", "Random", "ScientificTypes"] +git-tree-sha1 = "926862f549a82d6c3a7145bc7f1adff2a91a39f0" +uuid = "af321ab8-2d2e-40a6-b165-3d674595d28e" +version = "0.1.15" + + [deps.CategoricalDistributions.extensions] + UnivariateFiniteDisplayExt = "UnicodePlots" + + [deps.CategoricalDistributions.weakdeps] + UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.25.0" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.ChannelBuffers]] +deps = ["CodecZlib", "Downloads", "Serialization", "Tar", "TranscodingStreams"] +git-tree-sha1 = "93b5983aac04174692b417d935643817a8160e90" +uuid = "79a69506-cdd1-4876-b8e5-7af85e53af4f" +version = "0.4.2" + +[[deps.Clustering]] +deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"] +git-tree-sha1 = "9ebb045901e9bbf58767a9f34ff89831ed711aae" +uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" +version = "0.15.7" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "bce6804e5e6044c6daab27bb533d1295e4a2e759" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.6" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "13951eb68769ad1cd460cdb2e64e5e95f1bf123d" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.27.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.5" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.10.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.11" + +[[deps.Combinatorics]] +git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.2" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.16.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.1.1+0" + +[[deps.Compose]] +deps = ["Base64", "Colors", "DataStructures", "Dates", "IterTools", "JSON", "LinearAlgebra", "Measures", "Printf", "Random", "Requires", "Statistics", "UUIDs"] +git-tree-sha1 = "bf6570a34c850f99407b494757f5d7ad233a7257" +uuid = "a81c6b42-2e10-5240-aca2-a61377ecd94b" +version = "0.9.5" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ComputationalResources]] +git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7" +uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3" +version = "0.3.2" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "ea32b83ca4fefa1768dc84e504cc0a94fb1ab8d1" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.4.2" + +[[deps.Conda]] +deps = ["Downloads", "JSON", "VersionParsing"] +git-tree-sha1 = "b19db3927f0db4151cb86d073689f2428e524576" +uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" +version = "1.10.2" + +[[deps.ConstructionBase]] +git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.8" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.ContextVariablesX]] +deps = ["Compat", "Logging", "UUIDs"] +git-tree-sha1 = "25cc3803f1030ab855e383129dcd3dc294e322cc" +uuid = "6add18c4-b38d-439d-96f6-d6bc489c04c5" +version = "0.1.3" + +[[deps.Contour]] +git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.3" + +[[deps.CoupledFields]] +deps = ["LinearAlgebra", "Statistics", "StatsBase"] +git-tree-sha1 = "6c9671364c68c1158ac2524ac881536195b7e7bc" +uuid = "7ad07ef1-bdf2-5661-9d2b-286fd4296dac" +version = "0.2.0" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataFrames]] +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "1.7.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.20" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" + +[[deps.Dbus_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "fc173b380865f70627d7dd1190dc2fce6cc105af" +uuid = "ee1fde0b-3d02-5ea6-8484-8dfef6360eab" +version = "1.14.10+0" + +[[deps.DecisionTree]] +deps = ["AbstractTrees", "DelimitedFiles", "LinearAlgebra", "Random", "ScikitLearnBase", "Statistics"] +git-tree-sha1 = "526ca14aaaf2d5a0e242f3a8a7966eb9065d7d78" +uuid = "7806a523-6efd-50cb-b5f6-3fa6f1930dbb" +version = "0.12.4" + +[[deps.DefineSingletons]] +git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" +uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" +version = "0.1.2" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.12" +weakdeps = ["ChainRulesCore", "SparseArrays"] + + [deps.Distances.extensions] + DistancesChainRulesCoreExt = "ChainRulesCore" + DistancesSparseArraysExt = "SparseArrays" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" + +[[deps.Distributions]] +deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "3101c32aab536e7a27b1763c0797dba151b899ad" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.113" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.EarCut_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" +uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +version = "2.2.4+0" + +[[deps.EarlyStopping]] +deps = ["Dates", "Statistics"] +git-tree-sha1 = "98fdf08b707aaf69f524a6cd0a67858cefe0cfb6" +uuid = "792122b4-ca99-40de-a6bc-6742525f08b6" +version = "0.3.0" + +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.10" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.6.2+0" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + +[[deps.Extents]] +git-tree-sha1 = "81023caa0021a41712685887db1fc03db26f41f5" +uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" +version = "0.1.4" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "53ebe7511fa11d33bec688a9178fac4e49eeee00" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.2" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.4.4+1" + +[[deps.FFTW]] +deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] +git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.8.0" + +[[deps.FFTW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4d81ed14783ec49ce9f2e168208a12ce1815aa25" +uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" +version = "3.3.10+1" + +[[deps.FLoops]] +deps = ["BangBang", "Compat", "FLoopsBase", "InitialValues", "JuliaVariables", "MLStyle", "Serialization", "Setfield", "Transducers"] +git-tree-sha1 = "0a2e5873e9a5f54abb06418d57a8df689336a660" +uuid = "cc61a311-1640-44b5-9fba-1b764f453329" +version = "0.2.2" + +[[deps.FLoopsBase]] +deps = ["ContextVariablesX"] +git-tree-sha1 = "656f7a6859be8673bf1f35da5670246b923964f7" +uuid = "b9860ae5-e623-471e-878b-f6a53c775ea6" +version = "0.1.1" + +[[deps.FileIO]] +deps = ["Pkg", "Requires", "UUIDs"] +git-tree-sha1 = "62ca0547a14c57e98154423419d8a342dca75ca9" +uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +version = "1.16.4" + +[[deps.FilePathsBase]] +deps = ["Compat", "Dates"] +git-tree-sha1 = "7878ff7172a8e6beedd1dea14bd27c3c6340d361" +uuid = "48062228-2e41-5def-b9a4-89aafe57970f" +version = "0.9.22" +weakdeps = ["Mmap", "Test"] + + [deps.FilePathsBase.extensions] + FilePathsBaseMmapExt = "Mmap" + FilePathsBaseTestExt = "Test" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" + +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.13.0" +weakdeps = ["PDMats", "SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.5" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] +git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.13.96+0" + +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.13.2+0" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.14+0" + +[[deps.FunctionalCollections]] +deps = ["Test"] +git-tree-sha1 = "04cb9cfaa6ba5311973994fe3496ddec19b6292a" +uuid = "de31a74c-ac4f-5751-b3fd-e18cd04993ca" +version = "0.5.0" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" + +[[deps.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "libdecor_jll", "xkbcommon_jll"] +git-tree-sha1 = "532f9126ad901533af1d4f5c198867227a7bb077" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.4.0+1" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.1.6" + +[[deps.GR]] +deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] +git-tree-sha1 = "ee28ddcd5517d54e417182fec3886e7412d3926f" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.73.8" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "f31929b9e67066bee48eec8b03c0df47d31a74b3" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.73.8+0" + +[[deps.Gadfly]] +deps = ["Base64", "CategoricalArrays", "Colors", "Compose", "Contour", "CoupledFields", "DataAPI", "DataStructures", "Dates", "Distributions", "DocStringExtensions", "Hexagons", "IndirectArrays", "IterTools", "JSON", "Juno", "KernelDensity", "LinearAlgebra", "Loess", "Measures", "Printf", "REPL", "Random", "Requires", "Showoff", "Statistics"] +git-tree-sha1 = "d546e18920e28505e9856e1dfc36cff066907c71" +uuid = "c91e804a-d5a3-530f-b6f0-dfbca275c004" +version = "1.4.0" + +[[deps.GeoFormatTypes]] +git-tree-sha1 = "59107c179a586f0fe667024c5eb7033e81333271" +uuid = "68eda718-8dee-11e9-39e7-89f7f65f511f" +version = "0.4.2" + +[[deps.GeoInterface]] +deps = ["Extents", "GeoFormatTypes"] +git-tree-sha1 = "826b4fd69438d9ce4d2b19de6bc2f970f45f0f88" +uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" +version = "1.3.8" + +[[deps.GeometryBasics]] +deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] +git-tree-sha1 = "b62f2b2d76cee0d61a2ef2b3118cd2a3215d3134" +uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +version = "0.4.11" + +[[deps.Gettext_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.21.0+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.80.5+0" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.14+0" + +[[deps.Graphs]] +deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "1dc470db8b1131cfc7fb4c115de89fe391b9e780" +uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" +version = "1.12.0" + +[[deps.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[deps.HDF5]] +deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] +git-tree-sha1 = "e856eef26cf5bf2b0f95f8f4fc37553c72c8641c" +uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" +version = "0.17.2" + + [deps.HDF5.extensions] + MPIExt = "MPI" + + [deps.HDF5.weakdeps] + MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" + +[[deps.HDF5_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] +git-tree-sha1 = "82a471768b513dc39e471540fdadc84ff80ff997" +uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" +version = "1.14.3+3" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "bc3f416a965ae61968c20d0ad867556367f2817d" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.9" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "401e4f3f30f43af2c8478fc008da50096ea5240f" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "8.3.1+0" + +[[deps.Hexagons]] +deps = ["Test"] +git-tree-sha1 = "de4a6f9e7c4710ced6838ca906f81905f7385fd6" +uuid = "a1b4810d-1bce-5fbd-ac56-80944d57a21f" +version = "0.2.0" + +[[deps.Hiccup]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "6187bb2d5fcbb2007c39e7ac53308b0d371124bd" +uuid = "9fb69e20-1954-56bb-a84f-559cc56a8ff7" +version = "0.2.2" + +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "50aedf345a709ab75872f80a2779568dc0bb461b" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.11.2+1" + +[[deps.HypergeometricFunctions]] +deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "7c4195be1649ae622304031ed46a2f4df989f1eb" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.24" + +[[deps.IndirectArrays]] +git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f" +uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959" +version = "1.0.0" + +[[deps.Inflate]] +git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" +uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" +version = "0.1.5" + +[[deps.InitialValues]] +git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" +uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" +version = "0.3.1" + +[[deps.InlineStrings]] +git-tree-sha1 = "45521d31238e87ee9f9732561bfee12d4eebd52d" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.2" + + [deps.InlineStrings.extensions] + ArrowTypesExt = "ArrowTypes" + ParsersExt = "Parsers" + + [deps.InlineStrings.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2024.2.1+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" + +[[deps.Interpolations]] +deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0" +uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" +version = "0.15.1" +weakdeps = ["Unitful"] + + [deps.Interpolations.extensions] + InterpolationsUnitfulExt = "Unitful" + +[[deps.InverseFunctions]] +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.17" +weakdeps = ["Dates", "Test"] + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + +[[deps.InvertedIndices]] +git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.3.0" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IterTools]] +git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.10.0" + +[[deps.IterationControl]] +deps = ["EarlyStopping", "InteractiveUtils"] +git-tree-sha1 = "e663925ebc3d93c1150a7570d114f9ea2f664726" +uuid = "b3c1a2ee-3fec-4384-bf48-272ea71de57c" +version = "0.5.4" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLFzf]] +deps = ["Pipe", "REPL", "Random", "fzf_jll"] +git-tree-sha1 = "39d64b09147620f5ffbf6b2d3255be3c901bec63" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.8" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "be3dc50a92e5a386872a493a10050136d4703f9b" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.6.1" + +[[deps.JSExpr]] +deps = ["JSON", "MacroTools", "Observables", "WebIO"] +git-tree-sha1 = "b413a73785b98474d8af24fd4c8a975e31df3658" +uuid = "97c1335a-c9c5-57fe-bc5d-ec35cebe8660" +version = "0.5.4" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "25ee0be4d43d0269027024d75a24c24d6c6e590c" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.0.4+0" + +[[deps.JuliaVariables]] +deps = ["MLStyle", "NameResolution"] +git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" +uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" +version = "0.2.4" + +[[deps.Juno]] +deps = ["Base64", "Logging", "Media", "Profile"] +git-tree-sha1 = "07cb43290a840908a771552911a6274bc6c072c7" +uuid = "e5e0dc1b-0480-54bc-9374-aad01c23163d" +version = "0.8.4" + +[[deps.KLU]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] +git-tree-sha1 = "07649c499349dad9f08dde4243a4c597064663e9" +uuid = "ef3ab10e-7fda-4108-b977-705223b18434" +version = "0.6.0" + +[[deps.Kaleido_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "43032da5832754f58d14a91ffbe86d5f176acda9" +uuid = "f7e6163d-2fa5-5f23-b69c-1db539e41963" +version = "0.2.1+0" + +[[deps.KernelAbstractions]] +deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] +git-tree-sha1 = "e73a077abc7fe798fe940deabe30ef6c66bdde52" +uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" +version = "0.9.29" + + [deps.KernelAbstractions.extensions] + EnzymeExt = "EnzymeCore" + LinearAlgebraExt = "LinearAlgebra" + SparseArraysExt = "SparseArrays" + + [deps.KernelAbstractions.weakdeps] + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.KernelDensity]] +deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] +git-tree-sha1 = "7d703202e65efa1369de1279c162b915e245eed1" +uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" +version = "0.6.9" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.2+0" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "36bdbc52f13a7d1dcb0f3cd694e01677a515655b" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "4.0.0+0" + +[[deps.LLVM]] +deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] +git-tree-sha1 = "d422dfd9707bec6617335dc2ea3c5172a87d5908" +uuid = "929cbde3-209d-540e-8aea-75f648917ca0" +version = "9.1.3" + + [deps.LLVM.extensions] + BFloat16sExt = "BFloat16s" + + [deps.LLVM.weakdeps] + BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" + +[[deps.LLVMExtra_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] +git-tree-sha1 = "05a8bd5a42309a9ec82f700876903abce1017dd3" +uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" +version = "0.0.34+0" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "78211fb6cbc872f77cad3fc0b6cf647d923f4929" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "18.1.7+0" + +[[deps.LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.2+1" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.0" + +[[deps.Latexify]] +deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] +git-tree-sha1 = "ce5f5621cac23a86011836badfedf664a612cee4" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.5" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SparseArraysExt = "SparseArrays" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LatinHypercubeSampling]] +deps = ["Random", "StableRNGs", "StatsBase", "Test"] +git-tree-sha1 = "825289d43c753c7f1bf9bed334c253e9913997f8" +uuid = "a5e1c1ea-c99a-51d3-a14d-a9a37257b02d" +version = "1.9.0" + +[[deps.Lazy]] +deps = ["MacroTools"] +git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" +uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" +version = "0.15.1" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" + +[[deps.LearnAPI]] +deps = ["InteractiveUtils", "Statistics"] +git-tree-sha1 = "ec695822c1faaaa64cee32d0b21505e1977b4809" +uuid = "92ad9a40-7767-427a-9ee6-6e577f1266cb" +version = "0.1.0" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.6.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.7.2+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.2+1" + +[[deps.Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] +git-tree-sha1 = "8be878062e0ffa2c3f67bb58a595375eda5de80b" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.11.0+0" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.6.0+0" + +[[deps.Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c6ce1e19f3aec9b59186bdf06cdf3c4fc5f5f3e6" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.50.0+0" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "61dfdba58e585066d8bce214c5a51eaa0539f269" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+1" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.40.1+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "b404131d06f7886402758c9ce2214b636eb4d54a" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.7.0+0" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.40.1+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" + +[[deps.Loess]] +deps = ["Distances", "LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "f749e7351f120b3566e5923fefdf8e52ba5ec7f9" +uuid = "4345ca2d-374a-55d4-8d30-97f9976e7612" +version = "0.6.4" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.28" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.1.0" + +[[deps.MAT]] +deps = ["BufferedStreams", "CodecZlib", "HDF5", "SparseArrays"] +git-tree-sha1 = "1d2dd9b186742b0f317f2530ddcbf00eebb18e96" +uuid = "23992714-dd62-5051-b70f-ba57cb901cac" +version = "0.10.7" + +[[deps.MKL]] +deps = ["Artifacts", "Libdl", "LinearAlgebra", "Logging", "MKL_jll"] +git-tree-sha1 = "18b02c359c1150bf182978e18dbd9ce7ccc860af" +uuid = "33e6dc65-8f57-5167-99aa-e5a354878fb2" +version = "0.7.0" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2024.2.0+0" + +[[deps.MLFlowClient]] +deps = ["Dates", "FilePathsBase", "HTTP", "JSON", "ShowCases", "URIs", "UUIDs"] +git-tree-sha1 = "5cc2a5453856e79f4772269fbe6b19fcdcba391a" +uuid = "64a0f543-368b-4a9a-827a-e71edb2a0b83" +version = "0.4.7" + +[[deps.MLJ]] +deps = ["CategoricalArrays", "ComputationalResources", "Distributed", "Distributions", "LinearAlgebra", "MLJBase", "MLJEnsembles", "MLJFlow", "MLJIteration", "MLJModels", "MLJTuning", "OpenML", "Pkg", "ProgressMeter", "Random", "Reexport", "ScientificTypes", "StatisticalMeasures", "Statistics", "StatsBase", "Tables"] +git-tree-sha1 = "58d17a367ee211ade6e53f83a9cc5adf9d26f833" +uuid = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" +version = "0.20.0" + +[[deps.MLJBase]] +deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Dates", "DelimitedFiles", "Distributed", "Distributions", "InteractiveUtils", "InvertedIndices", "LearnAPI", "LinearAlgebra", "MLJModelInterface", "Missings", "OrderedCollections", "Parameters", "PrettyTables", "ProgressMeter", "Random", "RecipesBase", "Reexport", "ScientificTypes", "Serialization", "StatisticalMeasuresBase", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] +git-tree-sha1 = "6f45e12073bc2f2e73ed0473391db38c31e879c9" +uuid = "a7f614a8-145f-11e9-1d2a-a57a1082229d" +version = "1.7.0" +weakdeps = ["StatisticalMeasures"] + + [deps.MLJBase.extensions] + DefaultMeasuresExt = "StatisticalMeasures" + +[[deps.MLJDecisionTreeInterface]] +deps = ["CategoricalArrays", "DecisionTree", "MLJModelInterface", "Random", "Tables"] +git-tree-sha1 = "90ef4d3b6cacec631c57cc034e1e61b4aa0ce511" +uuid = "c6f25543-311c-4c74-83dc-3ea6d1015661" +version = "0.4.2" + +[[deps.MLJEnsembles]] +deps = ["CategoricalArrays", "CategoricalDistributions", "ComputationalResources", "Distributed", "Distributions", "MLJModelInterface", "ProgressMeter", "Random", "ScientificTypesBase", "StatisticalMeasuresBase", "StatsBase"] +git-tree-sha1 = "84a5be55a364bb6b6dc7780bbd64317ebdd3ad1e" +uuid = "50ed68f4-41fd-4504-931a-ed422449fee0" +version = "0.4.3" + +[[deps.MLJFlow]] +deps = ["MLFlowClient", "MLJBase", "MLJModelInterface"] +git-tree-sha1 = "dc0de70a794c6d4c1aa4bde8196770c6b6e6b550" +uuid = "7b7b8358-b45c-48ea-a8ef-7ca328ad328f" +version = "0.2.0" + +[[deps.MLJIteration]] +deps = ["IterationControl", "MLJBase", "Random", "Serialization"] +git-tree-sha1 = "ad16cfd261e28204847f509d1221a581286448ae" +uuid = "614be32b-d00c-4edb-bd02-1eb411ab5e55" +version = "0.6.3" + +[[deps.MLJModelInterface]] +deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] +git-tree-sha1 = "ceaff6618408d0e412619321ae43b33b40c1a733" +uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" +version = "1.11.0" + +[[deps.MLJModels]] +deps = ["CategoricalArrays", "CategoricalDistributions", "Combinatorics", "Dates", "Distances", "Distributions", "InteractiveUtils", "LinearAlgebra", "MLJModelInterface", "Markdown", "OrderedCollections", "Parameters", "Pkg", "PrettyPrinting", "REPL", "Random", "RelocatableFolders", "ScientificTypes", "StatisticalTraits", "Statistics", "StatsBase", "Tables"] +git-tree-sha1 = "410da88e0e6ece5467293d2c76b51b7c6df7d072" +uuid = "d491faf4-2d78-11e9-2867-c94bc002c0b7" +version = "0.16.17" + +[[deps.MLJTuning]] +deps = ["ComputationalResources", "Distributed", "Distributions", "LatinHypercubeSampling", "MLJBase", "ProgressMeter", "Random", "RecipesBase", "StatisticalMeasuresBase"] +git-tree-sha1 = "38aab60b1274ce7d6da784808e3be69e585dbbf6" +uuid = "03970b2e-30c4-11ea-3135-d1576263f10f" +version = "0.8.8" + +[[deps.MLStyle]] +git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" +uuid = "d8e11817-5142-5d16-987a-aa16d5891078" +version = "0.4.17" + +[[deps.MLUtils]] +deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] +git-tree-sha1 = "b45738c2e3d0d402dffa32b2c1654759a2ac35a4" +uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" +version = "0.4.4" + +[[deps.MPICH_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "7715e65c47ba3941c502bffb7f266a41a7f54423" +uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" +version = "4.2.3+0" + +[[deps.MPIPreferences]] +deps = ["Libdl", "Preferences"] +git-tree-sha1 = "c105fe467859e7f6e9a852cb15cb4301126fac07" +uuid = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267" +version = "0.1.11" + +[[deps.MPItrampoline_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "70e830dab5d0775183c99fc75e4c24c614ed7142" +uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" +version = "5.5.1+0" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.13" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" + +[[deps.MatrixDepot]] +deps = ["ChannelBuffers", "DataFrames", "LinearAlgebra", "MAT", "Markdown", "Mmap", "Scratch", "Serialization", "SparseArrays"] +git-tree-sha1 = "b7e11245178a57be72e47a69468dca6b73f192d8" +uuid = "b51810bb-c9f3-55da-ae3c-350fc1fbce05" +version = "1.0.13" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.6+0" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" + +[[deps.Media]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "75a54abd10709c01f1b86b84ec225d26e840ed58" +uuid = "e89f7d12-3494-54d1-8411-f7d8b9ae1f27" +version = "0.5.0" + +[[deps.MicroCollections]] +deps = ["Accessors", "BangBang", "InitialValues"] +git-tree-sha1 = "44d32db644e84c75dab479f1bc15ee76a1a3618f" +uuid = "128add7d-3638-4c79-886c-908ea0c25c34" +version = "0.2.0" + +[[deps.MicrosoftMPI_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" +uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" +version = "10.1.4+2" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.2.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" + +[[deps.Mocking]] +deps = ["Compat", "ExprTools"] +git-tree-sha1 = "2c140d60d7cb82badf06d8783800d0bcd1a7daa2" +uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" +version = "0.8.1" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.12.12" + +[[deps.MultivariateStats]] +deps = ["Arpack", "Distributions", "LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI", "StatsBase"] +git-tree-sha1 = "816620e3aac93e5b5359e4fdaf23ca4525b00ddf" +uuid = "6f286f6a-111f-5878-ab1e-185364afe411" +version = "0.10.3" + +[[deps.Mustache]] +deps = ["Printf", "Tables"] +git-tree-sha1 = "3b2db451a872b20519ebb0cec759d3d81a1c6bcb" +uuid = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70" +version = "1.0.20" + +[[deps.Mux]] +deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "MbedTLS", "Pkg", "Sockets"] +git-tree-sha1 = "7295d849103ac4fcbe3b2e439f229c5cc77b9b69" +uuid = "a975b10e-0019-58db-a62f-e48ff68538c9" +version = "1.0.2" + +[[deps.NNlib]] +deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "da09a1e112fd75f9af2a5229323f01b56ec96a4c" +uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" +version = "0.9.24" + + [deps.NNlib.extensions] + NNlibAMDGPUExt = "AMDGPU" + NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] + NNlibCUDAExt = "CUDA" + NNlibEnzymeCoreExt = "EnzymeCore" + NNlibFFTWExt = "FFTW" + NNlibForwardDiffExt = "ForwardDiff" + + [deps.NNlib.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NameResolution]] +deps = ["PrettyPrint"] +git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" +uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" +version = "0.1.5" + +[[deps.NearestNeighbors]] +deps = ["Distances", "StaticArrays"] +git-tree-sha1 = "3cebfc94a0754cc329ebc3bab1e6c89621e791ad" +uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" +version = "0.4.20" + +[[deps.NetworkLayout]] +deps = ["GeometryBasics", "LinearAlgebra", "Random", "Requires", "StaticArrays"] +git-tree-sha1 = "0c51e19351dc1eecc61bc23caaf2262e7ba71973" +uuid = "46757867-2c16-5918-afeb-47bfcb05e46a" +version = "0.4.7" +weakdeps = ["Graphs"] + + [deps.NetworkLayout.extensions] + NetworkLayoutGraphsExt = "Graphs" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.Observables]] +git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" +uuid = "510215fc-4207-5dde-b226-833fc4488ee2" +version = "0.5.5" + +[[deps.OffsetArrays]] +git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.14.1" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+1" + +[[deps.OpenBLAS32_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "dd806c813429ff09878ea3eeb317818f3ca02871" +uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" +version = "0.3.28+3" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.27+1" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+2" + +[[deps.OpenML]] +deps = ["ARFFFiles", "HTTP", "JSON", "Markdown", "Pkg", "Scratch"] +git-tree-sha1 = "63603b2b367107e87dbceda4e33c67aed17e50e0" +uuid = "8b6db2d4-7670-4922-a472-f9537c81ab66" +version = "0.3.2" + +[[deps.OpenMPI_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" +uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" +version = "4.1.6+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.3" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.15+1" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6703a85cb3781bd5909d48730a67205f3f31a575" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.3+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+1" + +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.31" + +[[deps.Pango_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e127b609fb9ecba6f201ba7ab753d5a605d53801" +uuid = "36c8627f-9965-5494-a995-c6b170f724f3" +version = "1.54.1+0" + +[[deps.Parameters]] +deps = ["OrderedCollections", "UnPack"] +git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.1" + +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" + +[[deps.Pipe]] +git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" +uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" +version = "1.3.0" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.43.4+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.11.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "41031ef3a1be6f5bbbf3e8073f210556daeae5ca" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.3.0" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"] +git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.4.3" + +[[deps.PlotlyBase]] +deps = ["ColorSchemes", "Dates", "DelimitedFiles", "DocStringExtensions", "JSON", "LaTeXStrings", "Logging", "Parameters", "Pkg", "REPL", "Requires", "Statistics", "UUIDs"] +git-tree-sha1 = "56baf69781fc5e61607c3e46227ab17f7040ffa2" +uuid = "a03496cd-edff-5a9b-9e67-9cda94a718b5" +version = "0.8.19" + +[[deps.PlotlyJS]] +deps = ["Base64", "Blink", "DelimitedFiles", "JSExpr", "JSON", "Kaleido_jll", "Markdown", "Pkg", "PlotlyBase", "PlotlyKaleido", "REPL", "Reexport", "Requires", "WebIO"] +git-tree-sha1 = "e415b25fdec06e57590a7d5ac8e0cf662fa317e2" +uuid = "f0f68f2c-4968-5e81-91da-67840de0976a" +version = "0.18.15" + + [deps.PlotlyJS.extensions] + CSVExt = "CSV" + DataFramesExt = ["DataFrames", "CSV"] + IJuliaExt = "IJulia" + JSON3Ext = "JSON3" + + [deps.PlotlyJS.weakdeps] + CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" + +[[deps.PlotlyKaleido]] +deps = ["Base64", "JSON", "Kaleido_jll"] +git-tree-sha1 = "3210de4d88af7ca5de9e26305758a59aabc48aac" +uuid = "f2990250-8cf9-495f-b13a-cce12b45703c" +version = "2.2.5" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "45470145863035bb124ca51b320ed35d071cc6c2" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.40.8" + + [deps.Plots.extensions] + FileIOExt = "FileIO" + GeometryBasicsExt = "GeometryBasics" + IJuliaExt = "IJulia" + ImageInTerminalExt = "ImageInTerminal" + UnitfulExt = "Unitful" + + [deps.Plots.weakdeps] + FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.PooledArrays]] +deps = ["DataAPI", "Future"] +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.4.3" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.1" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.3" + +[[deps.PrettyPrint]] +git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" +uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" +version = "0.2.0" + +[[deps.PrettyPrinting]] +git-tree-sha1 = "142ee93724a9c5d04d78df7006670a93ed1b244e" +uuid = "54e16d92-306c-5ea0-a30b-337be88ac337" +version = "0.4.2" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.4.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" + +[[deps.Profile]] +uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" +version = "1.11.0" + +[[deps.ProgressMeter]] +deps = ["Distributed", "Printf"] +git-tree-sha1 = "8f6bc219586aef8baf0ff9a5fe16ee9c70cb65e4" +uuid = "92933f4c-e287-5a05-a399-4b506db050ca" +version = "1.10.2" + +[[deps.PtrArrays]] +git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.2.1" + +[[deps.PyCall]] +deps = ["Conda", "Dates", "Libdl", "LinearAlgebra", "MacroTools", "Serialization", "VersionParsing"] +git-tree-sha1 = "9816a3826b0ebf49ab4926e2b18842ad8b5c8f04" +uuid = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" +version = "1.96.4" + +[[deps.Qt6Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "492601870742dcd38f233b23c3ec629628c1d724" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.7.1+1" + +[[deps.Qt6Declarative_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll"] +git-tree-sha1 = "e5dd466bf2569fe08c91a2cc29c1003f4797ac3b" +uuid = "629bc702-f1f5-5709-abd5-49b8460ea067" +version = "6.7.1+2" + +[[deps.Qt6ShaderTools_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] +git-tree-sha1 = "1a180aeced866700d4bebc3120ea1451201f16bc" +uuid = "ce943373-25bb-56aa-8eca-768745ed7b5a" +version = "6.7.1+1" + +[[deps.Qt6Wayland_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] +git-tree-sha1 = "729927532d48cf79f49070341e1d918a65aba6b0" +uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" +version = "6.7.1+1" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "cda3b045cf9ef07a08ad46731f5a3165e56cf3da" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.11.1" + + [deps.QuadGK.extensions] + QuadGKEnzymeExt = "Enzyme" + + [deps.QuadGK.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + +[[deps.RData]] +deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] +git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" +uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" +version = "0.8.3" + +[[deps.RDatasets]] +deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] +git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" +uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" +version = "0.7.7" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" + +[[deps.Ratios]] +deps = ["Requires"] +git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" +uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" +version = "0.4.5" +weakdeps = ["FixedPointNumbers"] + + [deps.Ratios.extensions] + RatiosFixedPointNumbersExt = "FixedPointNumbers" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] +git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.12" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.8.0" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.5.1+0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.ScientificTypes]] +deps = ["CategoricalArrays", "ColorTypes", "Dates", "Distributions", "PrettyTables", "Reexport", "ScientificTypesBase", "StatisticalTraits", "Tables"] +git-tree-sha1 = "75ccd10ca65b939dab03b812994e571bf1e3e1da" +uuid = "321657f4-b219-11e9-178b-2701a2544e81" +version = "3.0.2" + +[[deps.ScientificTypesBase]] +git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" +uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" +version = "3.0.0" + +[[deps.ScikitLearn]] +deps = ["Compat", "Conda", "DataFrames", "Distributed", "IterTools", "LinearAlgebra", "MacroTools", "Parameters", "Printf", "PyCall", "Random", "ScikitLearnBase", "SparseArrays", "StatsBase", "VersionParsing"] +git-tree-sha1 = "3df098033358431591827bb86cada0bed744105a" +uuid = "3646fa90-6ef7-5e7e-9f22-8aca16db6324" +version = "0.7.0" + +[[deps.ScikitLearnBase]] +deps = ["LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "7877e55c1523a4b336b433da39c8e8c08d2f221f" +uuid = "6e75b9c4-186b-50bd-896f-2d2496a4843e" +version = "0.5.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "d0553ce4031a081cc42387a9b9c8441b7d99f32d" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.7" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.1" + +[[deps.ShapML]] +deps = ["DataFrames", "Distributed", "Random", "Statistics"] +git-tree-sha1 = "0db184b0d56a440b73bbe0586ab018cf264fa39e" +uuid = "8523bd24-6f66-414b-9e1e-b02db3916d64" +version = "0.3.2" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" + +[[deps.ShowCases]] +git-tree-sha1 = "7f534ad62ab2bd48591bdeac81994ea8c445e4a5" +uuid = "605ecd9f-84a6-4c9e-81e2-4798472b76a3" +version = "0.1.0" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.2.0" + +[[deps.SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.4" + +[[deps.SmartSolve]] +deps = ["BSON", "BenchmarkTools", "CSV", "CategoricalArrays", "ColorSchemes", "DataFrames", "DecisionTree", "Gadfly", "LinearAlgebra", "MKL", "MLJ", "MLJDecisionTreeInterface", "MatrixDepot", "OrderedCollections", "PlotlyJS", "Plots", "RDatasets", "Random", "ScikitLearn", "ShapML", "SparseArrays", "StatsPlots", "TreeRecipe"] +path = "../.." +uuid = "4fbb3a3c-2fa1-4c19-8d57-bae8bc1e16ac" +version = "0.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.1" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.11.0" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.4.0" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.SplittablesBase]] +deps = ["Setfield", "Test"] +git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" +uuid = "171d559e-b47b-412a-8079-5efa626c420e" +version = "0.1.15" + +[[deps.StableRNGs]] +deps = ["Random"] +git-tree-sha1 = "83e6cce8324d49dfaf9ef059227f91ed4441a8e5" +uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" +version = "1.0.2" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "777657803913ffc7e8cc20f0fd04b634f871af8f" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.8" +weakdeps = ["ChainRulesCore", "Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.3" + +[[deps.StatisticalMeasures]] +deps = ["CategoricalArrays", "CategoricalDistributions", "Distributions", "LearnAPI", "LinearAlgebra", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "StatisticalMeasuresBase", "Statistics", "StatsBase"] +git-tree-sha1 = "c1d4318fa41056b839dfbb3ee841f011fa6e8518" +uuid = "a19d573c-0a75-4610-95b3-7071388c7541" +version = "0.1.7" + + [deps.StatisticalMeasures.extensions] + LossFunctionsExt = "LossFunctions" + ScientificTypesExt = "ScientificTypes" + + [deps.StatisticalMeasures.weakdeps] + LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" + ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" + +[[deps.StatisticalMeasuresBase]] +deps = ["CategoricalArrays", "InteractiveUtils", "MLUtils", "MacroTools", "OrderedCollections", "PrecompileTools", "ScientificTypesBase", "Statistics"] +git-tree-sha1 = "17dfb22e2e4ccc9cd59b487dce52883e0151b4d3" +uuid = "c062fc1d-0d66-479b-b6ac-8b44719de4cc" +version = "0.1.1" + +[[deps.StatisticalTraits]] +deps = ["ScientificTypesBase"] +git-tree-sha1 = "542d979f6e756f13f862aa00b224f04f9e445f11" +uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" +version = "3.4.0" + +[[deps.Statistics]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.33.21" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "b423576adc27097764a90e163157bcfc9acf0f46" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.3.2" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.StatsPlots]] +deps = ["AbstractFFTs", "Clustering", "DataStructures", "Distributions", "Interpolations", "KernelDensity", "LinearAlgebra", "MultivariateStats", "NaNMath", "Observables", "Plots", "RecipesBase", "RecipesPipeline", "Reexport", "StatsBase", "TableOperations", "Tables", "Widgets"] +git-tree-sha1 = "3b1dcbf62e469a67f6733ae493401e53d92ff543" +uuid = "f3b207a7-027a-5e70-b257-86293d7955fd" +version = "0.15.7" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.4.0" + +[[deps.StructArrays]] +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.6.18" +weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] + + [deps.StructArrays.extensions] + StructArraysAdaptExt = "Adapt" + StructArraysGPUArraysCoreExt = "GPUArraysCore" + StructArraysSparseArraysExt = "SparseArrays" + StructArraysStaticArraysExt = "StaticArrays" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.7.0+0" + +[[deps.SuperLU]] +deps = ["CEnum", "LinearAlgebra", "SparseArrays", "SuperLU_jll"] +git-tree-sha1 = "cb985c06e3f3d700ea022ceb6ee60cd111398f44" +uuid = "149cae9a-b337-42bd-ac98-00096b14e8a3" +version = "0.1.0" + +[[deps.SuperLU_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Pkg"] +git-tree-sha1 = "c11df7045bbfb8493d086beb549b96d3861d88db" +uuid = "f391fee2-5786-5cc9-9662-0e362ec949e2" +version = "5.3.0+0" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TZJData]] +deps = ["Artifacts"] +git-tree-sha1 = "36b40607bf2bf856828690e097e1c799623b0602" +uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" +version = "1.3.0+2024b" + +[[deps.TableOperations]] +deps = ["SentinelArrays", "Tables", "Test"] +git-tree-sha1 = "e383c87cf2a1dc41fa30c093b2a19877c83e1bc1" +uuid = "ab02a1b2-a7df-11e8-156e-fb1833f50b87" +version = "1.2.0" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.12.0" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" + +[[deps.TimeZones]] +deps = ["Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] +git-tree-sha1 = "33c771f2157712ff4c85931186a4984efbe58934" +uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" +version = "1.19.0" +weakdeps = ["RecipesBase"] + + [deps.TimeZones.extensions] + TimeZonesRecipesBaseExt = "RecipesBase" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.3" + +[[deps.Transducers]] +deps = ["Accessors", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "SplittablesBase", "Tables"] +git-tree-sha1 = "7deeab4ff96b85c5f72c824cae53a1398da3d1cb" +uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" +version = "0.4.84" + + [deps.Transducers.extensions] + TransducersAdaptExt = "Adapt" + TransducersBlockArraysExt = "BlockArrays" + TransducersDataFramesExt = "DataFrames" + TransducersLazyArraysExt = "LazyArrays" + TransducersOnlineStatsBaseExt = "OnlineStatsBase" + TransducersReferenceablesExt = "Referenceables" + + [deps.Transducers.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" + OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" + Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" + +[[deps.TreeRecipe]] +deps = ["AbstractTrees", "Graphs", "NetworkLayout", "RecipesBase"] +git-tree-sha1 = "00ce95c2a39b3688ef66df5726c271bb052a5fd5" +uuid = "1fa7448c-8018-415c-9278-624f5a245816" +version = "0.2.0" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" + +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "d95fe458f26209c66a187b1114df96fd70839efd" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.21.0" +weakdeps = ["ConstructionBase", "InverseFunctions"] + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + InverseFunctionsUnitfulExt = "InverseFunctions" + +[[deps.UnitfulLatexify]] +deps = ["LaTeXStrings", "Latexify", "Unitful"] +git-tree-sha1 = "975c354fcd5f7e1ddcc1f1a23e6e091d99e99bc8" +uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" +version = "1.6.4" + +[[deps.UnsafeAtomics]] +git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" +uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" +version = "0.2.1" + +[[deps.UnsafeAtomicsLLVM]] +deps = ["LLVM", "UnsafeAtomics"] +git-tree-sha1 = "2d17fabcd17e67d7625ce9c531fb9f40b7c42ce4" +uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" +version = "0.2.1" + +[[deps.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.VersionParsing]] +git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" +uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" +version = "1.3.0" + +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + +[[deps.Wayland_jll]] +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.21.0+1" + +[[deps.Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.31.0+0" + +[[deps.WeakRefStrings]] +deps = ["DataAPI", "InlineStrings", "Parsers"] +git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" +uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" +version = "1.4.2" + +[[deps.WebIO]] +deps = ["AssetRegistry", "Base64", "Distributed", "FunctionalCollections", "JSON", "Logging", "Observables", "Pkg", "Random", "Requires", "Sockets", "UUIDs", "WebSockets", "Widgets"] +git-tree-sha1 = "0eef0765186f7452e52236fa42ca8c9b3c11c6e3" +uuid = "0f1e0344-ec1d-5b48-a673-e5cf874b6c29" +version = "0.8.21" + +[[deps.WebSockets]] +deps = ["Base64", "Dates", "HTTP", "Logging", "Sockets"] +git-tree-sha1 = "4162e95e05e79922e44b9952ccbc262832e4ad07" +uuid = "104b5d7c-a370-577a-8038-80a2059c5097" +version = "1.6.0" + +[[deps.Widgets]] +deps = ["Colors", "Dates", "Observables", "OrderedCollections"] +git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" +uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" +version = "0.6.6" + +[[deps.WoodburyMatrices]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" +uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" +version = "1.0.0" + +[[deps.WorkerUtilities]] +git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" +uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" +version = "1.6.1" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.13.4+0" + +[[deps.XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] +git-tree-sha1 = "a54ee957f4c86b526460a720dbc882fa5edcbefc" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.41+0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "15e637a697345f6743674f1322beefbc5dcd5cfc" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.6.3+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.1.1+0" + +[[deps.Xorg_libSM_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] +git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.4+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.6+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.11+0" + +[[deps.Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.0+4" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.4+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.6+0" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "5.0.3+4" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.7.10+4" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.4+4" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.11+0" + +[[deps.Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.1+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "bcd466676fef0878338c61e655629fa7bbc69d8e" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.17.0+0" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.2+0" + +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.4+0" + +[[deps.Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[deps.Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[deps.Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.6+0" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.39.0+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.5.0+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+1" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "555d1076590a6cc2fdee2ef1469451f872d8b41b" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.6+1" + +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] +git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.9+0" + +[[deps.fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "936081b536ae4aa65415d869287d43ef3cb576b2" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.53.0+0" + +[[deps.gperf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" +uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" +version = "3.1.1+0" + +[[deps.libaec_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "46bf7be2917b59b761247be3f317ddf75e50e997" +uuid = "477f73a3-ac25-53e9-8cc3-50b2fa2566f0" +version = "1.1.2+0" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.9.0+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "e17c115d55c5fbb7e52ebedb427a0dca79d4484e" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.15.2+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.11.0+0" + +[[deps.libdecor_jll]] +deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"] +git-tree-sha1 = "9bf7903af251d2050b467f76bdbe57ce541f7f4f" +uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" +version = "0.2.2+0" + +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.11.0+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.3+0" + +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.18.0+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "b70c870239dc3d7bc094eb2d6be9b73d27bef280" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.44+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "490376214c4721cdaca654041f635213c6165cb3" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+2" + +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.6+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.59.0+0" + +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2021.12.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2021.5.5+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.5.0+0" + +[[deps.xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.4.1+1" diff --git a/examples/smartlu/Project.toml b/examples/smartlu/Project.toml index b39f64e..a054eda 100644 --- a/examples/smartlu/Project.toml +++ b/examples/smartlu/Project.toml @@ -1,9 +1,18 @@ [deps] BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597" +ColorSchemes = "35d6a980-a343-548e-a6ea-1d62b119f2f4" DecisionTree = "7806a523-6efd-50cb-b5f6-3fa6f1930dbb" KLU = "ef3ab10e-7fda-4108-b977-705223b18434" MKL = "33e6dc65-8f57-5167-99aa-e5a354878fb2" +MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" +MLJBase = "a7f614a8-145f-11e9-1d2a-a57a1082229d" MatrixDepot = "b51810bb-c9f3-55da-ae3c-350fc1fbce05" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +ShapML = "8523bd24-6f66-414b-9e1e-b02db3916d64" SmartSolve = "4fbb3a3c-2fa1-4c19-8d57-bae8bc1e16ac" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SuperLU = "149cae9a-b337-42bd-ac98-00096b14e8a3" +TreeRecipe = "1fa7448c-8018-415c-9278-624f5a245816" +PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a" diff --git a/examples/smartlu/generate_smartlu.jl b/examples/smartlu/generate_smartlu.jl index eff9c29..e65ab04 100644 --- a/examples/smartlu/generate_smartlu.jl +++ b/examples/smartlu/generate_smartlu.jl @@ -59,8 +59,10 @@ mats = [A, B] # Generate a smart version of your algorithm alg_name = "lu" alg_path = "smart$alg_name/" +# smartsolve(alg_path, alg_name, algs; +# mats = mats, ns = [2^4, 2^8, 2^12]) smartsolve(alg_path, alg_name, algs; - mats = mats, ns = [2^4, 2^8, 2^12]) + mats=mats, ns=[2^4, 2^8]) # Include the newly generated algorithm include("$alg_path/smart$alg_name.jl") @@ -88,4 +90,3 @@ norm(A * x - b, 1) # Plot results makeplots(alg_path, alg_name) - diff --git a/src/SmartDB.jl b/src/SmartDB.jl index 02beecd..df7ddaa 100644 --- a/src/SmartDB.jl +++ b/src/SmartDB.jl @@ -66,7 +66,7 @@ function smartfeatures(df) #1. Calculate feature importance DecisionTreeClassifier = @load DecisionTreeClassifier pkg=DecisionTree model = DecisionTreeClassifier(max_depth=3, min_samples_split=3) - fs = [:length, :n_rows, :n_cols, :rank, :cond, + fs = [:length, :n_rows, :n_cols, :rank, :condnumber, :sparsity, :isdiag, :issymmetric, :ishermitian, :isposdef, :istriu, :istril] fs_vals = [df[:, f] for f in fs] @@ -174,18 +174,25 @@ function smartfeatures(df) colorbar_title = "Importance-time rate") savefig("featurebench.png") #change file location -#------------------------------------------------------------------------------ +# #------------------------------------------------------------------------------ #sort features by score -# perm = sortperm(score) -# fil[perm] - -# #feature selection algorithm -# while i < length(fs) & (e > e_tol | t > t_tol) -# curr_fs = fs[1:i] -# e,t = train(mach, curr_fs, df) -# i += 1 -# end -# #NOT FINISHED - -# return curr_fs + perm = sortperm(score) + fil[perm] + + #feature selection algorithm + i = 1 + e = 0 + t = 10 + e_tol, t_tol = .05, 2 + while i < length(fs) & (e > e_tol | t > t_tol) + curr_fil = fil[1:i] + + features_train, labels_train, + features_test, labels_test = create_datasets(smartdb, curr_fil) + smartmodel = train_smart_choice_model(features_train, labels_train) + e = 1 - accuracy(test_smart_choice_model(smartmodel, features_test, labels_test)) + i += 1 + end + + return curr_fil end diff --git a/src/SmartDiscovery.jl b/src/SmartDiscovery.jl index 41c44fd..3ba9737 100644 --- a/src/SmartDiscovery.jl +++ b/src/SmartDiscovery.jl @@ -32,6 +32,7 @@ function smartsolve(alg_path, alg_name, algs; # Smart model features = smartfeatures(smartdb) + # features = [:length, :sparsity, :condnumber] features_train, labels_train, features_test, labels_test = create_datasets(smartdb, features) smartmodel = train_smart_choice_model(features_train, labels_train) @@ -39,6 +40,10 @@ function smartsolve(alg_path, alg_name, algs; BSON.@save "$alg_path/smartmodel-$alg_name.bson" smartmodel test_smart_choice_model(smartmodel, features_test, labels_test) + + println(typeof(test_smart_choice_model(smartmodel, features_test, labels_test))) + println(test_smart_choice_model(smartmodel, features_test, labels_test)) + print_tree(smartmodel, 5) # Print of the tree, to a depth of 5 nodes # Smart algorithm diff --git a/src/featurebenchmark.jl b/src/featurebenchmark.jl new file mode 100644 index 0000000..98cda64 --- /dev/null +++ b/src/featurebenchmark.jl @@ -0,0 +1,102 @@ +using ShapML +using RDatasets +using DataFrames +using MLJ +using CSV +using Plots +using TreeRecipe +using CategoricalArrays +using LinearAlgebra +using SparseArrays +using MatrixDepot +using ColorSchemes + + +# Load smart DB +df = CSV.read("smartdb-lu.csv", DataFrame) + +# Compute feature importances +DecisionTreeClassifier = @load DecisionTreeClassifier pkg=DecisionTree +model = DecisionTreeClassifier(max_depth=3, min_samples_split=3) +fs = [:length, :n_rows, :n_cols, :rank, :cond, + :sparsity, :isdiag, :issymmetric, :ishermitian, :isposdef, + :istriu, :istril] +fs_vals = [df[:, f] for f in fs] +X = NamedTuple{Tuple(fs)}(fs_vals) +y = CategoricalArray(String.(df[:, :pattern])) +mach = machine(model, X, y) |> fit! +fi = feature_importances(mach) +fil = String.(map(x->x[1], fi)) +fiv = map(x->x[2], fi) +nn = 4 +fi = fi[1:nn] +fil = fil[1:nn] +fiv = fiv[1:nn] + +sparsity(x) = count(iszero, x) / length(x) +condnumber(x::Matrix) = cond(A, 2) +condnumber(x::SparseMatrixCSC) = cond(Array(A), 2) + +# Compute feature times +ft = zeros(nn) +c = zeros(nn) +A = [] +for i in 1:size(df, 1) + p = df[i, :pattern] + n = df[i, :n_rows] + if p in ["blur", "poisson"] + n′ = round(Int, sqrt(n)) + n′′ = n′^2 + else + n′ = n + n′′ = n + end + println("$p, $n") + try + global A = convert.(Float64,matrixdepot(p, n′)) + if size(A) != (n′′, n′′) + throw("Check matrix size: $(p), ($n, $n) vs $(size(A))") + end + for j in 1:nn + ft[j] += @elapsed @eval $(Symbol(fil[j]))(A) + c[j] += 1 + end + catch e + println(e) + end + GC.gc() +end +ftm = ft ./ c + +# Score +score = fiv ./ ftm + +# Plot +plot() +shapes = [:circle, :rect, :diamond, :star5, :utriangle] +colors = palette(:tab10) +for i in 1:nn + plot!( [fiv[i]], + [ftm[i]], + zcolor=[score[i]], + color=:viridis, + seriestype = :scatter, + thickness_scaling = 1.35, + markersize = 7, + markerstrokewidth = 0, + #markerstrokecolor = :black, + #markercolor = get(ColorSchemes.viridis, score[i], (minimum(score), maximum(score))), + markershapes = shapes[i], + label=fil[i]) +end +plot!(dpi = 300, + label = "", + legend=:topleft, + yscale=:log10, + #xticks = (fi, fs), + #ylim=(min, max), + xlabel = "MLJ.jl-based feature importance", + ylabel = "Time [s]", + clims =(minimum(score), maximum(score)), + colorbar_title = "Importance-time rate") +savefig("featurebench.png") diff --git a/src/smartdb-lu.csv b/src/smartdb-lu.csv new file mode 100644 index 0000000..489c132 --- /dev/null +++ b/src/smartdb-lu.csv @@ -0,0 +1,140 @@ +n_experiment,pattern,length,n_rows,n_cols,rank,cond,sparsity,isdiag,issymmetric,ishermitian,isposdef,istriu,istril,algorithm,time,error +1,baart,256,16,16,11,9.779587923090666e16,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.006084894,5.773159728050814e-15 +1,baart,65536,256,256,11,1.458182699375801e18,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004695744,4.591882429849647e-13 +1,baart,16777216,4096,4096,14,4.623619015357255e19,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.220638843,2.5653257296198717e-11 +1,binomial,256,16,16,16,4739.528197796829,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.989e-5,3.3397062892959184e-11 +1,blur,256,16,16,16,13.70190620647811,0.234375,0.0,1.0,1.0,1.0,0.0,0.0,splu,5.325e-5,1.2212453270876722e-15 +1,blur,65536,256,256,256,29.029964945542606,0.91644287109375,0.0,1.0,1.0,1.0,0.0,0.0,klu,0.001160442,3.952393967665557e-14 +1,blur,16777216,4096,4096,4096,31.28054875136924,0.9941232204437256,0.0,1.0,1.0,1.0,0.0,0.0,klu,0.060740843,8.925082894961633e-13 +1,cauchy,256,16,16,12,3.0845770648757574e17,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,3.0409e-5,1.4432899320127035e-15 +1,cauchy,65536,256,256,20,2.508622330852856e20,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.004049789,9.048206628392563e-12 +1,cauchy,16777216,4096,4096,26,2.0376916574637128e22,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.23137979,4.714955093021445e-10 +1,chebspec,256,16,16,15,8.356022161877951e15,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.8339e-5,7.288614156664153e-14 +1,chebspec,65536,256,256,255,3.38348296262316e14,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004260977,6.248540573849937e-11 +1,chebspec,16777216,4096,4096,4095,2.381941597255335e13,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.207675022,9.41116964081612e-8 +1,circul,256,16,16,16,17.000000000000007,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.452e-5,2.8421709430404007e-13 +1,circul,65536,256,256,256,256.99999999999983,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004315087,3.5288394428789616e-9 +1,circul,16777216,4096,4096,4096,4097.000000000006,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.487227232,5.311146378517151e-5 +1,companion,256,16,16,16,1496.9993319970492,0.87890625,0.0,0.0,0.0,0.0,0.0,0.0,klu,2.274e-5,0.0 +1,companion,65536,256,256,256,5.625216999996981e6,0.9922027587890625,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.000159228,1.0587086762825493e-12 +1,companion,16777216,4096,4096,4096,2.2914881543072613e10,0.9995117783546448,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.030569745,3.5621638971861103e-10 +1,deriv2,256,16,16,16,310.26060675945075,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,4.311e-5,1.231653667943533e-16 +1,deriv2,65536,256,256,256,79681.22110174125,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004261107,7.13101452887166e-15 +1,deriv2,16777216,4096,4096,4096,2.0398647599968016e7,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.22746895,5.674932298713707e-13 +1,dingdong,256,16,16,16,2.5970414323734836,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,3.102e-5,2.2898349882893854e-15 +1,dingdong,65536,256,256,256,3.6884666368943715,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004676265,1.4003034842779982e-13 +1,dingdong,16777216,4096,4096,4096,4.7939372620180665,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.220826602,1.4828583456624744e-11 +1,fiedler,256,16,16,16,175.37549663067023,0.0625,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,1.483e-5,1.4210854715202004e-13 +1,fiedler,65536,256,256,256,45532.985754912974,0.00390625,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.003592512,2.9085640562698245e-9 +1,fiedler,16777216,4096,4096,4096,1.1657084628368402e7,0.000244140625,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.222405769,4.0572602301836014e-5 +1,forsythe,256,16,16,16,6.7108864e7,0.9375,0.0,0.0,0.0,0.0,0.0,0.0,klu,2.255e-5,0.0 +1,forsythe,65536,256,256,256,6.7108864e7,0.99609375,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.000139989,0.0 +1,forsythe,16777216,4096,4096,4096,6.7108864e7,0.999755859375,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.029999519,0.0 +1,foxgood,256,16,16,14,7.400837143868666e16,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,2.42e-5,1.9984014443252818e-15 +1,foxgood,65536,256,256,26,3.031564451260052e19,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004430576,1.201816424156732e-12 +1,foxgood,16777216,4096,4096,31,1.642139634396655e22,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.532185686,5.693908677883996e-10 +1,frank,256,16,16,16,2.3070609671476466e14,0.41015625,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.077e-5,1.7763568394002505e-15 +1,frank,65536,256,256,255,2.4287185848103603e18,0.4941558837890625,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.002154224,1.5109777450561523e-5 +1,frank,16777216,4096,4096,4095,6.618182392997065e19,0.4996338486671448,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.347350898,3.99790748e9 +1,golub,256,16,16,15,2.4323595452054477e17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.231e-5,6.178169087434071e-11 +1,golub,65536,256,256,246,1.4123784285334945e18,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004263987,1.042513986249105e-8 +1,golub,16777216,4096,4096,3929,3.6618834211317914e18,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.212747763,0.00016034088844207872 +1,gravity,256,16,16,16,18403.73075569562,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,2.522e-5,1.2434497875801753e-14 +1,gravity,65536,256,256,46,3.4320442554713354e19,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004339737,1.5116796703296131e-12 +1,gravity,16777216,4096,4096,42,3.098274729596803e21,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.237963869,6.218976444927193e-10 +1,grcar,256,16,16,16,3.111265682500184,0.71484375,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.453e-5,4.440892098500626e-15 +1,grcar,65536,256,256,256,3.6214522942239875,0.9805755615234375,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.000279867,2.4868995751603507e-14 +1,grcar,16777216,4096,4096,4096,3.62771501842049,0.9987797141075134,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.026907533,3.090860900556436e-13 +1,hadamard,256,16,16,16,1.0000000000000007,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,2.09e-5,0.0 +1,hadamard,65536,256,256,256,1.0000000000000024,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.00399794,0.0 +1,hadamard,16777216,4096,4096,4096,1.000000000000034,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.306274344,0.0 +1,hankel,256,16,16,16,19.14892505322292,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,2.075e-5,1.9895196601282805e-13 +1,hankel,65536,256,256,256,259.00921273784587,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004327527,1.7389538697898388e-9 +1,hankel,16777216,4096,4096,4096,4099.000575668276,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.243676284,5.4163858294487e-5 +1,heat,256,16,16,15,4.4371055017648886e18,0.46875,0.0,0.0,0.0,0.0,0.0,1.0,dgetrf,2.101e-5,2.9774863130604956e-12 +1,heat,65536,256,256,250,3.0748558630867957e72,0.498046875,0.0,0.0,0.0,0.0,0.0,1.0,klu,0.000966653,NaN +1,hilb,256,16,16,12,4.069512794757315e17,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,1.149e-5,1.9984014443252818e-15 +1,hilb,65536,256,256,20,5.346923398615569e20,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004190348,4.704014955336788e-13 +1,hilb,16777216,4096,4096,27,4.471256316332622e21,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.483157542,5.222904331247946e-10 +1,invhilb,256,16,16,14,3.2265887835793734e17,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,1.93e-5,60833.68309593201 +1,invol,256,16,16,10,1.9567338030444577e19,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.5569e-5,0.00039989153447450576 +1,invol,65536,256,256,6,3.557689279802562e59,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004172248,1.1749849774836855e183 +1,kahan,256,16,16,16,419.7869817397407,0.46875,0.0,0.0,0.0,0.0,1.0,0.0,dgetrf,1.263e-5,1.887379141862766e-15 +1,kahan,65536,256,256,255,1.231989918002108e27,0.498046875,0.0,0.0,0.0,0.0,1.0,0.0,klu,0.000596466,92.09015556293964 +1,kahan,16777216,4096,4096,346,1.6919994655862425e30,0.4998779296875,0.0,0.0,0.0,0.0,1.0,0.0,dgetrf,0.198528852,4.044431649475567e16 +1,kms,256,16,16,16,8.462012849559203,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,3.6809e-5,0.0 +1,kms,65536,256,256,256,8.997052150265862,0.0,0.0,1.0,1.0,1.0,0.0,0.0,splu,0.00397384,2.1316282072803006e-14 +1,kms,16777216,4096,4096,4096,8.99998825021467,0.5441583395004272,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,0.235516218,1.48947520983711e-12 +1,lehmer,256,16,16,16,233.2552851101579,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,1.883e-5,1.9539925233402755e-14 +1,lehmer,65536,256,256,256,69102.73118940914,0.0,0.0,1.0,1.0,1.0,0.0,0.0,splu,0.003826618,1.2639667090752482e-11 +1,lehmer,16777216,4096,4096,4096,1.8182714054914344e7,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,0.237169374,1.5257288765724297e-8 +1,lotkin,256,16,16,12,5.876932052747695e17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.822e-5,6.328271240363392e-15 +1,lotkin,65536,256,256,19,6.558977083755619e20,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004392313,7.546374636291375e-11 +1,lotkin,16777216,4096,4096,24,2.1448067126234996e23,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.230606494,4.048972046533095e-9 +1,magic,16777216,4096,4096,3,1.556972600440939e25,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.237352751,7.184098288131082e59 +1,minij,256,16,16,16,437.6976165385115,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,2.98e-5,0.0 +1,minij,65536,256,256,256,106654.7116833443,0.0,0.0,1.0,1.0,1.0,0.0,0.0,splu,0.003736749,0.0 +1,minij,16777216,4096,4096,4096,2.7204835057208624e7,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,0.239426877,0.0 +1,moler,256,16,16,16,4.172336710026503e10,0.109375,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,1.813e-5,0.0 +1,moler,65536,256,256,255,1.5910154808444458e16,0.00775146484375,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,0.006776534,0.0 +1,moler,16777216,4096,4096,4095,8.246641436353315e15,0.00048804283142089844,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,0.223308595,0.0 +1,oscillate,256,16,16,16,6.7108863749287456e7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.848e-5,2.525757381022231e-15 +1,oscillate,65536,256,256,256,6.710886267171627e7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004191656,5.939693181744587e-14 +1,oscillate,16777216,4096,4096,4096,6.7108862330718815e7,0.437744140625,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.226593821,2.4659718711461664e-12 +1,parter,256,16,16,16,2.597041432373485,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.751e-5,4.579669976578771e-15 +1,parter,65536,256,256,256,3.6884666368943733,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004320085,2.8006069685559964e-13 +1,parter,16777216,4096,4096,4096,4.793937262018117,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.206582644,2.955669129584004e-11 +1,pascal,256,16,16,14,4.248621656451621e16,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,3.3819e-5,1.0138063544218312e-7 +1,pascal,65536,256,256,6,2.553727253458521e176,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004584383,7.698575245676624e139 +1,pei,256,16,16,16,17.000000000000004,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,4.328e-5,0.0 +1,pei,65536,256,256,256,257.0000000001814,0.0,0.0,1.0,1.0,1.0,0.0,0.0,splu,0.003996949,1.6370904631912708e-11 +1,pei,16777216,4096,4096,4096,4097.000001715043,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,0.229679201,9.815084922593087e-8 +1,phillips,256,16,16,16,1472.1410834752824,0.515625,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,1.682e-5,8.881784197001252e-15 +1,phillips,65536,256,256,256,1.1354150891653128e8,0.5595703125,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.003001956,5.724309914967307e-13 +1,phillips,16777216,4096,4096,4089,3.3555270684659043e12,0.56231689453125,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.233395363,3.877831389331732e-11 +1,poisson,256,16,16,16,9.472135954999581,0.75,0.0,1.0,1.0,1.0,0.0,0.0,klu,4.039e-5,3.3306690738754696e-15 +1,poisson,65536,256,256,256,116.46119157748798,0.9814453125,0.0,1.0,1.0,1.0,0.0,0.0,klu,0.000382057,1.0513812043200232e-13 +1,poisson,16777216,4096,4096,4096,1711.6613758258454,0.9987945556640625,0.0,1.0,1.0,1.0,0.0,0.0,klu,0.007641919,1.7857937351095643e-12 +1,prolate,256,16,16,16,110.96946936728527,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,2.272e-5,1.2212453270876722e-14 +1,prolate,65536,256,256,256,26801.36056996144,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004010318,4.793676566805516e-11 +1,prolate,16777216,4096,4096,4096,6.794548190075961e6,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.245769345,6.154232323751785e-8 +1,randcorr,256,16,16,16,422.4278108114566,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,2.325e-5,4.218847493575595e-15 +1,randcorr,65536,256,256,256,1539.5639221720048,0.0,0.0,1.0,1.0,1.0,0.0,0.0,splu,0.00379122,1.484992684375186e-13 +1,randcorr,16777216,4096,4096,4096,2618.8262232871184,0.0,0.0,1.0,1.0,1.0,0.0,0.0,dgetrf,0.241206391,1.4085080324299781e-11 +1,rando,256,16,16,16,223.9031018320182,0.5,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,1.921e-5,1.4210854715202004e-14 +1,rando,65536,256,256,256,6282.538183779294,0.502593994140625,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004435955,3.8753000808355864e-11 +1,rando,16777216,4096,4096,4096,239240.16204004516,0.4998878240585327,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.255824845,4.151888788328506e-8 +1,randsvd,256,16,16,16,6.710886385875717e7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.109e-5,9.575673587391975e-16 +1,randsvd,65536,256,256,256,6.710886401644151e7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.00374968,4.390211067947791e-14 +1,randsvd,16777216,4096,4096,4096,6.7108864025672e7,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.222079523,1.884229404447435e-11 +1,rohess,256,16,16,16,1.0000000000000007,0.41015625,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,3.8689e-5,1.6653345369377348e-15 +1,rohess,65536,256,256,256,1.0000000000000036,0.4941558837890625,0.0,0.0,0.0,0.0,0.0,0.0,klu,0.002052964,2.967001644371692e-13 +1,rohess,16777216,4096,4096,4096,1.0000000000000144,0.7753418684005737,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.207699376,1.2132147500162893e-12 +1,rosser,256,16,16,14,1.0076399538881472e17,0.125,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,2.346e-5,2.091837814077735e-11 +1,rosser,65536,256,256,224,1.4120306578265187e17,0.95263671875,0.0,1.0,1.0,0.0,0.0,0.0,klu,0.000494526,5.511537892743945e-10 +1,rosser,16777216,4096,4096,3584,2.108580256482238e37,0.9970684051513672,0.0,1.0,1.0,0.0,0.0,0.0,klu,0.032650262,3.3295464163529687e-9 +1,sampling,256,16,16,15,3.4851331092772896e16,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.0519e-5,6.483702463810914e-14 +1,sampling,65536,256,256,255,9.104723206214995e16,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004147107,1.7562906684531754e-10 +1,sampling,16777216,4096,4096,4095,1.450925886804848e17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.332636428,4.380777185453155e-6 +1,shaw,256,16,16,16,5.3147320455357825e11,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,1.976e-5,4.163336342344337e-15 +1,shaw,65536,256,256,20,3.0631051293947752e19,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004325086,3.116507052425277e-12 +1,shaw,16777216,4096,4096,17,2.3118561109917366e21,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.527532826,9.297170810995681e-10 +1,smallworld,256,16,16,16,19.140325826493655,0.7421875,0.0,1.0,1.0,0.0,0.0,0.0,klu,3.9749e-5,1.0658141036401503e-14 +1,smallworld,65536,256,256,256,13429.714549030014,0.983612060546875,0.0,1.0,1.0,0.0,0.0,0.0,klu,0.000459316,7.687184222504584e-13 +1,smallworld,16777216,4096,4096,4096,26230.557417783803,0.9989731311798096,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.027064656,7.0938810381449e-12 +1,spikes,256,16,16,12,8.18134508316423e17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.9829e-5,1.5687451337953462e-13 +1,spikes,65536,256,256,24,8.38068746384199e19,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004541644,1.6544898784331963e-10 +1,spikes,16777216,4096,4096,38,1.4402093125411279e23,0.00045615434646606445,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.310576052,2.3023872017802205e-6 +1,toeplitz,256,16,16,16,206.13271768430147,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,2.641e-5,7.105427357601002e-14 +1,toeplitz,65536,256,256,256,46027.486370827195,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004163536,1.648004399612546e-9 +1,toeplitz,16777216,4096,4096,4096,1.1664994494291898e7,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.23631392,5.372706800699234e-5 +1,triw,256,16,16,16,204262.95718350925,0.46875,0.0,0.0,0.0,0.0,1.0,0.0,dgetrf,2.18e-5,0.0 +1,triw,65536,256,256,255,4.593822419999271e19,0.498046875,0.0,0.0,0.0,0.0,1.0,0.0,klu,0.000935603,0.0 +1,triw,16777216,4096,4096,4095,1.02102155501576e21,0.4998779296875,0.0,0.0,0.0,0.0,1.0,0.0,dgetrf,0.210440405,0.0 +1,ursell,256,16,16,16,1.208352918230884e14,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,3.685e-5,1.4432899320127035e-15 +1,ursell,65536,256,256,253,1.1981484330954973e14,0.0,0.0,1.0,1.0,0.0,0.0,0.0,splu,0.004219887,4.5574655160862676e-14 +1,ursell,16777216,4096,4096,4082,5.702811555705552e13,0.0,0.0,1.0,1.0,0.0,0.0,0.0,dgetrf,0.254499386,3.3379965458379957e-12 +1,vand,256,16,16,8,3.226869250585466e21,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.992e-5,480.551841171713 +1,wing,256,16,16,8,4.946325267669901e20,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,2.523e-5,6.38378239159465e-15 +1,wing,65536,256,256,8,7.42947311131584e21,0.0,0.0,0.0,0.0,0.0,0.0,0.0,splu,0.004176786,1.5996648450311568e-12 +1,wing,16777216,4096,4096,8,4.184082968445184e23,0.0,0.0,0.0,0.0,0.0,0.0,0.0,dgetrf,0.219610392,6.864641077797273e-9 From 29a9e1ccd4ea34b177f99045fb331df2435a3b0e Mon Sep 17 00:00:00 2001 From: Maeve Chen Date: Fri, 22 Nov 2024 18:23:17 -0500 Subject: [PATCH 3/5] added smartfeatures --- examples/smartlu/generate_smartlu.jl | 7 +- src/SmartDB.jl | 110 +++++++++++++++------------ src/SmartDiscovery.jl | 22 +++--- src/SmartModel.jl | 52 ++++++++----- src/SmartSolve.jl | 4 +- 5 files changed, 116 insertions(+), 79 deletions(-) diff --git a/examples/smartlu/generate_smartlu.jl b/examples/smartlu/generate_smartlu.jl index e65ab04..5416bb5 100644 --- a/examples/smartlu/generate_smartlu.jl +++ b/examples/smartlu/generate_smartlu.jl @@ -15,7 +15,8 @@ using KLU using SuperLU using MatrixDepot using BenchmarkTools -using DecisionTree +using MLJ +using MLJDecisionTreeInterface using BSON import SmartSolve: compute_feature_values @@ -56,6 +57,8 @@ A = rand(n, n) B = sprand(n, n, 0.3) mats = [A, B] +#Custom features (in progress) + # Generate a smart version of your algorithm alg_name = "lu" alg_path = "smart$alg_name/" @@ -89,4 +92,4 @@ x = smartlu(A) \ b; norm(A * x - b, 1) # Plot results -makeplots(alg_path, alg_name) +# makeplots(alg_path, alg_name) diff --git a/src/SmartDB.jl b/src/SmartDB.jl index df7ddaa..68a282d 100644 --- a/src/SmartDB.jl +++ b/src/SmartDB.jl @@ -1,12 +1,20 @@ export compute_feature_values +export sparsity +export condnumber + +sparsity(x) = count(iszero, x) / length(x) +condnumber(x::Matrix) = cond(x, 2) +condnumber(x::SparseMatrixCSC) = cond(Array(x), 2) all_features = OrderedDict() all_features[:length] = x -> length(x) all_features[:n_rows] = x -> size(x, 1) all_features[:n_cols] = x -> size(x, 2) all_features[:rank] = x -> rank(x) -all_features[:condnumber] = x -> cond(Array(x), 2) -all_features[:sparsity] = x -> count(iszero, x) / length(x) +# all_features[:condnumber] = x -> cond(Array(x), 2) +all_features[:condnumber] = x -> condnumber(x) +# all_features[:sparsity] = x -> count(iszero, x) / length(x) +all_features[:sparsity] = x -> sparsity(x) all_features[:isdiag] = x -> Float64(isdiag(x)) all_features[:issymmetric] = x -> Float64(issymmetric(x)) all_features[:ishermitian] = x -> Float64(ishermitian(x)) @@ -72,7 +80,7 @@ function smartfeatures(df) fs_vals = [df[:, f] for f in fs] X = NamedTuple{Tuple(fs)}(fs_vals) y = CategoricalArray(String.(df[:, :pattern])) - mach = machine(model, X, y) |> fit! + mach = machine(model, X, y) |> MLJ.fit! #------------------------------------------------------------------------------ #PREVIOUS fi = feature_importances(mach) @@ -98,26 +106,22 @@ function smartfeatures(df) # fi = combine(groupby(data_shap, :feature_name))[:, [:feature_name, :shap_effect]] #------------------------------------------------------------------------------ - fil = String.(map(x->x[1], fi)) + fil = map(x->x[1], fi) fiv = map(x->x[2], fi) nn = count(x -> x != 0, fiv) # include all nonzero features fi = fi[1:nn] fil = fil[1:nn] fiv = fiv[1:nn] - - println(fi) - - sparsity(x) = count(iszero, x) / length(x) - condnumber(x::Matrix) = cond(A, 2) - condnumber(x::SparseMatrixCSC) = cond(Array(A), 2) + println("FIs:", fi) #------------------------------------------------------------------------------ #2. computes the computational cost (score) of each feature. # Compute feature times ft = zeros(nn) c = zeros(nn) - A = [] + # A = [] + global A = [] for i in 1:size(df, 1) p = df[i, :pattern] n = df[i, :n_rows] @@ -130,7 +134,8 @@ function smartfeatures(df) end println("$p, $n") try - global A = convert.(Float64,matrixdepot(p, n′)) + A = convert.(Float64, matrixdepot(p, n′)) + # global A = convert.(Float64,matrixdepot(p, n′)) if size(A) != (n′′, n′′) throw("Check matrix size: $(p), ($n, $n) vs $(size(A))") end @@ -148,51 +153,58 @@ function smartfeatures(df) # Compute Score score = fiv ./ ftm - # Plot - plot() - shapes = [:circle, :rect, :diamond, :star5, :utriangle] - colors = palette(:tab10) - for i in 1:nn - plot!( [fiv[i]], - [ftm[i]], - zcolor=[score[i]], - color=:viridis, - seriestype = :scatter, - thickness_scaling = 1.35, - markersize = 7, - markerstrokewidth = 0, - markershapes = shapes[i], - label=fil[i]) - end - plot!(dpi = 300, - label = "", - legend=:topleft, - yscale=:log10, - xlabel = "Shapley-based feature importance", #changed name - ylabel = "Time [s]", - clims =(minimum(score), maximum(score)), - colorbar_title = "Importance-time rate") - savefig("featurebench.png") #change file location - -# #------------------------------------------------------------------------------ + println(ftm) + println(score) + + # # Plot + # Plots.plot() + # shapes = [:circle, :rect, :diamond, :star5, :utriangle] + # colors = palette(:tab10) + # for i in 1:nn + # plot!( [fiv[i]], + # [ftm[i]], + # zcolor=[score[i]], + # color=:viridis, + # seriestype = :scatter, + # thickness_scaling = 1.35, + # markersize = 7, + # markerstrokewidth = 0, + # markershapes = shapes[i], + # label=String.fil[i]) + # end + # plot!(dpi = 300, + # label = "", + # legend=:topleft, + # yscale=:log10, + # xlabel = "Shapley-based feature importance", #changed name + # ylabel = "Time [s]", + # clims =(minimum(score), maximum(score)), + # colorbar_title = "Importance-time rate") + # Plots.savefig("featurebench.png") #change file location + +#------------------------------------------------------------------------------ #sort features by score - perm = sortperm(score) - fil[perm] + perm = reverse(sortperm(score)) + fil = fil[perm] + ftm = ftm[perm] #feature selection algorithm i = 1 - e = 0 - t = 10 - e_tol, t_tol = .05, 2 - while i < length(fs) & (e > e_tol | t > t_tol) + e = 100 + t = 100 + e_tol, t_tol = 0, .002 + println(fil) + while i < length(fil) && (e > e_tol || t > t_tol) curr_fil = fil[1:i] features_train, labels_train, - features_test, labels_test = create_datasets(smartdb, curr_fil) - smartmodel = train_smart_choice_model(features_train, labels_train) - e = 1 - accuracy(test_smart_choice_model(smartmodel, features_test, labels_test)) + features_test, labels_test = create_datasets(df, curr_fil) + smartmodel = train_smart_choice_model(features_train, labels_train, curr_fil) + e = 1 - accuracy(test_smart_choice_model(smartmodel, features_test, labels_test, curr_fil)) + t = sum(ftm[1:i]) + println("i:$i, e:$e, t:$t") i += 1 end - return curr_fil + return fil[1:i-1] end diff --git a/src/SmartDiscovery.jl b/src/SmartDiscovery.jl index 3ba9737..61ce15b 100644 --- a/src/SmartDiscovery.jl +++ b/src/SmartDiscovery.jl @@ -33,18 +33,17 @@ function smartsolve(alg_path, alg_name, algs; # Smart model features = smartfeatures(smartdb) # features = [:length, :sparsity, :condnumber] + # features = [:length, :n_rows, :n_cols, :rank, :condnumber, + # :sparsity, :isdiag, :issymmetric, :ishermitian, :isposdef, + # :istriu, :istril] features_train, labels_train, features_test, labels_test = create_datasets(smartdb, features) - smartmodel = train_smart_choice_model(features_train, labels_train) + smartmodel = train_smart_choice_model(features_train, labels_train, features) BSON.@save "$alg_path/features-$alg_name.bson" features BSON.@save "$alg_path/smartmodel-$alg_name.bson" smartmodel - test_smart_choice_model(smartmodel, features_test, labels_test) - - println(typeof(test_smart_choice_model(smartmodel, features_test, labels_test))) - println(test_smart_choice_model(smartmodel, features_test, labels_test)) - - print_tree(smartmodel, 5) # Print of the tree, to a depth of 5 nodes + test_smart_choice_model(smartmodel, features_test, labels_test, features) + # print_tree(smartmodel, 5) # Print of the tree, to a depth of 5 nodes # Smart algorithm smartalg = """ @@ -54,8 +53,13 @@ function smartsolve(alg_path, alg_name, algs; function smart$alg_name(A; features = features_$alg_name, smartmodel = smartmodel_$alg_name, algs = algs_$alg_name) - fs = compute_feature_values(A; features = features) - alg_name = apply_tree(smartmodel, fs) + # fs = compute_feature_values(A; features = features) + # alg_name = apply_tree(smartmodel, fs) + # return @eval \$(Symbol(alg_name))(A) + fs_vals = compute_feature_values(A; features = features) + fs_vals = [[f] for f in fs_vals] + fs = NamedTuple{Tuple(features)}(Array(fs_vals)) + alg_name = first(predict_mode(smartmodel, fs)) return @eval \$(Symbol(alg_name))(A) end""" diff --git a/src/SmartModel.jl b/src/SmartModel.jl index 21d52af..c1a6c71 100644 --- a/src/SmartModel.jl +++ b/src/SmartModel.jl @@ -3,35 +3,53 @@ function create_datasets(db, features) # Split dataset into training and test n_db = size(db, 1) - n_train = round(Int, n_db * 0.8) + n_train = round(Int, n_db * 0.5) n_test = n_db - n_train inds = randperm(n_db) labels = [:algorithm] - features_train = @views Matrix(db[inds[1:n_train], features]) + # features_train = @views Matrix(db[inds[1:n_train], features]) + # labels_train = @views vec(Matrix(db[inds[1:n_train], labels])) + # features_test = @views Matrix(db[inds[1:n_test], features]) + # labels_test = @views vec(Matrix(db[inds[1:n_test], labels])) + features_train = @views db[inds[1:n_train], features] labels_train = @views vec(Matrix(db[inds[1:n_train], labels])) - features_test = @views Matrix(db[inds[1:n_test], features]) + features_test = @views db[inds[1:n_test], features] labels_test = @views vec(Matrix(db[inds[1:n_test], labels])) return features_train, labels_train, features_test, labels_test end -function train_smart_choice_model(features_train, labels_train) +function train_smart_choice_model(features_train, labels_train, features) # Train full-tree classifier - n_subfeat = 0 - n_feat = size(features_train[1, :], 1) - model = build_tree(labels_train, features_train, n_subfeat, n_feat) - # Prune tree: merge leaves having >= 90% combined purity (default: 100%) + # n_subfeat = 0 + # n_feat = size(features_train[1, :], 1) + # model = build_tree(labels_train, features_train, n_subfeat, n_feat) + # # Prune tree: merge leaves having >= 90% combined purity (default: 100%) # model = prune_tree(model, 0.9) - return model + DecisionTreeClassifier = @load DecisionTreeClassifier pkg = DecisionTree + model = DecisionTreeClassifier(max_depth=3, min_samples_split=3) + fs_vals = [features_train[:, f] for f in features] + X = NamedTuple{Tuple(features)}(fs_vals) + y = CategoricalArray(String.(labels_train)) + mach = machine(model, X, y) |> fit! + return mach end -function test_smart_choice_model(model, features_test, labels_test) - # Apply learned model - apply_tree(model, features_test[1, :]) +function test_smart_choice_model(mach, features_test, labels_test, features) + # # Apply learned model + # apply_tree(model, features_test[1, :]) - # Generate confusion matrix, along with accuracy and kappa scores - preds_test = apply_tree(model, features_test) - - return DecisionTree.confusion_matrix(labels_test, preds_test) -end + # # Generate confusion matrix, along with accuracy and kappa scores + # preds_test = apply_tree(model, features_test) + # # return DecisionTree.confusion_matrix(labels_test, preds_test) + # return log_loss(labels_test, preds_test) + # features = [:length, :n_rows, :n_cols, :rank, :condnumber, + # :sparsity, :isdiag, :issymmetric, :ishermitian, :isposdef, + # :istriu, :istril] + fs_vals = [features_test[:, f] for f in features] + X = NamedTuple{Tuple(features)}(fs_vals) + y = CategoricalArray(String.(labels_test)) + yhat = predict_mode(mach, X) + return ConfusionMatrix()(yhat, y) +end diff --git a/src/SmartSolve.jl b/src/SmartSolve.jl index a699408..4e448db 100644 --- a/src/SmartSolve.jl +++ b/src/SmartSolve.jl @@ -6,14 +6,14 @@ using DataFrames using OrderedCollections using CSV using PlotlyJS -using DecisionTree +using Plots using Random using BenchmarkTools using BSON using ShapML using MLJ -using Plots +using MLJDecisionTreeInterface using TreeRecipe using CategoricalArrays using SparseArrays From ac918c37f481c14f7fde48b885841698e37ff7f4 Mon Sep 17 00:00:00 2001 From: Maeve Chen Date: Thu, 12 Dec 2024 12:34:29 -0500 Subject: [PATCH 4/5] Cleaned up code for Smart Features. Added MLJ-based importance plot functionality. --- src/SmartDB.jl | 88 ++++++++++++++++++------------------------- src/SmartDiscovery.jl | 6 +-- src/SmartModel.jl | 2 +- src/SmartSolve.jl | 2 +- 4 files changed, 39 insertions(+), 59 deletions(-) diff --git a/src/SmartDB.jl b/src/SmartDB.jl index 68a282d..ddad624 100644 --- a/src/SmartDB.jl +++ b/src/SmartDB.jl @@ -11,9 +11,7 @@ all_features[:length] = x -> length(x) all_features[:n_rows] = x -> size(x, 1) all_features[:n_cols] = x -> size(x, 2) all_features[:rank] = x -> rank(x) -# all_features[:condnumber] = x -> cond(Array(x), 2) all_features[:condnumber] = x -> condnumber(x) -# all_features[:sparsity] = x -> count(iszero, x) / length(x) all_features[:sparsity] = x -> sparsity(x) all_features[:isdiag] = x -> Float64(isdiag(x)) all_features[:issymmetric] = x -> Float64(issymmetric(x)) @@ -67,12 +65,9 @@ function get_smart_choices(db, mat_patterns, ns) return db_opt end -#------------------------------------------------------------------------------ -function smartfeatures(df) -#Computes the contribution of each feature to reduce the error using Shapley values. -#------------------------------------------------------------------------------ -#1. Calculate feature importance - DecisionTreeClassifier = @load DecisionTreeClassifier pkg=DecisionTree +#Smart Features: computes the contribution of each feature to reduce the error using Shapley values. +function smartfeatures(df, alg_path) + DecisionTreeClassifier = @load DecisionTreeClassifier pkg=DecisionTree verbosity=0 model = DecisionTreeClassifier(max_depth=3, min_samples_split=3) fs = [:length, :n_rows, :n_cols, :rank, :condnumber, :sparsity, :isdiag, :issymmetric, :ishermitian, :isposdef, @@ -81,8 +76,8 @@ function smartfeatures(df) X = NamedTuple{Tuple(fs)}(fs_vals) y = CategoricalArray(String.(df[:, :pattern])) mach = machine(model, X, y) |> MLJ.fit! - #------------------------------------------------------------------------------ - #PREVIOUS + + #Compute feature time-averaged importance fi = feature_importances(mach) #------------------------------------------------------------------------------ # #NEW @@ -109,18 +104,14 @@ function smartfeatures(df) fil = map(x->x[1], fi) fiv = map(x->x[2], fi) - nn = count(x -> x != 0, fiv) # include all nonzero features + nn = count(x -> x != 0, fiv) fi = fi[1:nn] fil = fil[1:nn] fiv = fiv[1:nn] println("FIs:", fi) -#------------------------------------------------------------------------------ -#2. computes the computational cost (score) of each feature. - # Compute feature times ft = zeros(nn) c = zeros(nn) - # A = [] global A = [] for i in 1:size(df, 1) p = df[i, :pattern] @@ -135,7 +126,6 @@ function smartfeatures(df) println("$p, $n") try A = convert.(Float64, matrixdepot(p, n′)) - # global A = convert.(Float64,matrixdepot(p, n′)) if size(A) != (n′′, n′′) throw("Check matrix size: $(p), ($n, $n) vs $(size(A))") end @@ -150,50 +140,44 @@ function smartfeatures(df) end ftm = ft ./ c - # Compute Score score = fiv ./ ftm - - println(ftm) - println(score) - - # # Plot - # Plots.plot() - # shapes = [:circle, :rect, :diamond, :star5, :utriangle] - # colors = palette(:tab10) - # for i in 1:nn - # plot!( [fiv[i]], - # [ftm[i]], - # zcolor=[score[i]], - # color=:viridis, - # seriestype = :scatter, - # thickness_scaling = 1.35, - # markersize = 7, - # markerstrokewidth = 0, - # markershapes = shapes[i], - # label=String.fil[i]) - # end - # plot!(dpi = 300, - # label = "", - # legend=:topleft, - # yscale=:log10, - # xlabel = "Shapley-based feature importance", #changed name - # ylabel = "Time [s]", - # clims =(minimum(score), maximum(score)), - # colorbar_title = "Importance-time rate") - # Plots.savefig("featurebench.png") #change file location - -#------------------------------------------------------------------------------ - #sort features by score perm = reverse(sortperm(score)) fil = fil[perm] ftm = ftm[perm] - #feature selection algorithm + println(fil) + + # Plot + Plots.plot() + shapes = [:circle, :rect, :diamond, :star5, :utriangle] + colors = palette(:tab10) + for i in 1:nn + plot!( [fiv[i]], + [ftm[i]], + zcolor=[score[i]], + color=:viridis, + seriestype = :scatter, + thickness_scaling = 1.35, + markersize = 7, + markerstrokewidth = 0, + markershapes = shapes[i], + label=String(fil[i])) + end + plot!(dpi = 300, + label = "", + legend=:topleft, + yscale=:log10, + xlabel = "MLJ-based feature importance", + ylabel = "Time [s]", + clims =(minimum(score), maximum(score)), + colorbar_title = "Importance-time rate") + Plots.savefig("$alg_path/featurebench.png") + + #Forward selection algorithm i = 1 e = 100 t = 100 e_tol, t_tol = 0, .002 - println(fil) while i < length(fil) && (e > e_tol || t > t_tol) curr_fil = fil[1:i] @@ -202,7 +186,7 @@ function smartfeatures(df) smartmodel = train_smart_choice_model(features_train, labels_train, curr_fil) e = 1 - accuracy(test_smart_choice_model(smartmodel, features_test, labels_test, curr_fil)) t = sum(ftm[1:i]) - println("i:$i, e:$e, t:$t") + println("features: $curr_fil, error: $e, time: $t") i += 1 end diff --git a/src/SmartDiscovery.jl b/src/SmartDiscovery.jl index 61ce15b..6d05c13 100644 --- a/src/SmartDiscovery.jl +++ b/src/SmartDiscovery.jl @@ -31,11 +31,7 @@ function smartsolve(alg_path, alg_name, algs; CSV.write("$alg_path/smartdb-$alg_name.csv", smartdb) # Smart model - features = smartfeatures(smartdb) - # features = [:length, :sparsity, :condnumber] - # features = [:length, :n_rows, :n_cols, :rank, :condnumber, - # :sparsity, :isdiag, :issymmetric, :ishermitian, :isposdef, - # :istriu, :istril] + features = smartfeatures(smartdb, alg_path) features_train, labels_train, features_test, labels_test = create_datasets(smartdb, features) smartmodel = train_smart_choice_model(features_train, labels_train, features) diff --git a/src/SmartModel.jl b/src/SmartModel.jl index c1a6c71..bf443de 100644 --- a/src/SmartModel.jl +++ b/src/SmartModel.jl @@ -26,7 +26,7 @@ function train_smart_choice_model(features_train, labels_train, features) # model = build_tree(labels_train, features_train, n_subfeat, n_feat) # # Prune tree: merge leaves having >= 90% combined purity (default: 100%) # model = prune_tree(model, 0.9) - DecisionTreeClassifier = @load DecisionTreeClassifier pkg = DecisionTree + DecisionTreeClassifier = @load DecisionTreeClassifier pkg = DecisionTree verbosity=0 model = DecisionTreeClassifier(max_depth=3, min_samples_split=3) fs_vals = [features_train[:, f] for f in features] X = NamedTuple{Tuple(features)}(fs_vals) diff --git a/src/SmartSolve.jl b/src/SmartSolve.jl index 4e448db..339b0e6 100644 --- a/src/SmartSolve.jl +++ b/src/SmartSolve.jl @@ -11,7 +11,7 @@ using Random using BenchmarkTools using BSON -using ShapML +# using ShapML using MLJ using MLJDecisionTreeInterface using TreeRecipe From 2340fe2cda826786922793e39b784b45c13876ff Mon Sep 17 00:00:00 2001 From: Maeve Chen Date: Thu, 12 Dec 2024 12:45:56 -0500 Subject: [PATCH 5/5] Removed unfinished ShapML feature selection code --- src/SmartDB.jl | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/src/SmartDB.jl b/src/SmartDB.jl index ddad624..dcd6419 100644 --- a/src/SmartDB.jl +++ b/src/SmartDB.jl @@ -79,28 +79,7 @@ function smartfeatures(df, alg_path) #Compute feature time-averaged importance fi = feature_importances(mach) - #------------------------------------------------------------------------------ - # #NEW - # fit!(mach) - - # function predict_function(model, data) - # data_pred = DataFrame(y_pred=predict(model, data)) - # return data_pred - # end - # println(df[1:50, :]) - # println(df[1:50, fs]) - # # explain = copy(df[1:300, :]) #may have to edit how many/what instances - # # explain = select(df, Not(Symbol(outcome_name))) - - # data_shap = ShapML.shap(explain=df[1:50, fs], - # reference=df[:, fs], - # model=mach, - # predict_function=predict_function) - - # show(data_shap, allcols=true) - - # fi = combine(groupby(data_shap, :feature_name))[:, [:feature_name, :shap_effect]] - #------------------------------------------------------------------------------ + fil = map(x->x[1], fi) fiv = map(x->x[2], fi)