Neural Network Classification
HTML
<script src="http://www.numericjs.com/lib/numeric-1.2.3.min.js"></script>
<script src="http://underscorejs.org/underscore-min.js"></script>
<body>
<div id="toolbar">Alpha:
<input id="alpha" type="text" value="0.1" size="10" />Lambda:
<input id="lambda" type="text" value="0.0" size="10" />Group:
<select id="group">
<option value="0">Blue</option>
<option value="1">Orange</option>
</select>
</div>
<div id="content">
<canvas id="canvas"></canvas>
</div>
</body>
CSS
#toolbar, #content {
width: 400px;
margin: 0;
padding: 0;
text-align: center;
}
body, input, select {
font: bold 11px arial, sans-serif;
}
JavaScript
features = ["OL","EXT","INT"]
means = [16.798114754098364,12.08909836065574,7.3426229508196705]
stds = [9.265143061714943,6.831733573060062,4.4118474631566515]
Theta1 = [
[7.020348739177122,5.877332193633846,-1.256338864235908],
[7.132300667366502,4.69849440104046,-4.125962000621705],
[-1.5814490219262287,10.243831873464481,10.278311226103114],
[-7.00856641902047,-12.074712722703294,-6.434600596157294]
];
Theta2 = [
[15.17136700444755],
[-7.931065383676173],
[-15.241630148029987],
[6.856952260956779]
];
var sum = numeric.sum,
mul = numeric.mul,
div = numeric.div,
dot = numeric.dot,
add = numeric.add,
sub = numeric.sub,
neg = numeric.neg,
log = numeric.log,
pow = numeric.pow,
sqrt = numeric.sqrt,
abs = numeric.abs,
min = numeric.min,
max = numeric.max,
transpose = numeric.transpose;
function fmincg(f, X, length) {
var mul = numeric.mul,
dot = numeric.dot,
add = numeric.add,
sub = numeric.sub,
min = Math.min,
max = Math.max,
abs = Math.abs,
sqrt = Math.sqrt,
realmin = Number.MIN_VALUE,
EXT = 3,
RHO = 0.01,
SIG = 0.5,
INT = 0.1,
MAX = 20,
RATIO = 100,
M = 0,
i = 0,
red = 1,
ls_failed = 0,
evaluateCost = f(X),
f1 = evaluateCost.cost,
df1 = evaluateCost.gradient;
i = i + (length < 0 ? 1 : 0);
var s = mul(df1, -1);
var d1 = dot(mul(s, -1), s);
var z1 = red / (1 - d1);
while (i < abs(length)) {
i = i + (length > 0 ? 1 : 0);
var X0 = X;
var f0 = f1;
var df0 = df1;
X = add(X, mul(s, z1));
var evaluateCost2 = f(X);
var f2 = evaluateCost2.cost;
var df2 = evaluateCost2.gradient;
i = i + (length < 0 ? 1 : 0);
var d2 = dot(df2, s);
var f3 = f1;
var d3 = d1;
var z3 = -z1;
if (length > 0) {
...