From 17512b2097abcf5cd0d30085ddbe1183b69a27fa Mon Sep 17 00:00:00 2001 From: PasoStudio73 Date: Wed, 2 Oct 2024 00:55:41 +0200 Subject: [PATCH] rules --- Project.toml | 27 +++++++++++++++++++++++++++ src/interface.jl | 18 +++++++++++++++--- src/rules.jl | 1 + 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/Project.toml b/Project.toml index 81648c0..480d85c 100644 --- a/Project.toml +++ b/Project.toml @@ -1 +1,28 @@ +name = "SoleAudio" +uuid = "d120907c-de53-4f76-92ff-8a3cfb847171" +authors = ["Riccardo Pasini"] +version = "1.0.0-DEV" + [deps] +Audio911 = "5540a74f-91b5-427e-9d31-931d77bf3639" +CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" +Catch22 = "acdeb78f-3d39-4310-8fdf-6d75c17c6d5a" +CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597" +DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" +MLJ = "add582a8-e3ab-11e8-2d5e-e98b27df1bc7" +MLJDecisionTreeInterface = "c6f25543-311c-4c74-83dc-3ea6d1015661" +ModalDecisionTrees = "e54bda2e-c571-11ec-9d64-0242ac120002" +Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +SoleDecisionTreeInterface = "de8eae22-3630-40e0-868c-abfc4c1bb3da" +StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" + +[compat] +julia = "1.6.7" + +[extras] +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[targets] +test = ["Test"] diff --git a/src/interface.jl b/src/interface.jl index ef08bc4..d2037c6 100644 --- a/src/interface.jl +++ b/src/interface.jl @@ -1,8 +1,20 @@ # -------------------------------------------------------------------------- # # get interesting rules # # -------------------------------------------------------------------------- # -function get_interesting_rules( - +function get_interesting_rules(; + wav_path::String, + csv_path::Union{String, Nothing}=nothing, + classes_dict::Dict{String, String}, + classes_func::Function, + featset::Tuple, + audioparams::NamedTuple, + min_length::Int64, + min_samples::Int64, + features::Symbol, + nwindows::Int64, + relative_overlap::Float64, + train_ratio::Float64, + rng::AbstractRNG, ) df = collect_audio_from_folder(wav_path; audioparams=audioparams) labels = collect_classes(df, classes_dict, classes_func) @@ -12,5 +24,5 @@ function get_interesting_rules( X, y, variable_names = afe(df, featset, audioparams) prop_sole_dt = propositional_analisys(X, y, variable_names=variable_names, features=features, train_ratio=train_ratio, rng=rng) modal_sole_dt = modal_analisys(X, y; variable_names=variable_names, features=features, nwindows=nwindows, relative_overlap=relative_overlap, train_ratio=train_ratio, rng=rng) - interesting_rules(prop_sole_dt, modal_sole_dt; variable_names=variable_names) + interesting_rules(prop_sole_dt, modal_sole_dt; features=features, variable_names=variable_names) end \ No newline at end of file diff --git a/src/rules.jl b/src/rules.jl index b0654a3..5025f00 100644 --- a/src/rules.jl +++ b/src/rules.jl @@ -28,6 +28,7 @@ format_float(x) = replace(x, r"(\d+\.\d+)" => s -> @sprintf("%.3f", parse(Float6 function interesting_rules( prop_sole_dt::Union{DecisionTree, Nothing}=nothing, modal_sole_dt::Union{DecisionTree, Nothing}=nothing; + features::Symbol, variable_names::AbstractVector{String}, ) if !isnothing(prop_sole_dt)