Add Local Outlier Factor entry
It is added to the list of experiments. Its link is also added in other pages.master
parent
3cdc6f572c
commit
8910cf32b4
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -0,0 +1,375 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Local Outlier Factor - Experiments - srifqi</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="author" content="srifqi">
|
||||||
|
<meta name="description" content="Local outlier factor calculator">
|
||||||
|
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1">
|
||||||
|
<style>
|
||||||
|
noscript, .noscript {
|
||||||
|
background: #fff9c4;
|
||||||
|
border: 4px solid #fff176;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: block;
|
||||||
|
padding: 4px;
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
noscript, .noscript, noscript *, .noscript * {
|
||||||
|
font: 12px sans-serif !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font: 16px sans-serif;
|
||||||
|
margin: 0 auto 16px;
|
||||||
|
max-width: 800px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#form {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#form>* {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 16px;
|
||||||
|
max-width: calc(100% - 32px);
|
||||||
|
text-align: left;
|
||||||
|
width: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#form>textarea {
|
||||||
|
height: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#form label {
|
||||||
|
display: block;
|
||||||
|
margin: 4px auto;
|
||||||
|
max-width: 100%;
|
||||||
|
width: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#form label input[type=number] {
|
||||||
|
background: white;
|
||||||
|
border: 1px solid #e0e0e0;
|
||||||
|
float: right;
|
||||||
|
height: 16px;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#form br {
|
||||||
|
display: block;
|
||||||
|
line-height: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#res {
|
||||||
|
font-family: monospace;
|
||||||
|
margin: 24px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#res th, #res td {
|
||||||
|
padding: 0 8px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#res td:hover {
|
||||||
|
background: #fff9c4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pout {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#c {
|
||||||
|
border: 1px solid black;
|
||||||
|
display: none;
|
||||||
|
height: 500px;
|
||||||
|
width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.attrib {
|
||||||
|
font-size: 12px;
|
||||||
|
margin-left: 4em;
|
||||||
|
text-align: justify;
|
||||||
|
text-indent: -4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tooltip {
|
||||||
|
background: #fff9c4;
|
||||||
|
border: 4px solid #fff176;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: none;
|
||||||
|
padding: 4px;
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 832px) {
|
||||||
|
body {
|
||||||
|
margin: 0 8px;
|
||||||
|
width: calc(100% - 16px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 id="title">Local Outlier Factor</h1>
|
||||||
|
<p>Local outlier factor (LOF) is an algorithm for finding anomalous data points by measuring the local deviation of a given data point with respect to its neighbours (Breunig et al., 2000).</p>
|
||||||
|
<noscript class="noscript">
|
||||||
|
For full functionality of this site, it is necessary to enable JavaScript.
|
||||||
|
Here are the <a href="https://www.enable-javascript.com/" target="_blank">
|
||||||
|
instructions how to enable JavaScript in your web browser</a>.
|
||||||
|
</noscript>
|
||||||
|
<div id="form">
|
||||||
|
<textarea id="raw">1 26 35
|
||||||
|
2 13 12
|
||||||
|
3 11 5
|
||||||
|
4 10 15
|
||||||
|
5 50 45
|
||||||
|
6 200 200
|
||||||
|
7 18 20
|
||||||
|
8 21 14
|
||||||
|
9 16 20
|
||||||
|
10 21 75</textarea><!--
|
||||||
|
--><div>
|
||||||
|
<p>Input data in the text box with format:<br> ID x y</p>
|
||||||
|
<label>Neighbour count: <input type="number" id="neighbour" min="1" value="3"></label><br>
|
||||||
|
<label>Threshold: <input type="number" id="thresh" min="0" value="2" step="0.1"></label><br>
|
||||||
|
<label><input type="checkbox" id="proxshow" checked> Show proximity matrix</label><br>
|
||||||
|
<label><input type="checkbox" id="knnshow" checked> Show nearest neighbours</label><br>
|
||||||
|
<label><input type="checkbox" id="avdenshow" checked> Show average density</label><br>
|
||||||
|
<label><input type="checkbox" id="avreldenshow" checked> Show average relative density</label><br>
|
||||||
|
<button id="btnCalc">Calculate</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="res"></div>
|
||||||
|
<canvas id="c" width=500 height=500></canvas>
|
||||||
|
<hr>
|
||||||
|
<p class="attrib">Breunig, M. M.; Kriegel, H.-P.; Ng, R. T.; and Sander, J. (2000). LOF: Identifying Density-based Local Outliers. <span class="italic">Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data (SIGMOD)</span>. pp. 93–104. doi:10.1145/335191.335388. ISBN 1-5811-3217-4.</p>
|
||||||
|
<div id="tooltip"></div>
|
||||||
|
<script>
|
||||||
|
var DATA = [];
|
||||||
|
var a = undefined;
|
||||||
|
var distSq = (A, B) => Math.pow(A[1] - B[1], 2) + Math.pow(A[2] - B[2], 2);
|
||||||
|
var dist = (A, B) => Math.sqrt(distSq(A, B));
|
||||||
|
var prox, avgDens, avgRelDens;
|
||||||
|
const CSIZE = 500;
|
||||||
|
const fixFrac = 2;
|
||||||
|
function calc() {
|
||||||
|
res.innerHTML = "";
|
||||||
|
// data preparations
|
||||||
|
neighNum = neighbour.value;
|
||||||
|
thresVal = thresh.value;
|
||||||
|
DATA = raw.value.split("\n");
|
||||||
|
DATA.forEach((v, i, a) => {
|
||||||
|
a[i] = v.split(/\s+/g);
|
||||||
|
let p = String(a[i][0]);
|
||||||
|
a[i].forEach((v, i, a) => a[i] = Number(v));
|
||||||
|
a[i][0] = p;
|
||||||
|
});
|
||||||
|
let N = DATA.length;
|
||||||
|
// proximity matrix
|
||||||
|
prox = [];
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
prox.push([]);
|
||||||
|
for (let j = 0; j < N; j ++) {
|
||||||
|
prox[i].push([j, dist(DATA[i], DATA[j])]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (proxshow.checked) {
|
||||||
|
let pmat = "<b>Proximity matrix</b><table>";
|
||||||
|
pmat += "<tr><th>";
|
||||||
|
for (let i = 0; i < N; i ++)
|
||||||
|
pmat += "<th>" + DATA[i][0];
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
pmat += "<tr><th>" + DATA[i][0];
|
||||||
|
for (let j = 0; j < N; j ++) {
|
||||||
|
pmat += "<td onmouseover=\"t_dist(" + i + ", " + j + ")\"";
|
||||||
|
pmat += " onmouseout=\"t_clear()\">";
|
||||||
|
pmat += prox[i][j][1].toFixed(fixFrac);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pmat += "</table><br>";
|
||||||
|
res.innerHTML += pmat;
|
||||||
|
}
|
||||||
|
// sort proximity matrix by row to get nearest neighbours
|
||||||
|
prox.forEach((v, i, a) => a[i].sort((A, B) => A[1] - B[1]));
|
||||||
|
if (knnshow.checked) {
|
||||||
|
let nears = "<b>" + neighNum + "-nearest neighbours</b><table>";
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
nears += "<tr><th>" + DATA[i][0];
|
||||||
|
for (let j = 1; j <= neighNum; j ++) {
|
||||||
|
nears += "<td onmouseover=\"t_dist(" + i + ", " + prox[i][j][0] + ")\"";
|
||||||
|
nears += " onmouseout=\"t_clear()\">";
|
||||||
|
nears += "<b>" + DATA[prox[i][j][0]][0] + "</b><br>" + prox[i][j][1].toFixed(fixFrac);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nears += "</table><br>";
|
||||||
|
res.innerHTML += nears;
|
||||||
|
}
|
||||||
|
// average density
|
||||||
|
avgDens = [];
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
let sum_ = 0;
|
||||||
|
for (let j = 1; j <= neighNum; j ++)
|
||||||
|
sum_ += prox[i][j][1];
|
||||||
|
avgDens.push(neighNum / sum_);
|
||||||
|
}
|
||||||
|
if (avdenshow.checked) {
|
||||||
|
let avden = "<b>Average density</b><table>";
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
avden += "<tr><th>" + DATA[i][0];
|
||||||
|
avden += "<td onmouseover=\"t_avgDens(" + i + ")\"";
|
||||||
|
avden += " onmouseout=\"t_clear()\">";
|
||||||
|
avden += avgDens[i].toFixed(fixFrac);
|
||||||
|
}
|
||||||
|
avden += "</table><br>";
|
||||||
|
res.innerHTML += avden;
|
||||||
|
}
|
||||||
|
// average relative density
|
||||||
|
avgRelDens = [];
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
let sum_ = 0;
|
||||||
|
for (let j = 1; j <= neighNum; j ++)
|
||||||
|
sum_ += avgDens[prox[i][j][0]];
|
||||||
|
avgRelDens.push(sum_ / neighNum / avgDens[i]);
|
||||||
|
}
|
||||||
|
if (avreldenshow.checked) {
|
||||||
|
let avrelden = "<b>Average relative density</b><table>";
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
avrelden += "<tr><th>" + DATA[i][0];
|
||||||
|
avrelden += "<td " + (avgRelDens[i] > thresVal ? "class=\"pout\"" : "");
|
||||||
|
avrelden += " onmouseover=\"t_avgRelDens(" + i + ")\"";
|
||||||
|
avrelden += " onmouseout=\"t_clear()\">";
|
||||||
|
avrelden += avgRelDens[i].toFixed(fixFrac);
|
||||||
|
}
|
||||||
|
avrelden += "</table><br>";
|
||||||
|
res.innerHTML += avrelden;
|
||||||
|
}
|
||||||
|
// outliers
|
||||||
|
let outliers = "<b>Outliers</b><table>";
|
||||||
|
outliers += "<tr><th>ID<th>x<th>y";
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
if (avgRelDens[i] <= thresVal)
|
||||||
|
continue;
|
||||||
|
outliers += "<tr><th>" + DATA[i][0];
|
||||||
|
outliers += "<td>" + DATA[i][1];
|
||||||
|
outliers += "<td>" + DATA[i][2];
|
||||||
|
}
|
||||||
|
outliers += "</table><br>";
|
||||||
|
res.innerHTML += outliers;
|
||||||
|
// plot graph
|
||||||
|
let xMin = DATA[0][1];
|
||||||
|
let xMax = DATA[0][1];
|
||||||
|
let yMin = DATA[0][1];
|
||||||
|
let yMax = DATA[0][2];
|
||||||
|
for (let i = 1; i < N; i ++) {
|
||||||
|
if (DATA[i][1] < xMin) xMin = DATA[i][1];
|
||||||
|
if (DATA[i][1] > xMax) xMax = DATA[i][1];
|
||||||
|
if (DATA[i][2] < yMin) yMin = DATA[i][2];
|
||||||
|
if (DATA[i][2] > yMax) yMax = DATA[i][2];
|
||||||
|
}
|
||||||
|
let scale = Math.max(xMax - xMin, yMax - yMin);
|
||||||
|
a.clearRect(0, 0, CSIZE, CSIZE);
|
||||||
|
let ox = (-xMin / scale * .8 + .1) * CSIZE;
|
||||||
|
let oy = (-yMin / scale * .8 + .1) * CSIZE;
|
||||||
|
oy = CSIZE - oy;
|
||||||
|
a.strokeStyle = "black";
|
||||||
|
a.beginPath();
|
||||||
|
a.moveTo(ox, 0);
|
||||||
|
a.lineTo(ox, CSIZE);
|
||||||
|
a.stroke();
|
||||||
|
a.beginPath();
|
||||||
|
a.moveTo(0, oy);
|
||||||
|
a.lineTo(CSIZE, oy);
|
||||||
|
a.stroke();
|
||||||
|
a.font = "12px sans-serif";
|
||||||
|
for (let i = 0; i < N; i ++) {
|
||||||
|
let px = ((DATA[i][1] - xMin) / scale * .8 + .1) * CSIZE;
|
||||||
|
let py = ((DATA[i][2] - yMin) / scale * .8 + .1) * CSIZE;
|
||||||
|
py = CSIZE - py;
|
||||||
|
a.fillStyle = avgRelDens[i] > thresVal ? "red" : "black";
|
||||||
|
a.fillRect(px, py, 2, 2);
|
||||||
|
a.fillText(DATA[i][0], px, py);
|
||||||
|
}
|
||||||
|
c.style.display = "block";
|
||||||
|
}
|
||||||
|
// tooltips
|
||||||
|
t_clear = () => {
|
||||||
|
tooltip.style.display = "none";
|
||||||
|
tooltip.innerHTML = "";
|
||||||
|
};
|
||||||
|
t_dist = (i, j) => {
|
||||||
|
let ii = DATA[i][0];
|
||||||
|
let xi = DATA[i][1];
|
||||||
|
let yi = DATA[i][2];
|
||||||
|
let ij = DATA[j][0];
|
||||||
|
let xj = DATA[j][1];
|
||||||
|
let yj = DATA[j][2];
|
||||||
|
tooltip.innerHTML = "distance<br>"
|
||||||
|
tooltip.innerHTML += "= sqrt((x<sub>" + ii + "</sub> - x<sub>" + ij + "</sub>)<sup>2</sup> + (y<sub>" + ii + "</sub> - y<sub>" + ij + "</sub>)<sup>2</sup>)<br>";
|
||||||
|
tooltip.innerHTML += "= sqrt((" + xi + " - " + xj + ")<sup>2</sup> + (" + yi + " - " + yj + ")<sup>2</sup>)";
|
||||||
|
tooltip.style.display = "block";
|
||||||
|
};
|
||||||
|
t_avgDens = (i) => {
|
||||||
|
let sums = "";
|
||||||
|
let sum2 = "";
|
||||||
|
for (let j = 1; j <= neighNum; j ++) {
|
||||||
|
sums += "dist(" + DATA[i][0] + ", " + DATA[prox[i][j][0]][0] + ")";
|
||||||
|
sum2 += prox[i][j][1].toFixed(fixFrac);
|
||||||
|
if (j < neighNum) {
|
||||||
|
sums += " + ";
|
||||||
|
sum2 += " + ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tooltip.innerHTML = "average density<br>";
|
||||||
|
tooltip.innerHTML += "= neighbour count / (" + sums + ")<br>";
|
||||||
|
tooltip.innerHTML += "= " + neighNum + " / (" + sum2 + ")";
|
||||||
|
tooltip.style.display = "block";
|
||||||
|
};
|
||||||
|
t_avgRelDens = (i) => {
|
||||||
|
let sums = "";
|
||||||
|
let sum2 = "";
|
||||||
|
for (let j = 1; j <= neighNum; j ++) {
|
||||||
|
sums += "avg<sub>" + DATA[prox[i][j][0]][0] + "</sub>";
|
||||||
|
sum2 += avgDens[prox[i][j][0]].toFixed(fixFrac);
|
||||||
|
if (j < neighNum) {
|
||||||
|
sums += " + ";
|
||||||
|
sum2 += " + ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tooltip.innerHTML = "average relative density<br>";
|
||||||
|
tooltip.innerHTML += "= (" + sums + ") / neighbour count / avg<sub>" + DATA[i][0] + "</sub><br>";
|
||||||
|
tooltip.innerHTML += "= (" + sum2 + ") / " + neighNum + " / " + avgDens[i].toFixed(fixFrac);
|
||||||
|
tooltip.style.display = "block";
|
||||||
|
};
|
||||||
|
document.addEventListener("mousemove", (ev) => {
|
||||||
|
if (ev.clientX <= window.innerWidth / 2) {
|
||||||
|
tooltip.style.left = (ev.clientX + 16) + "px";
|
||||||
|
tooltip.style.right = "";
|
||||||
|
} else {
|
||||||
|
tooltip.style.left = "";
|
||||||
|
tooltip.style.right = (window.innerWidth - ev.clientX) + "px";
|
||||||
|
}
|
||||||
|
if (ev.clientY <= window.innerHeight / 2) {
|
||||||
|
tooltip.style.top = ev.clientY + "px";
|
||||||
|
tooltip.style.bottom = "";
|
||||||
|
} else {
|
||||||
|
tooltip.style.top = "";
|
||||||
|
tooltip.style.bottom = (window.innerHeight - ev.clientY) + "px";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btnCalc.addEventListener("click", () => { calc(); });
|
||||||
|
window.addEventListener("load", () => { a = c.getContext("2d"); });
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li class="active"><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li class="active"><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li class="active"><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li class="active"><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li class="active"><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li class="active"><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li class="active"><div><a href="./">Experiments</a></div><ul>
|
<li class="active"><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
@ -34,6 +35,7 @@
|
||||||
<section>
|
<section>
|
||||||
<p>I like to do coding and creating mini projects. Here are some of my projects.</p>
|
<p>I like to do coding and creating mini projects. Here are some of my projects.</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="localoutlierfactor.html">Local Outlier Factor</a> (<time datetime="2020-12-04">4 December 2020</time>)</li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a> <span class="exp-dip">DIP</span> (<time datetime="2020-11-11">11 November 2020</time>)</li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a> <span class="exp-dip">DIP</span> (<time datetime="2020-11-11">11 November 2020</time>)</li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a> <span class="exp-dip">DIP</span> (<time datetime="2020-11-04">4 November 2020</time>)</li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a> <span class="exp-dip">DIP</span> (<time datetime="2020-11-04">4 November 2020</time>)</li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a> <span class="exp-dip">DIP</span> (<time datetime="2020-11-01">1 November 2020</time>)</li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a> <span class="exp-dip">DIP</span> (<time datetime="2020-11-01">1 November 2020</time>)</li>
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Local Outlier Factor - Experiments - srifqi</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="author" content="srifqi">
|
||||||
|
<meta name="description" content="Local outlier factor calculator">
|
||||||
|
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="/main.css">
|
||||||
|
</head>
|
||||||
|
<body style="border: 0; max-width: 100%;">
|
||||||
|
<header><h1>Local Outlier Factor</h1></header>
|
||||||
|
<main>
|
||||||
|
<nav>
|
||||||
|
<ul class="left-menu">
|
||||||
|
<li><div><a href="/">Home</a></div></li>
|
||||||
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li class="active"><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
<li><a href="dip_grey_transform.html">Grey Transform</a></li>
|
||||||
|
<li><a href="genetic_algorithm.html">Genetic Algorithm</a></li>
|
||||||
|
<li><a href="vibration_test.html">Web Vibration API</a></li>
|
||||||
|
<li><a href="addition_game.html">Addition Game</a></li>
|
||||||
|
<li><a href="negative_lens.html">Negative Lens</a></li>
|
||||||
|
<li><a href="positive_lens.html">Positive Lens</a></li>
|
||||||
|
<li><a href="waterdrop.html">Waterdrop</a></li>
|
||||||
|
<li><a href="drive_a_car.html">Drive A Car</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><div><a href="/minetest.html">Minetest</a></div></li>
|
||||||
|
<li><div><a href="/library.html">Libraries</a></div></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<section style="max-width: calc(100% - 16px);">
|
||||||
|
<aside>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr><th colspan="2">Local Outlier Factor</th></tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><th>Type</th><td>Course material</td></tr>
|
||||||
|
<tr><th>Date</th><td><time datetime="2020-12-04">4 December 2020</time></td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</aside>
|
||||||
|
<p>Unlike last time, this was created <span class="italic">for</span> an assignment. I did it in JavaScript since start.</p>
|
||||||
|
<p>Local outlier factor is used in anomaly detection.</p>
|
||||||
|
<p><span class="italic">Have you tried a data set without any outliers?</span></p>
|
||||||
|
<p><a href="bare/localoutlierfactor.html" target="_blank">open in new window</a></p>
|
||||||
|
<iframe style="width: 900px; height: 500px;" src="bare/localoutlierfactor.html"></iframe>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul class="left-menu">
|
<ul class="left-menu">
|
||||||
<li><div><a href="/">Home</a></div></li>
|
<li><div><a href="/">Home</a></div></li>
|
||||||
<li><div><a href="./">Experiments</a></div><ul>
|
<li><div><a href="./">Experiments</a></div><ul>
|
||||||
|
<li><a href="localoutlierfactor.html">LOF (Statistics)</a></li>
|
||||||
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
<li><a href="dip_contrast_enhancement.html">Contrast Enhance</a></li>
|
||||||
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
<li><a href="dip_edge_detection.html">Edge Detection</a></li>
|
||||||
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
<li><a href="dip_smoothing.html">Image Smoothing</a></li>
|
||||||
|
|
Loading…
Reference in New Issue