<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="description" content="Nearest Neighbour Algorithm - Data Mining" />
<meta name="keywords" content="nearest neighbour, data mining, php, computer science, james hamilton" />
<meta http-equiv="Content-Language" content="en-gb" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="robots" content="all" />
<meta name="revisit-after" content="1 days" />

<title>Nearest Neighbour Algorithm - Data Mining</title>
<?php
//lib_functions.php include whoyouknow.co.uk specific functions (e.g. page loging) - not needed for your own site
include "../ants/lib_functions.php";
//change this to include your own database connect script.
include "dbconnect.inc";
logAccess();
?>
<link rel="stylesheet" media="all" href="style.css" type="text/css" />
<link rel="stylesheet" media="all" href="nearestneighbour.css" type="text/css" />

</head>

<body>

<?php
if(isset($_GET[source])) {
    
highlight_file(__FILE__);
}else{

?>
    <p>The nearest neighbour algorithm classifies a given instance based on a set of already classified instances (the training set), by calculating the distance to the nearest training case. The new instance is classified in the same class as the closest training case (i.e. the one that has the least differences/the one that is most the same).
    </p>
    <p>
    Try this out below. There are 10 instances in the training set. Use the select boxes to diagnose a new patient using the nearest neighbour algorithm. The diagnosis is made by selecting the diagnosis (class) of the instance in the training set with the least differences (i.e. closest distance).
    </p>
    <table id="patients" cellpadding="3" cellspacing="0">
        <tr>
            <th>Patient ID</th>
            <th>Sore Throat</th>
            <th>Fever</th>
            <th>Swollen Glands</th>
            <th>Congestion</th>
            <th>Headache</th>
            <th>Diagnosis</th>
            <th>Distance</th>
        </tr>

    <?php

        
/*
                function getRows takes an SQL query string (and a optional array key type - NUM or ASSOC)
                and returns and array containing all the rows of the query.

                    define(ASSOC, 1);
                    define(NUM, 2);

                    function getRows($sql, $type=ASSOC) {
                        $result = mysql_query($sql);
                        if($type == ASSOC) {
                            while($row = mysql_fetch_array($result))
                                $ret[] = $row;
                        }else if($type == NUM) {
                            while($row = mysql_fetch_row($result))
                                $ret[] = $row;
                        }else{
                            die("type should be NUM or ASSOC");
                        }
                        return $ret;
                    }
        */

        
$rows getRows("SELECT * FROM datamining_diagnoses;"NUM);
        
$closest = -1;

        if(isset(
$_POST[diagnose])) {
            
$distance array_fill(0count($rows), 0);

            
$instance $_POST[instance];

            for(
$i 0$i count($rows); $i++) {

                for(
$j 1$j 6$j++) {
                    if(
$rows[$i][$j] != $instance[$j])
                        
$distance[$i]++;
                }

            }

            
$closest array_search(min($distance), $distance);
            
$diagnosis $rows[$closest][6];
        }

        
$a 0;
        foreach(
$rows as $row) {

        
?>
            <tr<?php if($closest == $a) { ?> class="selected"<?php ?>>
                <td><?=$row[0]?></td>
                <td><?=$row[1] == "No" "Yes"?></td>
                <td><?=$row[2] == "No" "Yes"?></td>
                <td><?=$row[3] == "No" "Yes"?></td>
                <td><?=$row[4] == "No" "Yes"?></td>
                <td><?=$row[5] == "No" "Yes"?></td>
                <td><?=$row[6]?></td>
                <td><?=$distance[$a++]?></td>
            </tr>

        <?php

        
}
        
?>
        <tr>
            <form method="post" action="<?=$_SERVER['PHP_SELF']?>">
                <td><input type="hidden" name="instance[]" value="11" />11</td>
                <td><select name="instance[]">
                        <option value="0"<?php if($_POST[instance][1] == "0") echo "selected=\"selected\"";?>>No</option>
                        <option value="1"<?php if($_POST[instance][1] == "1") echo "selected=\"selected\"";?>>Yes</option>
                    </select>
                </td>
                <td><select name="instance[]">
                        <option value="0"<?php if($_POST[instance][2] == "0") echo "selected=\"selected\"";?>>No</option>
                        <option value="1"<?php if($_POST[instance][2] == "1") echo "selected=\"selected\"";?>>Yes</option>
                    </select>
                </td>
                <td><select name="instance[]">
                        <option value="0"<?php if($_POST[instance][3] == "0") echo "selected=\"selected\"";?>>No</option>
                        <option value="1"<?php if($_POST[instance][3] == "1") echo "selected=\"selected\"";?>>Yes</option>
                    </select>
                </td>
                <td><select name="instance[]">
                        <option value="0"<?php if($_POST[instance][4] == "0") echo "selected=\"selected\"";?>>No</option>
                        <option value="1"<?php if($_POST[instance][4] == "1") echo "selected=\"selected\"";?>>Yes</option>
                    </select>
                </td>
                <td><select name="instance[]">
                        <option value="0"<?php if($_POST[instance][5] == "0") echo "selected=\"selected\"";?>>No</option>
                        <option value="1"<?php if($_POST[instance][5] == "1") echo "selected=\"selected\"";?>>Yes</option>
                    </select>
                </td>
                <td<?php if($diagnosis) { ?> class="selected"<?php ?>><?=$diagnosis?></td>
                <td><input type="submit" name="diagnose" value="Diagnose" /></td>
            </form>
        </tr>

    </table>

    <p>
        <a href="<?=$_SERVER[PHP_SELF]?>?source">View Page Source</a>
    </p>
<?php ?>
    <p>
    Back to <a href="index.php">Data Mining</a>
    </p>
    <p>
        It's not what you know, it's <a href="/">whoyouknow.co.uk</a>
    </p>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>

<script type="text/javascript">
_uacct = "UA-16562388-1";
urchinTracker();
</script>
</body>
</html>

Back to Data Mining

It's not what you know, it's whoyouknow.co.uk