# Classifying irises and penguins.

## A classic AI coding exercise.

A namesake of my father, Ronald W Fisher, but not related, and like him a mathematician and a Cambridge graduate, Ronald A Fisher FRS, was a British polymath and biologist who was active as a mathematician, statistician, geneticist, and academic from the Thirties onwards. Often referred to as 'the father of statistics'.

He set out the mathematical analysis of statistics especially when applied to evolution and heredity. However he was a strong believer in eugenic ideas that are now anathema, and may have been a bit choosy in what data items to accept and which to conveniently omit.

With modern interest in AI and machine recognition his work is referred to in many courses on AI. He gathered data on two types of irises, with measuremants of flower length, breadth etc. He then showed how one might in a rigorous way try to analyse a new set of samples so that a machine correctly classified them. All good 'pattern recognition' stuff.

```Sepal length in cm  Sepal width in cm  Petal length in cm  Petal width in cm  Class / Species: Iris Setosa, Iris Versicolor or Iris Virginica
5.1,                3.5,               1.4,                0.2,               Iris-setosa
4.9,                3.0,               1.4,                0.2,               Iris-setosa
4.7,                3.2,               1.3,                0.2,               Iris-setosa
etc . . .
```

A modern take on the problem uses data about a set of 300+ penguins, of three species. A table is available giving numerical and qualitative data about all of them. An AI student may be given as an exercise the task to do the coding of analysing them into groups. It turns out that if you just use two dimensions- ie two columns of data- you will classify a significant number wrongly. Chastening, but good for the student to learn!

```Species 				Culmen Length (mm) 	Culmen Depth (mm) 	Flipper Length (mm) 	Body Mass (g) 	Sex
etc . . .
```

I'd strongly suggest looking up k-means, RA Fisher,etc on Wikipedia. The data files for irises and penguins are on-line- but you may need to edit line endings to CRLF ( I use Linux), and/or change the space/,/tab separators in data files you may find. I'll have my versions on the website.

My code takes the data set and looks at two numerical columns. These can be plotted as a scatter graph. If we ignore the ( known) ACTUAL classification fo each point we have a 'blob' of data points. I show this in all-white on a black background.

My code is told there are two ( or three) species present. It allocates each data point at random to one of these species. It finds the 'centre of gravity/mass' of each class and plots them in three colours. A large amount of overlapping, of course. It then progressively alters the allocation to a class if this moves it into a nearer centre for that colour. You quickly reach a stable solution dividing uni-coloured, single class sub-populations.

However, with hindsight, we actually KNOW the correct sub-grouping, and can instead colour each point for its CORRECT classification. The amount this differs from the machine's attempt indicates how successful we are in our automatic classifying.

. . . . . . . . . Machine's effort . . . . . . . . . . . . . . . . . . . . . . 'Correct' grouping

-

## Does this show machine classification is not possible?

No! We are not limited to choosing only two columns of numerical data- you can do a 'Pythagoras distance' in as many dimensions as you like. And you can allocate arbitrary numbers to qualitative data like a 'colour' column. But it does show that you need to be sure of what you are doing and how good you want the result to be....

## LB code example

