내용

글번호 679
작성자 heojk
작성일 2017-06-07 11:49:12
제목 Machine Learning.R
내용 Machine Learning
#Logistic Regression(로지스틱 회귀 모형)
install.packages("nnet")
library(nnet)
data(iris)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25)) 
iris.tr <- iris[samp,]
iris.te <- iris[-samp,]
model <- multinom(Species~., data=iris.tr)
pred<-predict(model, iris.te, type="class")
table(pred, iris.te$Species)



# Linear Discriminant Model(선형판별 모형)
install.packages("MASS")
library(MASS)
data(iris)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr <- iris[samp,]
iris.te <- iris[-samp,]
model <- lda(Species~., iris.tr)
model_p <- predict(model,iris.te,type="class")
table(iris.te$Species, model_p$class)




# Neural Network Model
install.packages("nnet")
library(nnet)
normalize <- function(x) {return((x - min(x)) / (max(x) - min(x)))}
data(iris)
irisNorm <- as.data.frame(lapply(iris[,-5], normalize))
irisNorm$Species <- iris$Species
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr <- irisNorm[samp,]
iris.te <- irisNorm[-samp,]
model <- nnet(Species~., data=iris.tr, size = 3)
y <- iris.te$Species
p <- predict(model, iris.te, type = "class")
table(y, p)




# Deep Learning
install.packages("h2o")
library(h2o)
h2o.init()
normalize <- function(x) {return((x - min(x)) / (max(x) - min(x)))}
data(iris)
irisNorm <- as.data.frame(lapply(iris[,-5], normalize))
irisNorm$Species <- iris$Species
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25)) 
iris.tr<-irisNorm[samp,]
iris.te<-irisNorm[-samp,]
tr.hex <- as.h2o(iris.tr)
te.hex <- as.h2o(iris.te)
iris.dl <- h2o.deeplearning(x = 1:4, y = 5, training_frame = tr.hex, hidden = c(5,5), epochs = 5000)
# now make a prediction
predictions <- h2o.predict(iris.dl, te.hex)
pred<-as.data.frame(predictions)
table(iris.te$Species, pred$predict)



# k-Nearest Neighbor
install.packages("class")
library(class)
data(iris)
y <- iris[,5]
tr.idx <- sample(length(y), 75)
x.tr <- iris[tr.idx, -5]
x.te <- iris[-tr.idx, -5]

m <- knn(x.tr, x.te, y[tr.idx], k = 3)
yy <- y[-tr.idx]
table(yy, m)





# Support Vector Machine
install.packages("e1071")
library(e1071)
data(iris)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr<-iris[samp,]
iris.te<-iris[-samp,]
m1 <- svm(Species~., data = iris.tr, kernel="linear")
m2 <- svm(Species~., data = iris.tr, kernel="polynomial")
m3 <- svm(Species~., data = iris.tr, kernel="radial")
x <- subset(iris.te, select=-Species)
y <- iris.te$Species
pred1 <- predict(m1, x)
pred2 <- predict(m2, x)
pred3 <- predict(m3, x)
table(y, pred1)
table(y, pred2)
table(y, pred3)


# Tree Model
install.packages("party")
library(party)
data(iris)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr<-iris[samp,]
iris.te<-iris[-samp,]
iris_ctree <- ctree(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data=iris.tr)
plot(iris_ctree)
x <- subset(iris.te, select=-Species)
y <- iris.te$Species
pred <- predict(iris_ctree, x)
table(pred, y)



# Random Forest Model
install.packages("randomForest")
library(randomForest)
data(iris)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr<-iris[samp,]
iris.te<-iris[-samp,]
rf <- randomForest(Species ~ .,data=iris.tr, ntree=100, proximity=TRUE)
x <- subset(iris.te, select=-Species)
pred<-predict(rf,x)
table(pred,iris.te$Species)


# Naive Bayes Model
install.packages("e1071")
library (e1071)
data(iris)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr<-iris[samp,]
iris.te<-iris[-samp,]
m <- naiveBayes (Species ~ ., data = iris.tr)
pred<-predict(m, iris.te[,-5])
table(iris.te[,5],pred)




# Adaptive Boosting
install.packages("adabag")
library("adabag")
data("iris")
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr <- iris[samp,]
iris.te <- iris[-samp,]

x <- subset(iris.te, select=-Species)
y <- iris.te$Species
iris.adaboost <- boosting(Species ~ ., data = iris.tr, mfinal = 100,control = rpart.control(maxdepth = 1))
pred <- predict(iris.adaboost, x)
table(pred$class, y)



# Gradient Boosting Model
install.packages("xgboost")
library(xgboost)
data(iris)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
iris.tr<-iris[samp,]
iris.te<-iris[-samp,]
x <- subset(iris.tr, select=-Species)
x <- as.matrix(x)
y <- iris.tr$Species
y <- as.integer(y)-1 # y must start 0 to k-1

xTest <- subset(iris.te, select=-Species)
xTest <- as.matrix(xTest)
yTest <- iris.te$Species
yTest <- as.integer(yTest)-1

param <- list("objective" = "multi:softprob", 
              "eval_metric" = "mlogloss", 
              "num_class" = 3)
set.seed(131)
bst <- xgboost(param=param, data=x, label=y, nrounds=27)
pred <- predict(bst,xTest) 
pred_matrix <- matrix(pred, ncol=3, nrow=length(pred)/3, byrow=TRUE)
pred_species <- max.col(pred_matrix)  #신경망 출력으로 나온 클래스 라벨: 1은 Setosa, 2는 Versicolor, 2은 Viriginica, 

table(as.integer(yTest), pred_species)

첨부파일 Machine Learning.R (5,120byte)