33 lines
589 B
Mathematica
33 lines
589 B
Mathematica
|
iris = csvread("iris.csv");
|
||
|
|
||
|
[training, testing] = randomsplit(iris, 2/3)
|
||
|
|
||
|
p = 2
|
||
|
cells = p^(columns(iris)-1)+1
|
||
|
|
||
|
minmax = ranges(iris);
|
||
|
classes = minmax(2,1) - minmax(1,1) + 1;
|
||
|
|
||
|
votes = zeros(cells,classes);
|
||
|
|
||
|
for i=1:rows(training)
|
||
|
label = training(i,1);
|
||
|
hashval = hash(training(i,:), minmax, p);
|
||
|
votes(hashval,label) += 1;
|
||
|
endfor
|
||
|
|
||
|
classification = tally(votes)
|
||
|
|
||
|
correct = 0
|
||
|
for i=1:rows(testing);
|
||
|
hashval = hash(testing(i,:), minmax, p);
|
||
|
class=classification(hashval);
|
||
|
label = testing(i,1);
|
||
|
if label == class
|
||
|
correct += 1;
|
||
|
endif
|
||
|
endfor
|
||
|
|
||
|
display(correct/rows(testing))
|
||
|
|