```
'' bluatigro 11 aug 2018
'' k means algorithm :

'' put points in random set

'' while point moved makes improvement ( or timeout)
''   compute centroid of sets
''   move each point into closest set

start = time\$( "seconds")

global pointmax, setmax, pi, tone
pointmax    =329
setmax      =  2  '   ie sets #0, #1 ( and #2)
pi          =atn( 1) *4
tone        = 80  '   start of greyscale circles indicating improvinq sorting quality

dim x( pointmax),  y( pointmax),  set( pointmax)
dim setx( setmax +1), sety( setmax +1), avX( setmax +1),  avY( setmax +1), count( setmax +1)

global maxX, maxY, minX, minY
minX =1e6: maxX =-1e6:  minY =1e6: maxY =-1e6

WindowWidth       = 860
WindowHeight      = 860

nomainwin

open "k clustering Penguins." for graphics_nsb as #m

#m "trapclose quit"
#m "fill black"

open "penguinData.csv" for input as #fIn

for i = 0 to 329
line input #fIn, row\$
x( i )      = val( word\$( row\$, 1, ",")) '   length
if x( i) > maxX then maxX =x( i)
if x( i) <=maxX then minX =x( i)

y( i )      = val( word\$( row\$, 2, ",")) '   depth
if y( i) > maxY then maxY =y( i)
if y( i) <=maxY then minY =y( i)

set( i)     =int( ( setmax +1) *rnd( 1))   '   allocate to a group at random
next i

close #fIn

'print "x", minX, maxX
'print "y", minY, maxY

call showdata
#m "getbmp scr 1 1 860 860"
bmpsave "scr", "kMeansPenguins1a.bmp"

#m "setfocus"

callDLL #kernel32, "Sleep", 5000 as long, ret as void

true              =1
notKnown          =0

pointHasMoved     = true

while ( pointHasMoved = true) and ( ( time\$( "seconds") -start) <500)           '' end if no move, or timeout
pointHasMoved   = notKnown

for k =0 to setmax
n( k) =0
next k

for i = 0 to setmax                                                    '' hold number in each set
n( i) =0
next i

for i = 0 to pointmax
if set( i) = 0 then n( 0) =n( 0) +1
if set( i) = 1 then n( 1) =n( 1) +1
if set( i) = 2 then n( 2) =n( 2) +1
next i

X0 =0: Y0 =0: X1 =0: Y1 =0: X2 =0: Y2 =0

for i = 0 to pointmax                                                         '' calc centroids (  setx( j), sety( j)) of each set
if set( i) =0 then X0 =X0 +x( i): Y0 =Y0 +y( i)               '' ie find mean x and mean y of group
if set( i) =1 then X1 =X1 +x( i): Y1 =Y1 +y( i)
if set( i) =2 then X2 =X2 +x( i): Y2 =Y2 +y( i)
next i

if n( 0) <>0 then setx( 0) = X0 /n( 0): sety( 0) = Y0 /n( 0)
if n( 1) <>0 then setx( 1) = X1 /n( 1): sety( 1) = Y1 /n( 1)
if n( 2) <>0 then setx( 2) = X2 /n( 2): sety( 2) = Y2 /n( 2)

for i =0 to setmax
'#m "goto " ; int( 50 +( setx( i)) *12) ; " " ; int( 640 -( sety( i )) *14)
'#m "color "; tone; " "; tone; " "; tone
'#m "down ; circle "; radius; " ; up"
next i

tone   =tone   + 8: if tone   >255 then tone   =255

for i = 0 to pointmax                                                         '' see which set's centroid is closest to point
smallestSepnSoFar   = 10000                                                 'q'    and move if necessary
closestSetSoFar     =    -1                                                 'q2'

for s = 0 to setmax
separation  = dist( x( i) , y( i) , setx( s) , sety( s) )                 'q3'
if separation < smallestSepnSoFar then
smallestSepnSoFar = separation
closestSetSoFar   = s
end if
next s

scan

if closestSetSoFar <> set( i) then
pointHasMoved =true
set( i)       =closestSetSoFar   '' move point to closest set
end if
next i

call showdata

#m "getbmp scr 1 1 860 860"
bmpsave "scr", "kMeans" +str\$( 255 -radius) +".bmp"

scan

wend

notice "Done!"

close #m

wait

function dist( x1, y1,   x2, y2)                                            '' function for diagonal separation distance
dist = sqr( ( x1 -x2)^2 +( y1 -y2 )^2)
end function

sub showdata
#m "cls ; fill black"

for i = 0 to pointmax

#m "goto "; int( 50 +( x( i)) *12) ;     " " ; int( 640 -( y( i )) *14)

if tone >80 then
select case set( i )
case 0
#m "backcolor   red ; color red"
case 1
#m "backcolor green ; color green"
case else
#m "backcolor  blue ; color blue"
end select
else
select case
case i <153
#m "backcolor    cyan ; color    cyan"
case i <276
#m "backcolor    pink ; color    pink"
case i <343
#m "backcolor  yellow ; color  yellow"
end select

end if

#m "down"
#m "circlefilled 2"
#m "up"

next i
callDLL #kernel32, "Sleep", 5000 as long, ret as void
end sub

sub quit k\$
close #m
end
end sub

```

