Description Details Author(s) References Examples
Some R or Rcpp functions for RKSIR
With this R package, we can perform Regularized Kernel Sliced Inverse Regression.
Yue Zhao
Maintainer: Yue Zhao <zhy99@mail.ustc.edu.cn>
Wu, Qiang and Liang, Feng and Mukherjee, Sayan (2013) Kernel Sliced Inverse Regression: Regularization and Consistency Abstract and Applied Analysis
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | ## Not run:
data(wine)
y <- wine[, 1]
X <- scale(wine[, -1], center = TRUE, scale = TRUE)
n <- nrow(X)
## split data into training set and testing set
ns <- c(17, 20, 13)
train <- SC19017::split(y, ns)
test <- (1:n)[-train]
Xtrain <- X[train, ]
Xtest <- X[test, ]
ytrain <- y[train]
ytest <- y[test]
# bandwidth select
distance <- matrix(NA, nrow = n, ncol = n-1)
for(i in 1:n) {
distance[i, ] <- c(apply(X[-i, ], 1, function(o) {
sqrt(sum((o - X[i, ])^2))
}))
}
sigma <- median(distance)
# estimate e.d.r. directions
Kx <- KX(Xtrain, "AG", sigma, center = TRUE)
J <- Jy(ytrain, numeric = FALSE)
ei2 <- Ei(Kx, J, s = 0.01)
vtrain <- Vtr(Xtrain, Xtrain, 2, ei2, "AG", sigma)
vtest <- Vte(Xtest, Xtrain, Xtrain, 2, ei2, "AG", sigma)
# knn
library(class)
knn.pred <- knn(vtrain, vtest, ytrain, k = 5)
knn.result <- rep(NA, 3)
for(i in 1:3) {
knn.result[i] <- sum(table(knn.pred, ytest)[-i, i])/sum(table(knn.pred, ytest)[, i])
}
mean(knn.result)
table(knn.pred, ytest)
#svm
library(e1071)
svm.model <- svm(vtrain, factor(ytrain))
svm.pred <- predict(svm.model, vtest)
svm.result <- rep(NA, 3)
for(i in 1:3) {
svm.result[i] <- sum(table(svm.pred, ytest)[-i, i])/sum(table(svm.pred, ytest)[, i])
}
mean(svm.result)
table(svm.pred, ytest)
# plot figure
library(ggplot2)
Test <- data.frame(v1 = vtest[, 1], v2 = vtest[, 2], classes = as.factor(ytest))
ggplot(Test, aes(x = v1, y = v2, col = classes)) +
geom_point() +
xlab("first e.d.r. direction") +
ylab("second e.d.r. direction")
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.