Esempio n. 1
0
        internal static NeuralNetworkPredictionsReport UpdateFor(
            NeuralNetworkPredictionsReport previousReport,
            BankTransactionClass predictionClass,
            bool predictionWasCorrect)
        {
            if (predictionWasCorrect)
            {
                return(new NeuralNetworkPredictionsReport(
                           previousReport.TotalCorrectPredictions + 1,
                           previousReport.TotalIncorrectPredictions,
                           previousReport.IncorrectFraudulentPredictions,
                           previousReport.IncorrectLegitimatePredictions));
            }

            if (predictionClass == BankTransactionClass.Fraudulent)
            {
                return(new NeuralNetworkPredictionsReport(
                           previousReport.TotalCorrectPredictions,
                           previousReport.TotalIncorrectPredictions + 1,
                           previousReport.IncorrectFraudulentPredictions + 1,
                           previousReport.IncorrectLegitimatePredictions));
            }

            if (predictionClass == BankTransactionClass.Legitimate)
            {
                return(new NeuralNetworkPredictionsReport(
                           previousReport.TotalCorrectPredictions,
                           previousReport.TotalIncorrectPredictions + 1,
                           previousReport.IncorrectFraudulentPredictions,
                           previousReport.IncorrectLegitimatePredictions + 1));
            }

            throw new InvalidOperationException($"Transaction class {predictionClass} is not supported.");
        }
Esempio n. 2
0
        private List <BankTransaction> TrainingDataRowsForClass(BankTransactionClass targetClass)
        {
            var dataRowsInClass = allDataRows.Value
                                  .Where(transaction => transaction.Class == targetClass)
                                  .ToList();

            return(RandomSubsetOfDataSet(dataRowsInClass, rowCountOfSmallestTransactionCategory.Value / 2));
        }
Esempio n. 3
0
        private bool IsCorrectPrediction(double[] prediction, BankTransactionClass actualClass)
        {
            var predictedClass = Array.IndexOf(prediction, prediction.Max());

            return((BankTransactionClass)predictedClass == actualClass ? true : false);
        }