コード例 #1
0
ファイル: UnitTests.cs プロジェクト: microsoft/MLOS
        public void TestHypergrid()
        {
            var dataDim1     = new object[] { "a", "b", false, 2, 5.8, "c " };
            var dim0         = new CategoricalDimension("dim0", false, "a", "b", false, 2, 5.8, "c ");
            var dim1         = new ContinuousDimension("dim1", 0, 10.2, false, true);
            var hypergrid    = new Hypergrid("hypergrid", dim0, dim1);
            var serialized   = OptimizerServiceEncoder.EncodeHypergrid(hypergrid);
            var deserialized = OptimizerServiceDecoder.DecodeHypergrid(serialized);

            Assert.Equal(deserialized.Name, hypergrid.Name);
            Assert.True(deserialized.Dimensions[0] is CategoricalDimension);
            Assert.True(deserialized.Dimensions[1] is ContinuousDimension);

            Assert.True(
                ((CategoricalDimension)deserialized.Dimensions[0]).Values.SequenceEqual(
                    ((CategoricalDimension)hypergrid.Dimensions[0]).Values));
            Assert.Equal(
                ((ContinuousDimension)deserialized.Dimensions[1]).Name,
                dim1.Name);
            Assert.Equal(
                ((ContinuousDimension)deserialized.Dimensions[1]).Min,
                dim1.Min);
            Assert.Equal(
                ((ContinuousDimension)deserialized.Dimensions[1]).Max,
                dim1.Max);
            Assert.Equal(
                ((ContinuousDimension)deserialized.Dimensions[1]).IncludeMin,
                dim1.IncludeMin);
            Assert.Equal(
                ((ContinuousDimension)deserialized.Dimensions[1]).IncludeMax,
                dim1.IncludeMax);
        }
コード例 #2
0
        private IEnumerator LoadData(string dimensionName)
        {
            var dataRequestForm = new WWWForm();

            dataRequestForm.AddField("dimension", dimensionName);

            var dataWebRequest = new WWW(String.Format("{0}:{1}/api/graph/data", Globals.SurfaceServerIp, Globals.SurfaceWebPort), dataRequestForm);

            yield return(dataWebRequest);

            var       response = JsonUtility.FromJson <DataResponse>(dataWebRequest.text);
            Dimension dimension;

            if (response.isMetric)
            {
                var metricDimension = new MetricDimension();
                metricDimension.PossibleTicks = response.ticks;
                metricDimension.IsTimeBased   = response.isTimeBased;
                metricDimension.TimeFormat    = response.timeFormat;
                dimension = metricDimension;
            }
            else
            {
                var catDimension = new CategoricalDimension();
                foreach (var mapping in response.mappings)
                {
                    catDimension.Mappings.Add(new Dimension.Mapping {
                        Name = mapping.name, Value = mapping.value
                    });
                }
                dimension = catDimension;
            }

            var data = new Dimension.DimData[response.data.Length];

            for (var i = 0; i < response.data.Length; i++)
            {
                // assuming ids are 0 - data.length
                data[i].Id     = int.Parse(response.data[i].id);
                data[i].Value  = response.data[i].value;
                data[i].IsNull = response.data[i].isNull;
            }

            dimension.Data        = data;
            dimension.Name        = response.name;
            dimension.DisplayName = response.displayName;
            dimension.DomainMin   = response.domain.min;
            dimension.DomainMax   = response.domain.max;
            dimension.HideTicks   = response.hideTicks;

            dimension.RebuildData();

            foreach (var onDataLoaded in _loadOperations[dimensionName])
            {
                onDataLoaded(dimension);
            }
            _loadOperations.Remove(dimensionName);
        }
コード例 #3
0
ファイル: UnitTests.cs プロジェクト: microsoft/MLOS
        public void TestCategoricalDimension()
        {
            object[] data         = { "str", string.Empty, "cat", false, 9.12 };
            var      dimension    = new CategoricalDimension("Dimension test", data);
            var      serialized   = OptimizerServiceEncoder.EncodeCategoricalDimension(dimension);
            var      deserialized = OptimizerServiceDecoder.DecodeCategoricalDimension(serialized);

            Assert.Equal(deserialized.Name, dimension.Name);
            Assert.True(deserialized.Values.SequenceEqual(data));
        }
