Spaces:
Running
Running
| # Returns the MSE between the predictions and the truth provided targets for the given dataset | |
| function truthScore(member::PopMember, cX::Array{Float32, 2}, cy::Array{Float32}, truth::Truth)::Float32 | |
| transformed = transform(cX, truth) | |
| targets = truthPrediction(transformed, cy, truth) | |
| preds = evalTreeArray(member.tree, transformed) | |
| return MSE(preds, targets) | |
| end | |
| # Assumes a dataset X, y for a given truth | |
| function truthScore(member::PopMember, truth::Truth)::Float32 | |
| return truthScore(member, X, y, truth) | |
| end | |
| # Assumes a list of Truths TRUTHS is defined. Performs the truthScore function for each of them and returns the average | |
| function truthScore(member::PopMember, cX::Array{Float32, 2}, cy::Array{Float32})::Float32 | |
| s = 0 | |
| for truth in TRUTHS | |
| s += (truthScore(member, cX, cy, truth))/size(TRUTHS)[1] | |
| end | |
| return s | |
| end | |
| # Assumes list of Truths TRUTHS and dataset X, y are defined | |
| function truthScore(member::PopMember)::Float32 | |
| return truthScore(member, X, y) | |
| end | |
| # Returns the MSE between the predictions and the truth provided targets for the given dataset | |
| function truthScore(tree::Node, cX::Array{Float32, 2}, cy::Array{Float32}, truth::Truth)::Float32 | |
| transformed = transform(cX, truth) | |
| targets = truthPrediction(transformed, cy, truth) | |
| preds = evalTreeArray(tree, transformed) | |
| return MSE(preds, targets) | |
| end | |
| # Assumes a dataset X, y for a given truth | |
| function truthScore(tree::Node, truth::Truth)::Float32 | |
| return truthScore(tree, X, y, truth) | |
| end | |
| # Assumes a list of Truths TRUTHS is defined. Performs the truthScore function for each of them and returns the average | |
| function truthScore(tree::Node, cX::Array{Float32, 2}, cy::Array{Float32})::Float32 | |
| s = 0 | |
| for truth in TRUTHS | |
| s += (truthScore(tree, cX, cy, truth))/size(TRUTHS)[1] | |
| end | |
| return s | |
| end | |
| # Assumes list of Truths TRUTHS and dataset X, y are defined | |
| function truthScore(tree::Node)::Float32 | |
| return truthScore(tree, X, y) | |
| end | |
| # Returns true iff Truth Score is below a given threshold i.e truth is satisfied | |
| function testTruth(member::PopMember, truth::Truth, threshold::Float32=Float32(1.0e-8))::Bool | |
| truthError = truthScore(member, truth) | |
| #print(stringTree(member.tree), "\n") | |
| #print(truth, ": ") | |
| #print(truthError, "\n") | |
| if truthError > threshold | |
| #print("Returns False \n ----\n") | |
| return false | |
| else | |
| #print("Returns True \n ----\n") | |
| return true | |
| end | |
| end | |
| # Returns a list of violating functions from assumed list TRUTHS | |
| function violatingTruths(member::PopMember)::Array{Truth} | |
| return violatingTruths(member.tree) | |
| end | |
| # Returns true iff Truth Score is below a given threshold i.e truth is satisfied | |
| function testTruth(tree::Node, truth::Truth, threshold::Float32=Float32(1.0e-3))::Bool | |
| truthError = truthScore(tree, truth) | |
| if truthError > threshold | |
| return false | |
| else | |
| return true | |
| end | |
| end | |
| # Returns a list of violating functions from assumed list TRUTHS | |
| function violatingTruths(tree::Node)::Array{Truth} | |
| toReturn = [] | |
| #print("\n Checking Equation ", stringTree(tree), "\n") | |
| for truth in TRUTHS | |
| test_truth = testTruth(tree, truth) | |
| #print("Truth: ", truth, ": " , test_truth, "\n-----\n") | |
| if !test_truth | |
| append!(toReturn, [truth]) | |
| end | |
| end | |
| return toReturn | |
| end | |
| function randomIndex(cX::Array{Float32, 2}, k::Integer=10)::Array{Int32, 1} | |
| indxs = sample([Int32(i) for i in 1:size(cX)[1]], k) | |
| return indxs | |
| end | |
| function randomIndex(leng::Integer, k::Integer=10)::Array{Int32, 1} | |
| indxs = sample([Int32(i) for i in 1:leng], k) | |
| return indxs | |
| end | |
| function extendedX(cX::Array{Float32, 2}, truth::Truth, indx::Array{Int32, 1})::Array{Float32, 2} | |
| workingcX = copy(cX) | |
| X_slice = workingcX[indx, :] | |
| X_transformed = transform(X_slice, truth) | |
| return X_transformed | |
| end | |
| function extendedX(truth::Truth, indx::Array{Int32, 1})::Union{Array{Float32, 2}, Nothing} | |
| return extendedX(OGX, truth, indx) | |
| end | |
| function extendedX(cX::Array{Float32, 2}, violatedTruths::Array{Truth}, indx::Array{Int32, 1})::Union{Array{Float32, 2}, Nothing} | |
| if length(violatedTruths) == 0 | |
| return nothing | |
| end | |
| workingX = extendedX(cX, violatedTruths[1], indx) | |
| for truth in violatedTruths[2:length(violatedTruths)] | |
| workingX = vcat(workingX, extendedX(cX, truth, indx)) | |
| end | |
| return workingX | |
| end | |
| function extendedX(violatedTruths::Array{Truth}, indx::Array{Int32, 1})::Union{Array{Float32, 2}, Nothing} | |
| return extendedX(OGX, violatedTruths, indx) | |
| end | |
| function extendedX(tree::Node, indx::Array{Int32, 1})::Union{Array{Float32, 2}, Nothing} | |
| violatedTruths = violatingTruths(tree) | |
| return extendedX(violatedTruths, indx) | |
| end | |
| function extendedX(member::PopMember, indx::Array{Int32, 1})::Union{Array{Float32, 2}, Nothing} | |
| return extendedX(member.tree, indx) | |
| end | |
| function extendedy(cX::Array{Float32, 2}, cy::Array{Float32}, truth::Truth, indx::Array{Int32, 1})::Union{Array{Float32}, Nothing} | |
| cy = copy(cy) | |
| cX = copy(cX) | |
| X_slice = cX[indx, :] | |
| y_slice = cy[indx] | |
| X_transformed = transform(X_slice, truth) | |
| y_transformed = truthPrediction(X_transformed, y_slice, truth) | |
| return y_transformed | |
| end | |
| function extendedy(truth::Truth, indx::Array{Int32, 1})::Union{Array{Float32}, Nothing} | |
| return extendedy(OGX, OGy, truth, indx) | |
| end | |
| function extendedy(cX::Array{Float32, 2}, cy::Array{Float32}, violatedTruths::Array{Truth}, indx::Array{Int32, 1})::Union{Array{Float32}, Nothing} | |
| if length(violatedTruths) == 0 | |
| return nothing | |
| end | |
| workingy = extendedy(cX, cy, violatedTruths[1], indx) | |
| for truth in violatedTruths[2:length(violatedTruths)] | |
| workingy = vcat(workingy, extendedy(cX, cy, truth, indx)) | |
| end | |
| return workingy | |
| end | |
| function extendedy(violatedTruths::Array{Truth}, indx::Array{Int32, 1})::Union{Array{Float32}, Nothing} | |
| return extendedy(OGX,OGy, violatedTruths, indx) | |
| end | |
| function extendedy(tree::Node, indx::Array{Int32, 1})::Union{Array{Float32}, Nothing} | |
| violatedTruths = violatingTruths(tree) | |
| return extendedy(violatedTruths, indx) | |
| end | |
| function extendedy(member::PopMember, indx::Array{Int32, 1})::Union{Array{Float32}, Nothing} | |
| return extendedy(member.tree, indx) | |
| end |