|
| 1 | +""" |
| 2 | + generate_twospirals(; n_samples::Int = 2000, |
| 3 | + start_degrees::Int = 90, |
| 4 | + total_degrees::Int = 570, |
| 5 | + noise::Float64 = 0.2 |
| 6 | +Generate two spirals dataset. Return a Nx3 matrix, where each line contains the X,Y coordinates and the class of an instance. |
| 7 | +# Arguments |
| 8 | +- `n_samples::Int = 2000`: The total number of points generated. |
| 9 | +- `start_degrees::Int = 90`: Determines how far from the origin the spirals start. |
| 10 | +- `total_degrees::Int = 570`: Controls the lenght of the spirals. |
| 11 | +- `noise::Float64 = 0.2`: Determines the noise in the dataset. |
| 12 | +Reference: [link](https://la.mathworks.com/matlabcentral/fileexchange/41459-6-functions-for-generating-artificial-datasets) |
| 13 | +""" |
| 14 | +function generate_twospirals(; n_samples::Int = 2000, |
| 15 | + start_degrees::Int = 90, |
| 16 | + total_degrees::Int = 570, |
| 17 | + noise::Float64 = 0.2) |
| 18 | + start_degrees = deg2rad(start_degrees); |
| 19 | + |
| 20 | + N1 = floor(Int, n_samples / 2); |
| 21 | + N2 = n_samples - N1; |
| 22 | + |
| 23 | + n = start_degrees .+ sqrt.(rand(N1,1)) .* deg2rad(total_degrees); |
| 24 | + d1 = [-cos.(n).*n + rand(N1,1).*noise sin.(n).*n+rand(N1,1).*noise zeros(N1,1)]; |
| 25 | + |
| 26 | + n = start_degrees .+ sqrt.(rand(N2,1)) .* deg2rad(total_degrees); |
| 27 | + d2 = [cos.(n).*n+rand(N2,1)*noise -sin.(n).*n+rand(N2,1)*noise ones(N2,1)]; |
| 28 | + |
| 29 | + return [d1; d2]; |
| 30 | +end |
0 commit comments