public void Train() { var trainInput = DataPreparator.GetTrainInput(); var trainOutput = DataPreparator.GetTrainOutput(); var validateInput = DataPreparator.GetValidateInput(); var validateOutput = DataPreparator.GetValidateOutput(); var lastIndex = 0; for (var i = 0; i < 9999; i++) { Classifier.Train(trainInput, trainOutput); var mse = Validation.ValidateWithMse(validateInput, validateOutput); var logLoss = Validation.ValidateWithLogLoss(validateInput, validateOutput); LogLossList.Add(logLoss); MseList.Add(mse); if (mse < 0.01 || logLoss < 0.01) { Classifier.Save(); break; } else if (i - lastIndex > 500) { break; } else if (mse <= MseList.Min()) { Classifier.Save(); lastIndex = i; } } }