Compare commits

..

No commits in common. "8e40396828df55abacb46a7291db679bd2419ac8" and "1c6421f6da164e7aae12510953a7d4d6a6529527" have entirely different histories.

View File

@ -5,7 +5,6 @@ import System.Random
import HushGP.Genome import HushGP.Genome
import HushGP.GP.PushData import HushGP.GP.PushData
import HushGP.GP.PushArgs import HushGP.GP.PushArgs
import Data.List
-- |Sets the index of the passed training data. -- |Sets the index of the passed training data.
assignIndiciesToData :: [PushData] -> [PushData] assignIndiciesToData :: [PushData] -> [PushData]
@ -13,7 +12,7 @@ assignIndiciesToData oldData = zipWith (\dat idx -> dat{_downsampleIndex = Just
-- |Initializes cases distances for passed training data. -- |Initializes cases distances for passed training data.
initializeCaseDistances :: PushArgs -> [PushData] initializeCaseDistances :: PushArgs -> [PushData]
initializeCaseDistances (PushArgs {trainingData = tData, populationSize = popSize}) = [ dat{_caseDistances = Just (replicate (length tData) (fromIntegral @Int @Double popSize))} | dat <- tData ] initializeCaseDistances pushArgs = [ dat{_caseDistances = Just (replicate (length $ trainingData pushArgs) (fromIntegral @Int @Double $ populationSize pushArgs))} | dat <- trainingData pushArgs ]
-- |Updates the cases distances when downsampling -- |Updates the cases distances when downsampling
updateCaseDistances :: [Individual] -> [PushData] -> [PushData] -> String -> Double -> [PushData] updateCaseDistances :: [Individual] -> [PushData] -> [PushData] -> String -> Double -> [PushData]
@ -23,16 +22,7 @@ updateCaseDistances evaledPop downsampleData trainingData informedDownsamplingTy
selectDownsampleRandom :: PushArgs -> [PushData] -> IO [PushData] selectDownsampleRandom :: PushArgs -> [PushData] -> IO [PushData]
selectDownsampleRandom pushArgs pushData = take (floor (downsampleRate pushArgs * fromIntegral @Int @Float (length pushData))) . shuffle' pushData (length pushData) <$> initStdGen selectDownsampleRandom pushArgs pushData = take (floor (downsampleRate pushArgs * fromIntegral @Int @Float (length pushData))) . shuffle' pushData (length pushData) <$> initStdGen
-- |Selects a downsample that has it's cases maximally far away by sequentially
-- adding cases to the downsample that have their closest case maximally far away
selectDownsampleMaxmin :: PushArgs -> [PushData] -> IO [PushData] selectDownsampleMaxmin :: PushArgs -> [PushData] -> IO [PushData]
selectDownsampleMaxmin (PushArgs {downsampleRate = dsRate}) pushData = do selectDownsampleMaxmin pushArgs@(PushArgs {downsampleRate = dsRate}) pushData = do
shuffledCases <- shuffle' pushData (length pushData) <$> initStdGen shuffledCases <- shuffle' pushData (length pushData) <$> initStdGen
let goalSize = floor @Float @Int (dsRate * (fromIntegral @Int @Float $ length pushData))
selectDownsampleMaxmin'
(case uncons shuffledCases of (Just (x, _)) -> [x]; _ -> error "error: shuffledCases empty!")
(drop 1 shuffledCases)
goalSize
selectDownsampleMaxmin' :: [PushData] -> [PushData] -> Int -> IO [PushData]
selectDownsampleMaxmin' newDownsample casesToPickFrom goalSize = undefined