thesis_forecasting_website / inferences /inference_helpers.go
tebakaja's picture
feat: optimize prediction
a9cf43e
package inferences
import (
"sync"
loaders "thesis_forecasting_website/loaders"
)
type StockPrice struct {
Date string `json:"date"`
Price float32 `json:"price"`
}
func Denormalization(data, minValue, maxValue float32) float32 {
return (data * (maxValue - minValue)) + minValue
}
func InferenceLoader(inferenceDataPath, scalersDataPath string) (
[][]interface{}, loaders.Scalers, []error,
) {
var (
inferenceData [][]interface{}
scalersData loaders.Scalers
)
errChannel := make(chan error, 2)
var wgDatasetScalerLoader sync.WaitGroup
wgDatasetScalerLoader.Add(2)
go func() {
defer wgDatasetScalerLoader.Done()
tempData, err := loaders.DatasetLoader(inferenceDataPath)
if err != nil {
errChannel <- err
return
}
inferenceData = tempData
}()
go func() {
defer wgDatasetScalerLoader.Done()
tempData, err := loaders.ScalersLoader(scalersDataPath)
if err != nil {
errChannel <- err
return
}
scalersData = tempData
}()
wgDatasetScalerLoader.Wait()
close(errChannel)
var errors []error
for err := range errChannel {
errors = append(errors, err)
}
if len(errors) > 0 {
return nil, loaders.Scalers{}, errors
}
return inferenceData, scalersData, nil
}