private static Rule SetRule(string mainRulePart) { var rule = new Rule { Level = mainRulePart.Split(new[] { " " }, StringSplitOptions.None).Length - 1 }; var properties = mainRulePart.Trim().Replace(" ", string.Empty).Split(new[] { " " }, StringSplitOptions.None); var relation = properties[1]; rule.Property = properties[0]; rule.Value = double.Parse(properties[2]); if (relation == "<=") { rule.Relation = RelationType.LessOrEqual; } else if (relation == ">") { rule.Relation = RelationType.Greater; } else { throw new InvalidDataException(string.Format("Operation {0} is unknown.", relation)); } return rule; }
public void TestInitialize() { _decisionTreeReaderMock = new Mock<IDecisionTreeReader>(); _ruleBuilderMock = new Mock<IRuleBuilder>(); _classifierMock = new Mock<IClassifier<FakeRecord>>(); _decisionTreeReaderMock .Setup(x => x.ReadSubTrees(It.IsAny<string>())); var treeBuilder = new StringBuilder(); treeBuilder.AppendLine("Ask <= 1.1:Sell (31.0/1.0)"); treeBuilder.AppendLine("Ask > 1.1:"); treeBuilder.AppendLine(" Bid <= 1.2:Buy (123.0/1.0)"); treeBuilder.AppendLine(" Bid > 1.2:Hold (31.0/1.0)"); _treeString = treeBuilder.ToString(); _decisionTreeReaderMock .Setup(x => x.NormalizeTreeSource(It.IsAny<string>())) .Returns(_treeString); _decisionTreeReaderMock .Setup(x => x.NormalizeTree(It.IsAny<string>())) .Returns(_treeString); _fakeRule = new Rule {Level = 0}; _ruleBuilderMock .Setup(x => x.Read(It.IsAny<string>())) .Returns(_fakeRule); _tree = new DecisionTree<FakeRecord>( _decisionTreeReaderMock.Object, _ruleBuilderMock.Object, _classifierMock.Object); }
public void MapRules(Rule previousRule, Rule currentRule) { switch (currentRule.Relation) { case RelationType.LessOrEqual: previousRule.LessOrEqualRule = currentRule; break; case RelationType.Greater: previousRule.GreaterRule = currentRule; break; default: throw new ArgumentException("Relation Type unknown."); } }
public void TestInitialize() { _classifier = new Classifier<FakeRecord>(); _root = new Rule { LessOrEqualRule = new Rule { Property = "Ask", Value = 1.1, Relation = RelationType.LessOrEqual, Action = MarketAction.Sell }, GreaterRule = new Rule { Property = "Ask", Value = 1.1, Relation = RelationType.Greater, LessOrEqualRule = new Rule { Property = "Bid", Value = 1.2, Relation = RelationType.LessOrEqual, Action = MarketAction.Buy }, GreaterRule = new Rule { Property = "Bid", Value = 1.2, Relation = RelationType.Greater, Action = MarketAction.Hold } } }; }