I don't know about others but when I started digging into machine-learning I had some problems understanding bias-variance until I found a nice target shooting analogy.

### Target

Out little target chart :) with some params.

```
import numpy as np
color = hue(1)
size = 50
p = plot([], figsize=7)
p += plot(circle((0,0), 1))
p += plot(circle((0,0), 3))
p += plot(circle((0,0), 6))
p
```

### High bias and high variance

Worst-case scenario where hits are all over the places (high variance) and far away from the center of target, top-right skewed (high bias).

```
variance = 5
bias = 3
samples = variance * np.random.random_sample((15, 2)) + bias
hbhv = p + plot(point(samples, rgbcolor=color, size=size))
hbhv
```

### High bias and low variance

This time the shots are focused (low variance) within a small area that is still far away (high bias) from the target.

```
variance = 2
bias = 3
samples = variance * np.random.random_sample((15, 2)) + bias
hblv = p + plot(point(samples, rgbcolor=color, size=size))
hblv
```

### Low bias and high variance

This time all hots are closer to center (low bias) but still spread all over the places (high variance).

```
variance = 4
bias = 0.5
samples = variance * np.random.random_sample((15, 2)) + bias
lbhv = p + plot(point(samples, rgbcolor=color, size=size))
lbhv
```

### Low bias and low variance

The best case scenario, focused (low variance) and very close to center (low bias).

```
variance = 1.5
bias = 0.5
samples = variance * np.random.random_sample((15, 2)) + bias
lblv = p + plot(point(samples, rgbcolor=color, size=size))
lblv
```

Happy shooting!!!