spiralData: Create Spiral Data

Description Usage Arguments Details Value Examples

View source: R/spiralData.R

Description

Create a binary classification problem with spiral-shaped decision boundary.

Usage

1
2
3
4
5
6
7
  spiralData(n = 100, cycles = 1)

  spiralLabels(data, cycles = 1)

  spiralPosterior(data, cycles = 1)

  spiralBayesClass(data, cycles = 1)

Arguments

n

Number of observations.

cycles

Number of cycles the spiral makes.

data

A data.frame.

Details

These functions are based on the function mlbench.1spiral from package mlbench.

Value

spiralData returns an object of class "locClass", a list with components:

x

(A matrix.) The explanatory variables.

y

(A factor.) The class labels.

spiralLabels returns a factor of class labels.

spiralPosterior returns a matrix of posterior probabilities.

spiralBayesClass returns a factor of Bayes predictions.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Generate a training and a test set
train <- spiralData(1000)
test <- spiralData(1000)

# Generate a grid of points
x.1 <- x.2 <- seq(-2,2,0.05)
grid <- expand.grid(x.1 = x.1, x.2 = x.2)

# Calculate the posterior probablities for all grid points
gridPosterior <- spiralPosterior(grid)

# Draw contour lines of posterior probabilities and plot training observations
contour(x.1, x.2, matrix(gridPosterior[,1], length(x.1)), col = "gray")
points(train$x, col = train$y)

# Calculate Bayes error
ybayes <- spiralBayesClass(test$x)
mean(ybayes != test$y)

if (require(MASS)) {

    # Fit an LDA model and calculate misclassification rate on the test data set
    tr <- lda(y ~ ., data = as.data.frame(train))
    pred <- predict(tr, as.data.frame(test))
    mean(pred$class != test$y)

    # Draw decision boundary
    gridPred <- predict(tr, grid)
    contour(x.1, x.2, matrix(gridPred$posterior[,1], length(x.1)), col = "red", levels = 0.5, add = TRUE)

}

locClassData documentation built on May 2, 2019, 5:26 p.m.