コード例 #4
0
ファイル: UnitTests.cs プロジェクト: HeatherJia/MLOS
        public TestSerializingAndDeserializing()
        {
            /* FIXME: This needs better cross-plat support and error handling.
             * - We should include C:\Python37 as another PYTHONHOME location to look for by default
             * - Currently this doesn't handle Linux very well
             * - On Ubuntu Python 3.7 needs to be installed from a separate
             *   repo, which installs as libpython3.7m.so which fails tobe
             *   found due to the trailing "m".
             */

            string pathToVirtualEnv = Environment.GetEnvironmentVariable("PYTHONHOME");

            if (string.IsNullOrEmpty(pathToVirtualEnv))
            {
                pathToVirtualEnv = @"c:\ProgramData\Anaconda3";
            }
            else
            {
                Environment.SetEnvironmentVariable("PYTHONHOME", pathToVirtualEnv, EnvironmentVariableTarget.Process);
            }

            string pathToPythonPkg = $"{pathToVirtualEnv}\\pkgs\\python-3.7.4-h5263a28_0";

            Environment.SetEnvironmentVariable("PATH", $"{pathToVirtualEnv};{pathToPythonPkg}", EnvironmentVariableTarget.Process);
            Environment.SetEnvironmentVariable("PYTHONPATH", $"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib", EnvironmentVariableTarget.Process);

            continuous = new ContinuousDimension(name: "continuous", min: 1, max: 10);
            discrete   = new DiscreteDimension(name: "discrete", min: 1, max: 10);
            ordinal    = new OrdinalDimension(name: "ordinal", orderedValues: new List <object>()
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10
            }, ascending: true);
            categorical = new CategoricalDimension(name: "categorical", values: new List <object>()
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10
            });
            allKindsOfDimensions = new Hypergrid(
                name: "all_kinds_of_dimensions",
                dimensions: new IDimension[]
            {
                continuous,
                discrete,
                ordinal,
                categorical,
            });
        }
コード例 #5
0
        public TestSerializingAndDeserializing()
        {
            string pathToVirtualEnv = Environment.GetEnvironmentVariable("PYTHONHOME");

            if (string.IsNullOrEmpty(pathToVirtualEnv))
            {
                pathToVirtualEnv = @"c:\ProgramData\Anaconda3";
            }
            else
            {
                Environment.SetEnvironmentVariable("PYTHONHOME", pathToVirtualEnv, EnvironmentVariableTarget.Process);
            }

            string pathToPythonPkg = $"{pathToVirtualEnv}\\pkgs\\python-3.7.4-h5263a28_0";

            Environment.SetEnvironmentVariable("PATH", $"{pathToVirtualEnv};{pathToPythonPkg}", EnvironmentVariableTarget.Process);
            Environment.SetEnvironmentVariable("PYTHONPATH", $"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib", EnvironmentVariableTarget.Process);

            continuous = new ContinuousDimension(name: "continuous", min: 1, max: 10);
            discrete   = new DiscreteDimension(name: "discrete", min: 1, max: 10);
            ordinal    = new OrdinalDimension(name: "ordinal", orderedValues: new List <object>()
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10
            }, ascending: true);
            categorical = new CategoricalDimension(name: "categorical", values: new List <object>()
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10
            });
            allKindsOfDimensions = new SimpleHypergrid(
                name: "all_kinds_of_dimensions",
                dimensions: new List <IDimension>()
            {
                continuous,
                discrete,
                ordinal,
                categorical,
            });
        }
コード例 #6
0
        public static OptimizerService.CategoricalDimension EncodeCategoricalDimension(CategoricalDimension dimension)
        {
            var instance = new OptimizerService.CategoricalDimension();

            instance.Name = dimension.Name;
            instance.Values.AddRange(dimension.Values.Select(value => EncodePrimitiveValue(value)));

            return(instance);
        }