Changeset 6784 for branches/GP.Grammar.Editor/HeuristicLab.Algorithms.DataAnalysis/3.4/NeuralNetwork/NeuralNetworkRegression.cs
- Timestamp:
- 09/16/11 12:00:36 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GP.Grammar.Editor/HeuristicLab.Algorithms.DataAnalysis/3.4/NeuralNetwork/NeuralNetworkRegression.cs
r6675 r6784 113 113 private NeuralNetworkRegression(NeuralNetworkRegression original, Cloner cloner) 114 114 : base(original, cloner) { 115 RegisterEventHandlers(); 115 116 } 116 117 public NeuralNetworkRegression() 117 118 : base() { 118 var validHiddenLayerValues = new ItemSet<IntValue>(new IntValue[] { new IntValue(0), new IntValue(1), new IntValue(2) }); 119 var validHiddenLayerValues = new ItemSet<IntValue>(new IntValue[] { 120 (IntValue)new IntValue(0).AsReadOnly(), 121 (IntValue)new IntValue(1).AsReadOnly(), 122 (IntValue)new IntValue(2).AsReadOnly() }); 119 123 var selectedHiddenLayerValue = (from v in validHiddenLayerValues 120 124 where v.Value == 1 … … 127 131 Parameters.Add(new FixedValueParameter<IntValue>(RestartsParameterName, "The number of restarts for learning.", new IntValue(2))); 128 132 133 RestartsParameter.Hidden = true; 134 NodesInSecondHiddenLayerParameter.Hidden = true; 135 136 RegisterEventHandlers(); 137 129 138 Problem = new RegressionProblem(); 130 139 } 140 141 private void RegisterEventHandlers() { 142 HiddenLayersParameter.Value.ValueChanged += HiddenLayersParameterValueValueChanged; 143 HiddenLayersParameter.ValueChanged += HiddenLayersParameterValueChanged; 144 } 145 131 146 [StorableHook(HookType.AfterDeserialization)] 132 private void AfterDeserialization() { } 147 private void AfterDeserialization() { 148 RegisterEventHandlers(); 149 } 133 150 134 151 public override IDeepCloneable Clone(Cloner cloner) { 135 152 return new NeuralNetworkRegression(this, cloner); 136 153 } 154 155 private void HiddenLayersParameterValueChanged(object source, EventArgs e) { 156 HiddenLayersParameter.Value.ValueChanged += HiddenLayersParameterValueValueChanged; 157 HiddenLayersParameterValueValueChanged(this, EventArgs.Empty); 158 } 159 160 private void HiddenLayersParameterValueValueChanged(object source, EventArgs e) { 161 if (HiddenLayers == 0) { 162 NodesInFirstHiddenLayerParameter.Hidden = true; 163 NodesInSecondHiddenLayerParameter.Hidden = true; 164 } else if (HiddenLayers == 1) { 165 NodesInFirstHiddenLayerParameter.Hidden = false; 166 NodesInSecondHiddenLayerParameter.Hidden = true; 167 } else { 168 NodesInFirstHiddenLayerParameter.Hidden = false; 169 NodesInSecondHiddenLayerParameter.Hidden = false; 170 } 171 } 172 137 173 138 174 #region neural network … … 155 191 throw new NotSupportedException("Neural network regression does not support NaN or infinity values in the input dataset."); 156 192 157 double targetMin = problemData.Dataset.GetEnumeratedVariableValues(targetVariable).Min();158 targetMin = targetMin - targetMin * 0.1; // -10%159 double targetMax = problemData.Dataset.GetEnumeratedVariableValues(targetVariable).Max();160 targetMax = targetMax + targetMax * 0.1; // + 10%161 162 193 alglib.multilayerperceptron multiLayerPerceptron = null; 163 194 if (nLayers == 0) { 164 alglib.mlpcreate r0(allowedInputVariables.Count(), 1, targetMin, targetMax, out multiLayerPerceptron);195 alglib.mlpcreate0(allowedInputVariables.Count(), 1, out multiLayerPerceptron); 165 196 } else if (nLayers == 1) { 166 alglib.mlpcreate r1(allowedInputVariables.Count(), nHiddenNodes1, 1, targetMin, targetMax, out multiLayerPerceptron);197 alglib.mlpcreate1(allowedInputVariables.Count(), nHiddenNodes1, 1, out multiLayerPerceptron); 167 198 } else if (nLayers == 2) { 168 alglib.mlpcreate r2(allowedInputVariables.Count(), nHiddenNodes1, nHiddenNodes2, 1, targetMin, targetMax, out multiLayerPerceptron);199 alglib.mlpcreate2(allowedInputVariables.Count(), nHiddenNodes1, nHiddenNodes2, 1, out multiLayerPerceptron); 169 200 } else throw new ArgumentException("Number of layers must be zero, one, or two.", "nLayers"); 170 201 alglib.mlpreport rep; … … 177 208 178 209 rmsError = alglib.mlprmserror(multiLayerPerceptron, inputMatrix, nRows); 179 avgRelError = alglib.mlpavgrelerror(multiLayerPerceptron, inputMatrix, nRows); 210 avgRelError = alglib.mlpavgrelerror(multiLayerPerceptron, inputMatrix, nRows); 180 211 181 212 return new NeuralNetworkRegressionSolution((IRegressionProblemData)problemData.Clone(), new NeuralNetworkModel(multiLayerPerceptron, targetVariable, allowedInputVariables));
Note: See TracChangeset
for help on using the changeset viewer.