GSoC 2014: Standard Extreme Learning Machines

Finished implementing the standard extreme learning machines (ELMs). I am getting the following results with 550 hidden neurons against the digits datasets,

Training accuracy using the logistic activation function: 0.999444
Training accuracy using the tanh activation function: 1.000000

Fortunately, this algorithm is much easier to implement and debug than multi-layer perceptron :).
I will push a test file soon.

@ogrisel , @larsmans
`np.identity` seems to be the least efficient way:

```
In [52]: X = np.random.randn(1000, 1000)

In [53]: %timeit X + identity(1000) * 4.2
100 loops, best of 3: 7.27 ms per loop

In [54]: %timeit X + np.identity(1000) * 4.2
100 loops, best of 3: 9.22 ms per loop

In [55]: %timeit X + np.diag([4.2] * 1000)
100 loops, best of 3: 6.85 ms per loop

In [56]: %timeit X[np.diag_indices(1000)] += 4.2
10000 loops, best of 3: 116 µs per loop

In [57]: %timeit X.copy()[np.diag_indices(1000)] += 4.2
100 loops, best of 3: 3.21 ms per loop
```