```Length ,Depth,Flipper,Mass,
39.50,17.40,186.00,8.95,-24.69
40.30,18.00,195.00,8.37,-25.33
36.70,19.30,193.00,8.77,-25.32
39.30,20.60,190.00,8.66,-25.30
38.90,17.80,181.00,9.19,-25.22
39.20,19.60,195.00,9.46,-24.90
42.00,20.20,190.00,9.13,-25.09
37.80,17.10,186.00,8.63,-25.21
34.60,21.10,198.00,8.56,-25.23
38.70,19.00,195.00,9.19,-25.07
42.50,20.70,197.00,8.68,-25.14
34.40,18.40,184.00,8.48,-25.23
46.00,21.50,194.00,9.12,-24.77
37.80,18.30,174.00,8.74,-25.09
37.70,18.70,180.00,8.66,-25.06
35.90,19.20,189.00,9.22,-25.03
38.20,18.10,185.00,8.43,-25.23
38.80,17.20,180.00,9.64,-25.30
35.30,18.90,187.00,9.21,-24.36
40.60,18.60,183.00,8.94,-25.36
40.50,17.90,187.00,8.08,-25.49
37.90,18.60,172.00,8.38,-25.20
40.50,18.90,180.00,8.90,-25.12
39.50,16.70,178.00,9.70,-25.11
37.20,18.10,178.00,9.73,-25.01
39.50,17.80,188.00,9.67,-25.06
40.90,18.90,184.00,8.80,-25.15
36.40,17.00,195.00,9.18,-25.23
39.20,21.10,196.00,9.15,-25.03
38.80,20.00,190.00,9.19,-25.12
42.20,18.50,180.00,8.05,-25.50
37.60,19.30,181.00,9.41,-25.04
36.50,18.00,182.00,9.69,-24.42
36.00,18.50,186.00,9.51,-25.03
44.10,19.70,196.00,9.24,-24.53
37.00,16.90,185.00,9.36,-25.02
39.60,18.80,190.00,9.49,-24.10
36.00,17.90,190.00,9.52,-25.08
42.30,21.20,191.00,8.88,-25.19
39.60,17.70,186.00,8.47,-26.13
40.10,18.90,188.00,8.51,-26.56
35.00,17.90,190.00,8.20,-26.17
42.00,19.50,200.00,8.48,-26.31
34.50,18.10,187.00,8.42,-26.55
41.40,18.60,191.00,8.35,-26.28
39.00,17.50,186.00,8.57,-26.07
40.60,18.80,193.00,8.57,-25.99
36.50,16.60,181.00,9.08,-25.88
37.60,19.10,194.00,9.11,-25.90
35.70,16.90,185.00,8.96,-26.41
41.30,21.10,195.00,8.75,-26.38
37.60,17.00,185.00,8.58,-26.22
41.10,18.20,192.00,8.62,-26.60
36.40,17.10,184.00,8.63,-26.12
41.60,18.00,192.00,8.86,-26.09
35.50,16.20,195.00,8.56,-25.96
41.10,19.10,188.00,8.71,-25.81
35.90,16.60,190.00,8.48,-26.08
41.80,19.40,198.00,8.87,-26.06
33.50,19.00,190.00,7.89,-26.63
39.70,18.40,190.00,9.30,-25.23
39.60,17.20,196.00,8.34,-26.55
45.80,18.90,197.00,8.19,-26.46
35.50,17.50,190.00,8.71,-26.15
42.80,18.50,195.00,8.30,-26.39
40.90,16.80,191.00,8.47,-26.02
37.20,19.40,184.00,8.36,-26.45
36.20,16.10,187.00,7.82,-26.51
42.10,19.10,195.00,9.06,-25.82
34.60,17.20,189.00,7.70,-26.54
42.90,17.60,196.00,8.63,-26.23
36.70,18.80,187.00,7.88,-26.25
35.10,19.40,193.00,8.90,-26.46
37.30,17.80,191.00,8.33,-26.38
41.30,20.30,194.00,9.15,-26.10
36.30,19.50,190.00,8.57,-26.22
36.90,18.60,189.00,8.59,-26.08
38.30,19.20,189.00,9.08,-26.12
38.90,18.80,190.00,8.37,-26.11
35.70,18.00,202.00,8.47,-26.06
41.10,18.10,205.00,8.77,-25.83
34.00,17.10,185.00,8.01,-26.70
39.60,18.10,186.00,8.50,-26.42
36.20,17.30,187.00,8.91,-26.30
40.80,18.90,208.00,8.48,-26.58
38.10,18.60,190.00,8.10,-26.50
40.30,18.50,196.00,8.39,-26.01
33.10,16.10,178.00,9.04,-26.16
43.20,18.50,192.00,8.97,-26.04
35.00,17.90,192.00,8.84,-26.28
41.00,20.00,203.00,9.01,-26.38
37.70,16.00,183.00,9.22,-26.23
37.80,20.00,190.00,9.52,-25.69
37.90,18.60,193.00,9.03,-25.86
39.70,18.90,184.00,8.86,-25.80
38.60,17.20,199.00,8.77,-26.49
38.20,20.00,190.00,9.59,-25.71
38.10,17.00,181.00,9.80,-25.27
43.20,19.00,197.00,9.32,-25.45
38.10,16.50,198.00,8.44,-26.58
45.60,20.30,191.00,8.65,-26.33
39.70,17.70,193.00,9.03,-26.06
42.20,19.50,197.00,8.80,-26.41
39.60,20.70,191.00,8.81,-26.79
42.70,18.30,196.00,8.91,-26.42
38.60,17.00,188.00,9.18,-25.77
37.30,20.50,199.00,9.50,-26.37
35.70,17.00,189.00,8.96,-23.90
41.10,18.60,189.00,9.32,-26.10
36.20,17.20,187.00,9.04,-26.19
37.70,19.80,198.00,9.11,-26.43
40.20,17.00,176.00,9.31,-25.61
41.40,18.50,202.00,9.59,-25.43
35.20,15.90,186.00,8.82,-25.95
40.60,19.00,199.00,9.23,-25.61
38.80,17.60,191.00,8.88,-25.90
41.50,18.30,195.00,8.53,-26.02
39.00,17.10,191.00,9.19,-25.74
44.10,18.00,210.00,9.11,-26.01
38.50,17.90,190.00,8.98,-25.58
43.10,19.20,197.00,8.86,-26.14
36.80,18.50,193.00,8.99,-25.58
37.50,18.50,199.00,8.57,-26.49
38.10,17.60,187.00,8.72,-25.78
41.10,17.50,190.00,8.94,-26.07
35.60,17.50,191.00,8.76,-25.98
40.20,20.10,200.00,8.96,-26.33
37.00,16.50,185.00,8.62,-26.07
39.70,17.90,193.00,9.26,-25.89
40.20,17.10,193.00,9.29,-25.55
40.60,17.20,187.00,9.23,-26.02
32.10,15.50,188.00,8.80,-26.61
40.70,17.00,190.00,9.06,-25.80
37.30,16.80,192.00,9.07,-25.85
39.00,18.70,185.00,9.22,-26.03
39.20,18.60,190.00,9.11,-25.80
36.60,18.40,184.00,8.69,-25.83
36.00,17.80,195.00,8.94,-25.79
37.80,18.10,193.00,8.98,-26.03
36.00,17.10,187.00,8.93,-26.07
41.50,18.50,201.00,8.90,-26.07
46.10,13.20,211.00,7.99,-25.51
50.00,16.30,230.00,8.15,-25.39
48.70,14.10,210.00,8.15,-25.46
50.00,15.20,218.00,8.26,-25.40
47.60,14.50,215.00,8.23,-25.54
46.50,13.50,210.00,8.00,-25.33
45.40,14.60,211.00,8.25,-25.47
46.70,15.30,219.00,8.23,-25.43
43.30,13.40,209.00,8.14,-25.32
46.80,15.40,215.00,8.16,-25.38
40.90,13.70,214.00,8.20,-25.39
49.00,16.10,216.00,8.10,-25.51
45.50,13.70,214.00,7.78,-25.42
48.40,14.60,213.00,7.82,-25.48
45.80,14.60,210.00,7.80,-25.63
49.30,15.70,217.00,8.07,-25.52
42.00,13.50,210.00,7.64,-25.53
49.20,15.20,221.00,8.27,-25.00
46.20,14.50,209.00,7.84,-25.38
48.70,15.10,222.00,7.96,-25.40
50.20,14.30,218.00,7.90,-25.38
45.10,14.50,215.00,7.63,-25.47
46.50,14.50,213.00,7.90,-25.39
46.30,15.80,215.00,7.91,-25.38
42.90,13.10,215.00,7.69,-25.39
46.10,15.10,215.00,7.84,-25.43
44.50,14.30,216.00,7.97,-25.69
47.80,15.00,215.00,7.92,-25.48
48.20,14.30,210.00,7.69,-25.51
50.00,15.30,220.00,8.31,-25.19
42.80,14.20,209.00,7.63,-25.46
45.10,14.50,207.00,7.97,-25.54
59.60,17.00,230.00,7.77,-25.68
49.10,14.80,220.00,7.90,-26.63
48.40,16.30,220.00,8.04,-26.86
42.60,13.70,213.00,7.97,-26.71
44.40,17.30,219.00,8.14,-26.79
44.00,13.60,208.00,8.02,-26.68
48.70,15.70,208.00,8.15,-26.85
42.70,13.70,208.00,8.15,-26.59
49.60,16.00,225.00,8.38,-26.84
45.30,13.70,210.00,8.38,-26.73
49.60,15.00,216.00,8.27,-26.77
50.50,15.90,222.00,8.47,-26.60
43.60,13.90,217.00,8.27,-26.78
45.50,13.90,210.00,8.48,-26.62
50.50,15.90,225.00,8.66,-26.58
44.90,13.30,213.00,8.45,-26.90
45.20,15.80,215.00,8.56,-26.68
46.60,14.20,210.00,8.38,-26.86
48.50,14.10,220.00,8.40,-26.79
45.10,14.40,210.00,8.52,-27.02
50.10,15.00,225.00,8.50,-26.61
46.50,14.40,217.00,8.49,-26.83
45.00,15.40,220.00,8.63,-26.76
43.80,13.90,208.00,8.58,-26.84
45.50,15.00,220.00,8.64,-26.75
43.20,14.50,208.00,8.48,-26.86
50.40,15.30,224.00,8.75,-26.80
45.30,13.80,208.00,8.65,-26.79
46.20,14.90,221.00,8.60,-26.84
45.70,13.90,214.00,8.63,-26.60
54.30,15.70,231.00,8.50,-26.84
45.80,14.20,219.00,8.60,-26.62
49.80,16.80,230.00,8.47,-26.69
46.20,14.40,214.00,8.24,-26.82
49.50,16.20,229.00,8.50,-26.75
43.50,14.20,220.00,8.65,-26.69
50.70,15.00,223.00,8.64,-26.74
47.70,15.00,216.00,8.53,-26.73
46.40,15.60,221.00,8.35,-26.71
48.20,15.60,221.00,8.25,-26.67
46.50,14.80,217.00,8.58,-26.59
46.40,15.00,216.00,8.48,-26.95
48.60,16.00,230.00,8.60,-26.71
47.50,14.20,209.00,8.39,-26.79
51.10,16.30,220.00,8.40,-26.77
45.20,13.80,215.00,8.25,-26.65
45.20,16.40,223.00,8.20,-26.66
49.10,14.50,212.00,8.36,-26.28
52.50,15.60,221.00,8.29,-26.28
47.40,14.60,212.00,8.19,-26.24
50.00,15.90,224.00,8.20,-26.40
44.90,13.80,212.00,8.11,-26.20
50.80,17.30,228.00,8.27,-26.30
43.40,14.40,218.00,8.23,-26.19
51.30,14.20,218.00,8.15,-26.34
47.50,14.00,212.00,8.13,-26.24
52.10,17.00,230.00,8.28,-26.12
47.50,15.00,218.00,8.30,-26.09
52.20,17.10,228.00,8.37,-25.90
45.50,14.50,212.00,8.16,-26.23
49.50,16.10,224.00,8.83,-25.69
44.50,14.70,214.00,8.20,-26.17
50.80,15.70,226.00,8.27,-26.11
49.40,15.80,216.00,8.04,-26.07
46.90,14.60,222.00,7.89,-26.05
48.40,14.40,203.00,8.17,-26.14
51.10,16.50,225.00,8.21,-26.37
48.50,15.00,219.00,8.10,-26.19
55.90,17.00,228.00,8.31,-26.35
47.20,15.50,215.00,8.31,-26.22
49.10,15.00,228.00,8.66,-25.79
47.30,13.80,216.00,8.26,-26.24
46.80,16.10,215.00,8.32,-26.06
41.70,14.70,210.00,8.12,-26.45
53.40,15.80,219.00,8.41,-26.34
43.30,14.00,208.00,8.42,-26.38
48.10,15.10,209.00,8.46,-26.23
50.50,15.20,216.00,8.25,-26.18
49.80,15.90,229.00,8.29,-26.21
43.50,15.20,213.00,8.22,-26.11
51.50,16.30,230.00,8.79,-25.76
46.20,14.10,217.00,8.30,-25.96
55.10,16.00,230.00,8.08,-26.18
44.50,15.70,217.00,8.04,-26.18
48.80,16.20,222.00,8.34,-25.89
47.20,13.70,214.00,7.99,-26.21
46.80,14.30,215.00,8.41,-26.14
50.40,15.70,222.00,8.30,-26.04
45.20,14.80,212.00,8.24,-26.12
49.90,16.10,213.00,8.36,-26.16
46.50,17.90,192.00,9.04,-24.30
50.00,19.50,196.00,8.92,-24.24
51.30,19.20,193.00,9.29,-24.76
45.40,18.70,188.00,8.65,-24.63
52.70,19.80,197.00,9.01,-24.62
45.20,17.80,198.00,8.89,-24.49
46.10,18.20,178.00,8.86,-24.56
51.30,18.20,197.00,8.64,-24.84
46.00,18.90,195.00,8.47,-24.29
51.30,19.90,198.00,8.80,-24.36
46.60,17.80,193.00,8.95,-24.60
51.70,20.30,194.00,8.69,-24.39
47.00,17.30,185.00,8.72,-24.81
52.00,18.10,201.00,9.02,-24.39
45.90,17.10,190.00,9.12,-24.90
50.50,19.60,201.00,9.81,-24.73
50.30,20.00,197.00,10.02,-24.55
58.00,17.80,181.00,9.14,-24.58
46.40,18.60,190.00,9.32,-24.64
49.20,18.20,195.00,9.27,-24.64
42.40,17.30,181.00,9.35,-24.69
48.50,17.50,191.00,9.43,-24.26
43.20,16.60,187.00,9.35,-25.01
50.60,19.40,193.00,9.28,-24.97
46.70,17.90,195.00,9.74,-24.59
52.00,19.00,197.00,9.37,-24.47
50.50,18.40,200.00,8.94,-23.89
49.50,19.00,200.00,9.63,-24.35
46.40,17.80,191.00,9.37,-24.53
52.80,20.00,205.00,9.25,-24.70
40.90,16.60,187.00,9.08,-24.55
54.20,20.80,201.00,9.49,-24.60
42.50,16.70,187.00,9.37,-24.45
51.00,18.80,203.00,9.23,-24.17
49.70,18.60,195.00,9.75,-24.31
47.50,16.80,199.00,9.08,-25.15
47.60,18.30,195.00,8.84,-24.66
52.00,20.70,210.00,9.43,-24.68
46.90,16.60,192.00,9.81,-24.74
53.50,19.90,205.00,10.03,-24.91
49.00,19.50,210.00,9.53,-24.67
46.20,17.50,187.00,9.62,-24.66
50.90,19.10,196.00,10.02,-24.87
45.50,17.00,196.00,9.36,-24.66
50.90,17.90,196.00,9.44,-24.17
50.80,18.50,201.00,9.46,-24.36
50.10,17.90,190.00,9.47,-24.46
49.00,19.60,212.00,9.34,-24.45
51.50,18.70,187.00,9.69,-24.43
49.80,17.30,198.00,9.32,-24.42
48.10,16.40,199.00,9.47,-24.48
51.40,19.00,201.00,9.44,-24.36
45.70,17.30,193.00,9.42,-24.81
50.70,19.70,203.00,9.94,-24.59
42.50,17.30,187.00,9.57,-24.61
52.20,18.80,197.00,9.78,-24.56
45.20,16.60,191.00,9.62,-24.79
49.30,19.90,203.00,9.89,-24.60
50.20,18.80,202.00,9.74,-24.40
45.60,19.40,194.00,9.47,-24.66
46.80,16.50,189.00,9.65,-24.48
45.70,17.00,195.00,9.27,-24.32
55.80,19.80,207.00,9.70,-24.53
43.50,18.10,202.00,9.38,-24.41
49.60,18.20,193.00,9.46,-24.71
50.80,19.00,210.00,9.98,-24.69
50.20,18.70,198.00,9.39,-24.25

```