diff --git a/demo/clustering.py b/demo/clustering.py index 416fd26..66e8a9e 100644 --- a/demo/clustering.py +++ b/demo/clustering.py @@ -7,7 +7,25 @@ import json def entrance(request): - properties = { 'title': 'Clustering Demo' } + arguments = [ + { + 'argument_type': 'select', + 'argument_label': 'Distance', + 'argument_name': 'distance', + 'argument_items': ['EuclideanDistance', + 'ManhattanMetric', + 'JensenMetric']}, + { + 'argument_type': 'integer', + 'argument_name': 'number_of_clusters', + 'argument_label': 'Number of Clusters (<500)', + 'argument_default': '2'}, + { + 'argument_type': 'button-group', + 'argument_items': ['cluster', 'clear'] + }] + properties = { 'title': 'Clustering Demo' , + 'arguments': arguments} return render_to_response("clustering/index.html", properties, context_instance=RequestContext(request)) def cluster(request): @@ -31,7 +49,7 @@ def _read_data(request): raise TypeError positive = json.loads(request.POST['positive'])['points'] negative = json.loads(request.POST['negative'])['points'] - distance_name = request.POST['distance_name'] + distance_name = request.POST['distance'] if len(positive) == 0 and len(negative) == 0: raise TypeError @@ -54,11 +72,11 @@ def _train_clustering(positive, negative, distance_name, k): lab = sg.BinaryLabels(labels) train = sg.RealFeatures(features) - if distance_name == "eucl": + if distance_name == "EuclideanDistance": distance = sg.EuclideanDistance(train, train) - elif distance_name == "manh": + elif distance_name == "ManhattanMetric": distance = sg.ManhattanMetric(train, train) - elif distance_name == "jens": + elif distance_name == "JensenMetric": distance = sg.JensenMetric(train, train) else: raise TypeError diff --git a/demo/gp.py b/demo/gp.py index 8ba6e6a..c10ffc0 100644 --- a/demo/gp.py +++ b/demo/gp.py @@ -9,7 +9,34 @@ import json def entrance(request): - properties = { 'title': 'Gaussian Process Regression Demo' } + arguments = [ + { + 'argument_type': 'decimal', + 'argument_label': 'Sine Freq.', + 'argument_name': 'frequency', + 'argument_default': '2.0'}, + { + 'argument_type': 'decimal', + 'argument_label': 'Amplitude', + 'argument_name': 'amplitude', + 'argument_default': '2.0'}, + { + 'argument_type': 'decimal', + 'argument_label': 'Noise Level', + 'argument_name': 'noise_level', + 'argument_default': '0.1'}, + { + 'argument_type': 'decimal', + 'argument_label': 'Kernel Width', + 'argument_name': 'kernel_width', + 'argument_default': '2.0'}, + { + 'argument_type': 'button-group', + 'argument_items': ['GenerateToyData', 'TrainGP', 'Clear'] + } + ] + properties = { 'title': 'Gaussian Process Regression Demo' , + 'arguments': arguments } return render_to_response("gp/index.html", properties, context_instance = RequestContext(request)) def create_toy_data(request): diff --git a/demo/kernel_matrix.py b/demo/kernel_matrix.py index 2ebbdff..bea8b20 100644 --- a/demo/kernel_matrix.py +++ b/demo/kernel_matrix.py @@ -8,7 +8,47 @@ import json def entrance(request): - properties = { 'title': 'Kernel Matrix Visualization' } + arguments = [ + { + 'argument_type': 'decimal', + 'argument_name': 'frequency', + 'argument_label': 'Sine Freq.', + 'argument_default': '1.0'}, + { + 'argument_type': 'decimal', + 'argument_name': 'amplitude', + 'argument_label': 'Amplitude', + 'argument_default': '1.0'}, + { + 'argument_type': 'decimal', + 'argument_name': 'noise_level', + 'argument_label': 'Noise Level', + 'argument_default': '0.3'}, + { + 'argument_type': 'select', + 'argument_label': 'Kernel Function', + 'argument_name': 'kernel', + 'argument_items': ['GaussianKernel', 'PolynomialKernel', 'LinearKernel'], + 'argument_default': 'GaussianKernel'}, + { + 'argument_type': 'decimal', + 'argument_label': 'Kernel Width', + 'argument_name': 'kernel_width', + 'argument_default': '0.3'}, + { + 'argument_type': 'integer', + 'argument_name': 'degree', + 'argument_default': '5'}, + { + 'argument_type': 'button-group', + 'argument_items': ['CreateToyData', 'Draw', 'Clear']}, + { + 'argument_type': 'div', + 'argument_label': 'Legend', + 'argument_id': 'legend'} + ] + properties = { 'title': 'Kernel Matrix Visualization', + 'arguments': arguments } return render_to_response("kernel_matrix/index.html", properties, context_instance = RequestContext(request)) @@ -73,11 +113,11 @@ def _process(x1_set, x2_set, kernel_width, kernel_name, degree): feat_train = sg.RealFeatures(examples) # construct covariance function - if kernel_name == "line": + if kernel_name == "LinearKernel": kernel = sg.LinearKernel(feat_train, feat_train) - elif kernel_name == "poly": + elif kernel_name == "PolynomialKernel": kernel = sg.PolyKernel(feat_train, feat_train, degree, True) - elif kernel_name == "gaus": + elif kernel_name == "GaussianKernel": kernel = sg.GaussianKernel(feat_train, feat_train, kernel_width) kernel_matrix=kernel.get_kernel_matrix() return kernel_matrix.tolist() diff --git a/demo/svr.py b/demo/svr.py index 098901b..1843684 100644 --- a/demo/svr.py +++ b/demo/svr.py @@ -7,7 +7,41 @@ import json def entrance(request): - properties = { 'title': 'Supported Vector Regression Demo' } + arguments = [ + { + 'argument_type': 'select', + 'argument_name': 'kernel', + 'argument_items': ['GaussianKernel', 'PolynomialKernel', 'LinearKernel' ], + 'argument_default': 'GaussianKernel' + }, + { + 'argument_type': 'decimal', + 'argument_name': 'C', + 'argument_default': '1.2' + }, + { + 'argument_type': 'decimal', + 'argument_name': 'tube', + 'argument_default': '0.04' + }, + { + 'argument_type': 'decimal', + 'argument_name': 'sigma', + 'argument_default': '0.3' + }, + { + 'argument_type': 'integer', + 'argument_name': 'd', + 'argument_default': '5' + }, + { + 'argument_type': 'button-group', + 'argument_items': ['regress', 'clear'] + } + ] + + properties = { 'title': 'Supported Vector Regression Demo', + 'arguments': arguments } return render_to_response("svr/index.html", properties, context_instance=RequestContext(request)) def point(request): @@ -50,13 +84,13 @@ def _train_svr(cost, tubeeps, degree, width, kernel_name, labels, features): lab = sg.RegressionLabels(labels) train = sg.RealFeatures(examples) - if kernel_name == "line": + if kernel_name == "LinearKernel": gk = sg.LinearKernel(train, train) gk.set_normalizer(sg.IdentityKernelNormalizer()) - elif kernel_name == "poly": + elif kernel_name == "PolynomialKernel": gk = sg.PolyKernel(train, train, degree, True) gk.set_normalizer(sg.IdentityKernelNormalizer()) - elif kernel_name == "gaus": + elif kernel_name == "GaussianKernel": gk = sg.GaussianKernel(train, train, width) else: raise TypeError diff --git a/templates/arguments_form.html b/templates/arguments_form.html new file mode 100644 index 0000000..9d01f57 --- /dev/null +++ b/templates/arguments_form.html @@ -0,0 +1,32 @@ +
+ {% for argument in arguments %} + {% if argument.argument_label %} + + {% elif argument.argument_name %} + + {% endif %} + {% if argument.argument_type == 'decimal' %} +
+ {% elif argument.argument_type == 'integer' %} + + {% elif argument.argument_type == 'select' %} +
+ {% elif argument.argument_type == 'button-group' %} +
+ {% for item in argument.argument_items %} + + {% endfor %} +
+ {% elif argument.argument_type == 'div' %} +
+ {% endif %} + {% endfor %} +
diff --git a/templates/clustering/index.html b/templates/clustering/index.html index 24e3a3b..5a89114 100644 --- a/templates/clustering/index.html +++ b/templates/clustering/index.html @@ -36,22 +36,6 @@ } {% endblock %} -{% block arguments %} -
- -
- -
-
- - -
-
-{% endblock %} {% block javascript %} {% endblock %} diff --git a/templates/kernel_matrix/index.html b/templates/kernel_matrix/index.html index 2e96d18..51ff3d0 100644 --- a/templates/kernel_matrix/index.html +++ b/templates/kernel_matrix/index.html @@ -44,33 +44,6 @@ } {% endblock %} -{% block arguments %} -
- -
- -
- -
- -
- - - - -
- - - -
- -
-
-{% endblock %} {% block javascript %}