Created
May 14, 2020 17:24
-
-
Save JohnEarnest/ece3cd7019be17e1ac9b8068f2256f96 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/ the infamous iris dataset | |
cols:`sepalLength`sepalWidth`petalLength`petalWidth`species | |
iris:((5.1; 3.5; 1.4; 0.2; `setosa) | |
(4.9; 3.0; 1.4; 0.2; `setosa) | |
(4.7; 3.2; 1.3; 0.2; `setosa) | |
(4.6; 3.1; 1.5; 0.2; `setosa) | |
(5.0; 3.6; 1.4; 0.2; `setosa) | |
(5.4; 3.9; 1.7; 0.4; `setosa) | |
(4.6; 3.4; 1.4; 0.3; `setosa) | |
(5.0; 3.4; 1.5; 0.2; `setosa) | |
(4.4; 2.9; 1.4; 0.2; `setosa) | |
(4.9; 3.1; 1.5; 0.1; `setosa) | |
(5.4; 3.7; 1.5; 0.2; `setosa) | |
(4.8; 3.4; 1.6; 0.2; `setosa) | |
(4.8; 3.0; 1.4; 0.1; `setosa) | |
(4.3; 3.0; 1.1; 0.1; `setosa) | |
(5.8; 4.0; 1.2; 0.2; `setosa) | |
(5.7; 4.4; 1.5; 0.4; `setosa) | |
(5.4; 3.9; 1.3; 0.4; `setosa) | |
(5.1; 3.5; 1.4; 0.3; `setosa) | |
(5.7; 3.8; 1.7; 0.3; `setosa) | |
(5.1; 3.8; 1.5; 0.3; `setosa) | |
(5.4; 3.4; 1.7; 0.2; `setosa) | |
(5.1; 3.7; 1.5; 0.4; `setosa) | |
(4.6; 3.6; 1.0; 0.2; `setosa) | |
(5.1; 3.3; 1.7; 0.5; `setosa) | |
(4.8; 3.4; 1.9; 0.2; `setosa) | |
(5.0; 3.0; 1.6; 0.2; `setosa) | |
(5.0; 3.4; 1.6; 0.4; `setosa) | |
(5.2; 3.5; 1.5; 0.2; `setosa) | |
(5.2; 3.4; 1.4; 0.2; `setosa) | |
(4.7; 3.2; 1.6; 0.2; `setosa) | |
(4.8; 3.1; 1.6; 0.2; `setosa) | |
(5.4; 3.4; 1.5; 0.4; `setosa) | |
(5.2; 4.1; 1.5; 0.1; `setosa) | |
(5.5; 4.2; 1.4; 0.2; `setosa) | |
(4.9; 3.1; 1.5; 0.1; `setosa) | |
(5.0; 3.2; 1.2; 0.2; `setosa) | |
(5.5; 3.5; 1.3; 0.2; `setosa) | |
(4.9; 3.1; 1.5; 0.1; `setosa) | |
(4.4; 3.0; 1.3; 0.2; `setosa) | |
(5.1; 3.4; 1.5; 0.2; `setosa) | |
(5.0; 3.5; 1.3; 0.3; `setosa) | |
(4.5; 2.3; 1.3; 0.3; `setosa) | |
(4.4; 3.2; 1.3; 0.2; `setosa) | |
(5.0; 3.5; 1.6; 0.6; `setosa) | |
(5.1; 3.8; 1.9; 0.4; `setosa) | |
(4.8; 3.0; 1.4; 0.3; `setosa) | |
(5.1; 3.8; 1.6; 0.2; `setosa) | |
(4.6; 3.2; 1.4; 0.2; `setosa) | |
(5.3; 3.7; 1.5; 0.2; `setosa) | |
(5.0; 3.3; 1.4; 0.2; `setosa) | |
(7.0; 3.2; 4.7; 1.4; `versicolor) | |
(6.4; 3.2; 4.5; 1.5; `versicolor) | |
(6.9; 3.1; 4.9; 1.5; `versicolor) | |
(5.5; 2.3; 4.0; 1.3; `versicolor) | |
(6.5; 2.8; 4.6; 1.5; `versicolor) | |
(5.7; 2.8; 4.5; 1.3; `versicolor) | |
(6.3; 3.3; 4.7; 1.6; `versicolor) | |
(4.9; 2.4; 3.3; 1.0; `versicolor) | |
(6.6; 2.9; 4.6; 1.3; `versicolor) | |
(5.2; 2.7; 3.9; 1.4; `versicolor) | |
(5.0; 2.0; 3.5; 1.0; `versicolor) | |
(5.9; 3.0; 4.2; 1.5; `versicolor) | |
(6.0; 2.2; 4.0; 1.0; `versicolor) | |
(6.1; 2.9; 4.7; 1.4; `versicolor) | |
(5.6; 2.9; 3.6; 1.3; `versicolor) | |
(6.7; 3.1; 4.4; 1.4; `versicolor) | |
(5.6; 3.0; 4.5; 1.5; `versicolor) | |
(5.8; 2.7; 4.1; 1.0; `versicolor) | |
(6.2; 2.2; 4.5; 1.5; `versicolor) | |
(5.6; 2.5; 3.9; 1.1; `versicolor) | |
(5.9; 3.2; 4.8; 1.8; `versicolor) | |
(6.1; 2.8; 4.0; 1.3; `versicolor) | |
(6.3; 2.5; 4.9; 1.5; `versicolor) | |
(6.1; 2.8; 4.7; 1.2; `versicolor) | |
(6.4; 2.9; 4.3; 1.3; `versicolor) | |
(6.6; 3.0; 4.4; 1.4; `versicolor) | |
(6.8; 2.8; 4.8; 1.4; `versicolor) | |
(6.7; 3.0; 5.0; 1.7; `versicolor) | |
(6.0; 2.9; 4.5; 1.5; `versicolor) | |
(5.7; 2.6; 3.5; 1.0; `versicolor) | |
(5.5; 2.4; 3.8; 1.1; `versicolor) | |
(5.5; 2.4; 3.7; 1.0; `versicolor) | |
(5.8; 2.7; 3.9; 1.2; `versicolor) | |
(6.0; 2.7; 5.1; 1.6; `versicolor) | |
(5.4; 3.0; 4.5; 1.5; `versicolor) | |
(6.0; 3.4; 4.5; 1.6; `versicolor) | |
(6.7; 3.1; 4.7; 1.5; `versicolor) | |
(6.3; 2.3; 4.4; 1.3; `versicolor) | |
(5.6; 3.0; 4.1; 1.3; `versicolor) | |
(5.5; 2.5; 4.0; 1.3; `versicolor) | |
(5.5; 2.6; 4.4; 1.2; `versicolor) | |
(6.1; 3.0; 4.6; 1.4; `versicolor) | |
(5.8; 2.6; 4.0; 1.2; `versicolor) | |
(5.0; 2.3; 3.3; 1.0; `versicolor) | |
(5.6; 2.7; 4.2; 1.3; `versicolor) | |
(5.7; 3.0; 4.2; 1.2; `versicolor) | |
(5.7; 2.9; 4.2; 1.3; `versicolor) | |
(6.2; 2.9; 4.3; 1.3; `versicolor) | |
(5.1; 2.5; 3.0; 1.1; `versicolor) | |
(5.7; 2.8; 4.1; 1.3; `versicolor) | |
(6.3; 3.3; 6.0; 2.5; `virginica) | |
(5.8; 2.7; 5.1; 1.9; `virginica) | |
(7.1; 3.0; 5.9; 2.1; `virginica) | |
(6.3; 2.9; 5.6; 1.8; `virginica) | |
(6.5; 3.0; 5.8; 2.2; `virginica) | |
(7.6; 3.0; 6.6; 2.1; `virginica) | |
(4.9; 2.5; 4.5; 1.7; `virginica) | |
(7.3; 2.9; 6.3; 1.8; `virginica) | |
(6.7; 2.5; 5.8; 1.8; `virginica) | |
(7.2; 3.6; 6.1; 2.5; `virginica) | |
(6.5; 3.2; 5.1; 2.0; `virginica) | |
(6.4; 2.7; 5.3; 1.9; `virginica) | |
(6.8; 3.0; 5.5; 2.1; `virginica) | |
(5.7; 2.5; 5.0; 2.0; `virginica) | |
(5.8; 2.8; 5.1; 2.4; `virginica) | |
(6.4; 3.2; 5.3; 2.3; `virginica) | |
(6.5; 3.0; 5.5; 1.8; `virginica) | |
(7.7; 3.8; 6.7; 2.2; `virginica) | |
(7.7; 2.6; 6.9; 2.3; `virginica) | |
(6.0; 2.2; 5.0; 1.5; `virginica) | |
(6.9; 3.2; 5.7; 2.3; `virginica) | |
(5.6; 2.8; 4.9; 2.0; `virginica) | |
(7.7; 2.8; 6.7; 2.0; `virginica) | |
(6.3; 2.7; 4.9; 1.8; `virginica) | |
(6.7; 3.3; 5.7; 2.1; `virginica) | |
(7.2; 3.2; 6.0; 1.8; `virginica) | |
(6.2; 2.8; 4.8; 1.8; `virginica) | |
(6.1; 3.0; 4.9; 1.8; `virginica) | |
(6.4; 2.8; 5.6; 2.1; `virginica) | |
(7.2; 3.0; 5.8; 1.6; `virginica) | |
(7.4; 2.8; 6.1; 1.9; `virginica) | |
(7.9; 3.8; 6.4; 2.0; `virginica) | |
(6.4; 2.8; 5.6; 2.2; `virginica) | |
(6.3; 2.8; 5.1; 1.5; `virginica) | |
(6.1; 2.6; 5.6; 1.4; `virginica) | |
(7.7; 3.0; 6.1; 2.3; `virginica) | |
(6.3; 3.4; 5.6; 2.4; `virginica) | |
(6.4; 3.1; 5.5; 1.8; `virginica) | |
(6.0; 3.0; 4.8; 1.8; `virginica) | |
(6.9; 3.1; 5.4; 2.1; `virginica) | |
(6.7; 3.1; 5.6; 2.4; `virginica) | |
(6.9; 3.1; 5.1; 2.3; `virginica) | |
(5.8; 2.7; 5.1; 1.9; `virginica) | |
(6.8; 3.2; 5.9; 2.3; `virginica) | |
(6.7; 3.3; 5.7; 2.5; `virginica) | |
(6.7; 3.0; 5.2; 2.3; `virginica) | |
(6.3; 2.5; 5.0; 1.9; `virginica) | |
(6.5; 3.0; 5.2; 2.0; `virginica) | |
(6.2; 3.4; 5.4; 2.3; `virginica) | |
(5.9; 3.0; 5.1; 1.8; `virginica)) | |
/ preamble: | |
iris: cols!+iris | |
scale:{a:&/x;b:|/x;w*(x-a)%b-a} | |
scatter:{{(_x;pico 8 11 9;2 2#y)}'[x;y]} / (data;class) | |
/ stage 1: raw data | |
data:+scale'iris`sepalWidth`petalLength | |
input: scatter[data;(?iris`species)?iris`species] | |
input | |
/ stage 2: pick centroids | |
k:3 | |
c:(-k)?data | |
input,,(_c;;4 4#1) | |
/ stage 3: show classified by centroid | |
membership:{(*<:)'x{%+/t*t:x-y}/:\:y} | |
draw: {scatter[data;membership[data;c]],,(_c;;4 4#1)} | |
/ stage 4: refine centroids | |
clusteraverage: {{(+/x)%#x}'x@.=y} | |
/ c:clusteraverage[data]@membership[data;c] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment