안녕하세요
모두를 위한 R 데이터 분석 입문 연습문제 12장 본문
01 R에서 제공하는 state.x77 데이터셋에 대해 K-평균 군집화를 실시하고 결과를 그래프로 출력하시오.
• 군집의 수는 5로 한다.
• state.x77은 각 변수(열) 값들에 대해 단위의 차이가 많이 나기 때문에 0~1 표준화를 실시한 후 군집화를 실행한다.
std <- function(x){
return( (x-min(x)) / (max(x) - min(x)))
}
myds <- apply(data.frame(state.x77), 2, std)
fit <- kmeans(x = myds, centers = 5)
library(cluster)
clusplot(myds, fit$cluster, color = TRUE, shade = TRUE, labels = 2, lines = 0)
02 mlbench 패키지에서 제공하는 Sonar 데이터셋에 대해 K-평균 군집화를 실시하고 결과를 그래프로 출력하시오.
library(mlbench)
data("Sonar") #데이터셋 불러오기
• 군집의 수는 2로 한다.
• Sonar 데이터셋에서 마지막에 있는 Class 열은 제외하고 군집화를 실행한다.
library(mlbench)
data("Sonar")
myds <- Sonar[, -ncol(Sonar)]
fit <- kmeans(x = myds, centers = 2)
clusplot(myds, fit$cluster, color = TRUE, shade = TRUE, labels = 2, lines = 0)
03 R에서 제공하는 swiss 데이터셋에 대해 K-평균 군집화를 실시하고 결과를 그래프로 출력하시오.
• 군집의 수는 3으로 한다.
myds <- swiss
fit <- kmeans(x = myds, centers = 3)
clusplot(myds, fit$cluster, color = TRUE, shade = TRUE, labels = 2, lines = 0)
04 R에서 제공하는 rock 데이터셋에 대해 K-평균 군집화를 실시하고 결과를 그래프로 출력하시오.
• 군집의 수는 3으로 한다.
myds <- rock
fit <- kmeans(x = myds, centers = 3)
clusplot(myds, fit$cluster, color = TRUE, shade = TRUE, labels = 2, lines = 0)
05 mlbench 패키지에서 제공하는 Sonar 데이터셋에 대해 K-최근접 이웃 알고리즘을 이용하여 모델을 만들고 예측 정확도를 측정하시오.
• Sonar 데이터셋에서 마지막에 있는 Class 열이 그룹 정보이다.
• Sonar 데이터셋에서 홀수 번째 데이터(관측값)를 훈련용 데이터로 하고, 짝수 번째 데이터(관측값)를 테스트용 데이터로 한다.
• K-최근 이웃에서 k를 3.5.7로 다르게 하여 예측 정확도를 비교한다.
train <- Sonar[seq(1, nrow(Sonar), 2), -ncol(Sonar)]
test <- Sonar[seq(2, nrow(Sonar), 2), -ncol(Sonar)]
library(class)
cl.train <- Sonar[seq(1, nrow(Sonar), 2), ncol(Sonar)]
cl.test <- Sonar[seq(2, nrow(Sonar), 2), ncol(Sonar)]
pred <- knn(train, test, cl.train, k = 3, prob = TRUE)
acc.3 <- mean(pred == cl.test)
pred <- knn(train, test, cl.train, k = 5, prob = TRUE)
acc.5 <- mean(pred == cl.test)
pred <- knn(train, test, cl.train, k = 7, prob = TRUE)
acc.7 <- mean(pred == cl.test)
cat("k == 3 :",acc.3,"\nk == 5 :", acc.5, "\nk == 7 :", acc.7, "\n")
06 mlbench 패키지에서 제공하는 Sonar 데이터셋에 대해 K-최근접 이웃 알고리즘을 이용하여 모델 을 만들고 예측 정확도를 측정하시오.
• Sonar 데이터셋에서 마지막에 있는 Class 열이 그룹 정보이다.
• k-최근접 이웃에서 K는 3으로 한다.
• 5-fold 교차 검증 방법으로 예측 정확도를 측정한다.
library(cvTools)
k = 5
folds <- cvFolds(nrow(Sonar), K = k)
acc <- c()
for(i in 1:k){
ts.idx <- folds$which == i
ds.tr <- Sonar[-ts.idx, -ncol(Sonar)]
ds.ts <- Sonar[ts.idx, -ncol(Sonar)]
cl.tr <- factor(Sonar[-ts.idx, ncol(Sonar)])
cl.ts <- factor(Sonar[ts.idx, ncol(Sonar)])
pred <- knn(train = ds.tr, test = ds.ts, cl = cl.tr, k = 3)
acc[i] <- mean(cl.ts == pred)
}
mean(acc)
07 mlbench 패키지에서 제공하는 Breast Cancer 데이터셋에 대해 K-최근접 이웃 알고리즘을 이용 하여 모델을 만들고 예측 정확도를 측정하시오.
library(mlbench)
data("Breast Cancer") #데이터셋 불러오기
• Breast Cancer 데이터셋에서 마지막에 있는 Class 열이 그룹 정보이다.
• k-최근접 이웃에서 K는 5로 한다.
• 10-fold 교차 검증 방법으로 예측 정확도를 측정한다.
library(mlbench)
data("BreastCancer")
myds <- BreastCancer[complete.cases(BreastCancer), ]
k = 10
folds <- cvFolds(nrow(myds), K = k)
acc <- c()
for(i in 1:k){
ts.idx <- folds$which == i
ds.tr <- myds[-ts.idx, -ncol(myds)]
ds.ts <- myds[ts.idx, -ncol(myds)]
cl.tr <- factor(myds[-ts.idx, ncol(myds)])
cl.ts <- factor(myds[ts.idx, ncol(myds)])
pred <- knn(train = ds.tr, test = ds.ts, cl = cl.tr, k = 5)
acc[i] <- mean(cl.ts == pred)
}
mean(acc)
08
library(mlbench)
data("PimaIndiansDiabetes")
myds <- PimaIndiansDiabetes
k = 10
folds <- cvFolds(nrow(myds), K = k)
acc <- c()
for(i in 1:k){
ts.idx <- folds$which == i
ds.tr <- myds[-ts.idx, -ncol(myds)]
ds.ts <- myds[ts.idx, -ncol(myds)]
cl.tr <- factor(myds[-ts.idx, ncol(myds)])
cl.ts <- factor(myds[ts.idx, ncol(myds)])
pred <- knn(train = ds.tr, test = ds.ts, cl = cl.tr, k = 5)
acc[i] <- mean(cl.ts == pred)
}
mean(acc)
09
library(mlbench)
data("Vehicle")
myds <- Vehicle
k = 10
folds <- cvFolds(nrow(myds), K = k)
acc <- c()
for(i in 1:k){
ts.idx <- folds$which == i
ds.tr <- myds[-ts.idx, -ncol(myds)]
ds.ts <- myds[ts.idx, -ncol(myds)]
cl.tr <- factor(myds[-ts.idx, ncol(myds)])
cl.ts <- factor(myds[ts.idx, ncol(myds)])
pred <- knn(train = ds.tr, test = ds.ts, cl = cl.tr, k = 3)
acc[i] <- mean(cl.ts == pred)
}
mean(acc)
10
library(mlbench)
data("Vowel")
myds <- Vehicle
k = 10
folds <- cvFolds(nrow(myds), K = k)
acc <- c()
for(i in 1:k){
ts.idx <- folds$which == i
ds.tr <- myds[-ts.idx, -ncol(myds)]
ds.ts <- myds[ts.idx, -ncol(myds)]
cl.tr <- factor(myds[-ts.idx, ncol(myds)])
cl.ts <- factor(myds[ts.idx, ncol(myds)])
pred <- knn(train = ds.tr, test = ds.ts, cl = cl.tr, k = 5)
acc[i] <- mean(cl.ts == pred)
}
mean(acc)
'Study_exam > 모두를 위한 R 데이터 분석 입문 연습문제' 카테고리의 다른 글
모두를 위한 R 데이터 분석 입문 연습문제 13장 (0) | 2023.06.15 |
---|---|
모두를 위한 R 데이터 분석 입문 연습문제 11장 (0) | 2023.06.15 |
모두를 위한 R 데이터 분석 입문 연습문제 10장 (0) | 2023.06.15 |
모두를 위한 R 데이터 분석 입문 연습문제 9장 (1) | 2023.06.15 |
모두를 위한 R 데이터 분석 입문 연습문제 8장 (0) | 2023.06.15 |