From d545f71b5a7d4f8f1343c47f8818f5ef84f4e64f Mon Sep 17 00:00:00 2001 From: Radu Gidei Date: Mon, 26 Feb 2018 12:12:48 +0000 Subject: [PATCH 1/2] namespaces re-organisation & cleanup - move algorithms to `AI.Algorithms` instead of `AI.MachineLearning` - move Machine to `AI.Machine` instead of repeating `AI.Machine.Machine` - get rid of old `Regression.cs` file that's no longer needed, see #8 for updated notes --- .../SimpleLinearRegression.cs | 6 ++- .../{Machine => Interfaces}/IAlgorithm.cs | 6 +-- src/DynAI/{Machine => Interfaces}/IMachine.cs | 2 +- .../Machine/{MachineBase.cs => Machine.cs} | 3 +- src/DynAI/MachineLearning.cs | 2 +- src/DynAI/MachineLearning.csproj | 10 ++-- src/DynAI/MachineLearning/Regression.cs | 47 ------------------- 7 files changed, 12 insertions(+), 64 deletions(-) rename src/DynAI/{MachineLearning => Algorithms}/SimpleLinearRegression.cs (94%) rename src/DynAI/{Machine => Interfaces}/IAlgorithm.cs (85%) rename src/DynAI/{Machine => Interfaces}/IMachine.cs (99%) rename src/DynAI/Machine/{MachineBase.cs => Machine.cs} (99%) delete mode 100644 src/DynAI/MachineLearning/Regression.cs diff --git a/src/DynAI/MachineLearning/SimpleLinearRegression.cs b/src/DynAI/Algorithms/SimpleLinearRegression.cs similarity index 94% rename from src/DynAI/MachineLearning/SimpleLinearRegression.cs rename to src/DynAI/Algorithms/SimpleLinearRegression.cs index 123bcaa..e87aab6 100644 --- a/src/DynAI/MachineLearning/SimpleLinearRegression.cs +++ b/src/DynAI/Algorithms/SimpleLinearRegression.cs @@ -1,12 +1,14 @@ using Accord.Math.Random; using Accord.Statistics.Models.Regression.Linear; -using AI.Machine; using Autodesk.DesignScript.Runtime; using System; using System.Collections.Generic; -namespace AI.MachineLearning.Regression +namespace AI.Algorithms.Regression { + /// + /// In linear regression, the model specification is that the dependent variable, y is a linear combination of the parameters (but need not be linear in the independent variables). + /// public class SimpleLinearRegression : IAlgorithm { #region Interface Properties diff --git a/src/DynAI/Machine/IAlgorithm.cs b/src/DynAI/Interfaces/IAlgorithm.cs similarity index 85% rename from src/DynAI/Machine/IAlgorithm.cs rename to src/DynAI/Interfaces/IAlgorithm.cs index 896bdd2..4de2fd3 100644 --- a/src/DynAI/Machine/IAlgorithm.cs +++ b/src/DynAI/Interfaces/IAlgorithm.cs @@ -1,11 +1,7 @@ using Autodesk.DesignScript.Runtime; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace AI.Machine +namespace AI { [IsVisibleInDynamoLibrary(false)] public interface IAlgorithm diff --git a/src/DynAI/Machine/IMachine.cs b/src/DynAI/Interfaces/IMachine.cs similarity index 99% rename from src/DynAI/Machine/IMachine.cs rename to src/DynAI/Interfaces/IMachine.cs index 38c0230..9d1266c 100644 --- a/src/DynAI/Machine/IMachine.cs +++ b/src/DynAI/Interfaces/IMachine.cs @@ -1,7 +1,7 @@ using System; using Autodesk.DesignScript.Runtime; -namespace AI.Machine +namespace AI { /// /// The generic capabilities of a machine, used for machine learning diff --git a/src/DynAI/Machine/MachineBase.cs b/src/DynAI/Machine/Machine.cs similarity index 99% rename from src/DynAI/Machine/MachineBase.cs rename to src/DynAI/Machine/Machine.cs index 3fc7681..8ec8b8e 100644 --- a/src/DynAI/Machine/MachineBase.cs +++ b/src/DynAI/Machine/Machine.cs @@ -1,9 +1,8 @@ using System; using AI.Utilities; using Autodesk.DesignScript.Runtime; -using AI.Machine; -namespace AI.Machine +namespace AI { /// /// Machines are entities that can leverage different algorithms to learn from training data and then predict new values. diff --git a/src/DynAI/MachineLearning.cs b/src/DynAI/MachineLearning.cs index 30e2c4f..6442324 100644 --- a/src/DynAI/MachineLearning.cs +++ b/src/DynAI/MachineLearning.cs @@ -9,7 +9,7 @@ using System.Text; using System.Threading.Tasks; -namespace AI.MachineLearning +namespace AI.Algorithms { #region Linear Regression diff --git a/src/DynAI/MachineLearning.csproj b/src/DynAI/MachineLearning.csproj index a3c7d8f..888d2fd 100644 --- a/src/DynAI/MachineLearning.csproj +++ b/src/DynAI/MachineLearning.csproj @@ -78,12 +78,10 @@ - - - - - - + + + + diff --git a/src/DynAI/MachineLearning/Regression.cs b/src/DynAI/MachineLearning/Regression.cs deleted file mode 100644 index 2491f30..0000000 --- a/src/DynAI/MachineLearning/Regression.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Accord.Statistics.Models.Regression; -using Accord.Statistics.Models.Regression.Linear; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AI.MachineLearning -{ - /* - /// - /// Regression algoritms. - /// - public class Regression - { - /// - /// In linear regression, the model specification is that the dependent variable, y is a linear combination of the parameters (but need not be linear in the independent variables). - /// - public static SimpleLinearRegression SimpleLinearRegression { get { return new SimpleLinearRegression(); } } - - /// - /// - /// - public static MultipleLinearRegression MultipleLinearRegression { get { return new MultipleLinearRegression(); } } - - /// - /// - /// - public static MultivariateLinearRegression MultivariateLinearRegression { get { return new MultivariateLinearRegression(); } } - - /// - /// - /// - public static OrdinaryLeastSquares OrdinaryLeastSquares { get { return new OrdinaryLeastSquares(); } } - - /// - /// In statistics, logistic regression (sometimes called the logistic model or Logit model) is used for prediction of the probability of occurrence of an event by fitting data to a logistic curve. - /// It is a generalized linear model used for binomial regression. - /// Like many forms of regression analysis, it makes use of several predictor variables that may be either numerical or categorical. - /// For example, the probability that a person has a heart attack within a specified time period might be predicted from knowledge of the person's age, sex and body mass index. - /// Logistic regression is used extensively in the medical and social sciences as well as marketing applications such as prediction of a customer's propensity to purchase a product or cease a subscription. - /// - public static LogisticRegression LogisticRegression { get { return new LogisticRegression(); } } - } - */ -} From 3122b448abd4f089d5490e0ba627a905b3a6417c Mon Sep 17 00:00:00 2001 From: Radu Gidei Date: Mon, 26 Feb 2018 12:20:20 +0000 Subject: [PATCH 2/2] update samples --- ...AI IO test - Simple Linear Regression.json | 6 +- test/AI constructor test - load.dyn | 70 ++++++------ test/AI constructor test - save.dyn | 102 +++++++++--------- ... learn test - Simple Linear Regression.dyn | 75 ++++++------- 4 files changed, 120 insertions(+), 133 deletions(-) diff --git a/test/AI IO test - Simple Linear Regression.json b/test/AI IO test - Simple Linear Regression.json index a901ed3..2eb27f4 100644 --- a/test/AI IO test - Simple Linear Regression.json +++ b/test/AI IO test - Simple Linear Regression.json @@ -1,10 +1,10 @@ { - "$type": "AI.Machine.Machine, AI", + "$type": "AI.Machine, AI", "Name": "TestMachine #1", - "GUID": "4c5d8a58-2113-4a87-806d-90925f55618c", + "GUID": "70fe025a-c694-4350-9775-06b7ff30652e", "Description": "simple machine", "Algorithm": { - "$type": "AI.MachineLearning.Regression.SimpleLinearRegression, AI", + "$type": "AI.Algorithms.Regression.SimpleLinearRegression, AI", "Name": "Simple Linear Regression", "Type": 0, "HasTrainingDataLoaded": true, diff --git a/test/AI constructor test - load.dyn b/test/AI constructor test - load.dyn index c312c56..b6cd8b4 100644 --- a/test/AI constructor test - load.dyn +++ b/test/AI constructor test - load.dyn @@ -1,7 +1,7 @@ - + - + .\AI constructor test.json T:\My Documents\GitHub\DynAI\test\AI constructor test.json @@ -12,51 +12,43 @@ - - - - - - - + + AI IO test - Simple Linear Regression.json + + + - + - + - + - + - + - + - - AI IO test - Simple Linear Regression.json - - - - - - - - - - - + + + + + + + @@ -64,21 +56,19 @@ - + - - - - - - - - - + + + + + + + - - + + diff --git a/test/AI constructor test - save.dyn b/test/AI constructor test - save.dyn index afdbcc2..052ff41 100644 --- a/test/AI constructor test - save.dyn +++ b/test/AI constructor test - save.dyn @@ -1,97 +1,99 @@ - + - + .\AI constructor test.json T:\My Documents\GitHub\DynAI\test\AI constructor test.json - + - - + + + - + + AI IO test - Simple Linear Regression.json + + + - - - + + - + + - + + - + - + - + - - - + + - - AI IO test - Simple Linear Regression.json - - - + - - + - - + + - - - - - - - - - - + + - + + + + + + + + + - + - - + - - - - - - - - + - + - + + + + + + + + + + + diff --git a/test/AI learn test - Simple Linear Regression.dyn b/test/AI learn test - Simple Linear Regression.dyn index f9ae449..47f5877 100644 --- a/test/AI learn test - Simple Linear Regression.dyn +++ b/test/AI learn test - Simple Linear Regression.dyn @@ -1,76 +1,71 @@ - + - - - - + + + + + - + - + - - + + - - - - + - - + - + - - - - - - - - - - - - + + + + + + + + + + + - + - + - - - - - - - - + + - + - + + + + + +