//************************************************************************************** public static WekaLinearRegression CreateNew(int iParamtersID, List <ClassifierParameter> iParameters, Candlestick.Period iPeriod, int iProfitTime, List <int> iTrainingPoints, bool iEliminateColinearAttributes, bool iMinimal) { // Create WekaInfo and retrive ID var info = new WekaInfo(null, typeof(WekaJ48), iParamtersID, iPeriod, iProfitTime); WekaInfo.InsertToDB(info); if (info.ID is null) { throw new Exception("Could not deduct ID"); } // Create LinearRegressionInfo var lrInfo = new WekaLinearRegressionInfo((int)info.ID, iEliminateColinearAttributes, iMinimal); WekaLinearRegressionInfo.UpdateDB(lrInfo); // Save training points if (iTrainingPoints != null) { SaveTrainingPoints(iTrainingPoints, "Data/TrainingPoints/Classifier_" + info.ID.ToString() + ".dat"); } // Create classifier return(new WekaLinearRegression(info, iParameters, lrInfo)); }
//************************************************************************************** public static WekaJ48 CreateNew(int iParamtersID, List <ClassifierParameter> iParameters, Candlestick.Period iPeriod, int iProfitTime, List <int> iTrainingPoints) { // Create WekaInfo and retrive ID var info = new WekaInfo(null, typeof(WekaJ48), iParamtersID, iPeriod, iProfitTime); WekaInfo.InsertToDB(info); if (info.ID is null) { throw new Exception("Could not deduct ID"); } // Create J48Info var j48Info = new WekaJ48Info((int)info.ID); WekaJ48Info.UpdateDB(j48Info); // Save training points if (iTrainingPoints != null) { SaveTrainingPoints(iTrainingPoints, "Data/TrainingPoints/Classifier_" + info.ID.ToString() + ".dat"); } // Create classifier return(new WekaJ48(info, iParameters, j48Info)); }
//************************************************************************************** /// <summary> /// Inserts info to DB /// </summary> public static void InsertToDB(WekaInfo iInfo) { var sql = "INSERT INTO Classifiers (Type, ParametersID, Period, ProfitTime) output INSERTED.ID VALUES(@Type, @ParametersID, @Period, @ProfitTime)"; using (var connection = new SqlConnection(Program.SQLConnectionName)) { connection.Open(); { var cmd = new SqlCommand(sql, connection); cmd.Parameters.AddWithValue("@Type", iInfo.Type.Name); cmd.Parameters.AddWithValue("@ParametersID", iInfo.ParametersID); cmd.Parameters.AddWithValue("@Period", iInfo.Period.ToString()); cmd.Parameters.AddWithValue("@ProfitTime", iInfo.ProfitTime); var dataAdapter = new SqlDataAdapter { InsertCommand = cmd }; int id = (int)dataAdapter.InsertCommand.ExecuteScalar(); iInfo.ID = id; dataAdapter.InsertCommand.Dispose(); } } }
//************************************************************************************** public override void RemoveClassifier() { if (!Exist(ID)) { return; } Console.WriteLine("Removing classifier: " + ID); // Start removal from children foreach (var i in J48Info.ChildrenID) { if (i != null) { var c = Find((int)i); if (c != null) { c.RemoveClassifier(); } } } // Remove model DeleteModel(ID); // Remove training data DeleteTrainingPoints(ID); // Remove info from parents if (J48Info.ParentID != null) { if (Find((int)J48Info.ParentID) is WekaJ48 parent) { for (int i = 0; i < parent.J48Info.ChildrenID.Length; i++) { if (parent.J48Info.ChildrenID[i] == ID) { parent.J48Info.ChildrenID[i] = null; WekaJ48Info.UpdateDB(parent.J48Info); } } } } // Remove info WekaJ48Info.RemoveFromDB(ID); WekaInfo.RemoveFromDB(ID); // Remove target classifier from static list classifiers.Remove(ID); }
//************************************************************************************** public override void RemoveClassifier() { if (!Exist(ID)) { return; } Console.WriteLine("Removing classifier: " + ID); // Remove model DeleteModel(ID); // Remove training data DeleteTrainingPoints(ID); WekaInfo.RemoveFromDB(ID); WekaLinearRegressionInfo.RemoveFromDB(ID); // Remove target classifier from static list classifiers.Remove(ID); }
//************************************************************************************** public WekaJ48(WekaInfo iInfo, List <ClassifierParameter> iParameters, WekaJ48Info iJ48Info) : base(iInfo, iParameters) { J48Info = iJ48Info ?? throw new ArgumentNullException("iJ48Info"); }
//************************************************************************************** public WekaLinearRegression(WekaInfo iInfo, List <ClassifierParameter> iParameters, WekaLinearRegressionInfo iLRInfo) : base(iInfo, iParameters) { LRInfo = iLRInfo ?? throw new ArgumentNullException("iLRInfo"); }