본문 바로가기
computing

20260601_R12

by greentworkshop 2026. 6. 1.
#기초1
tr.idx <- c(1:105)
ds.tr <- iris[tr.idx, c(1:4)]
cl.tr <- factor(iris[tr.idx, 5])

ds.tr
cl.tr

#기초2
ds.ts <- iris[-tr.idx, c(1:4)]  #훈련용 데이터 105개, 1~4열 데이터셋
cl.ts <- factor(iris[-tr.idx, 5]) #훈련용 데이터 105개, 5열 그룹 정보
ds.ts
cl.ts

#기초3
install.packages("class") #kNN기본 함수 포함
library(class)
pred <- knn(ds.tr, ds.ts, cl.tr, k=3, prob=TRUE)
ds.ts$pred <- as.character(pred)
ds.ts

#기초4
acc <- mean(as.character(pred) == as.character(cl.ts)) # 예측 정확도
acc 

#기초5
install.packages("class")
library(class)
#학습용 데이터
c_train <- data.frame(
  wing_length = c(5.0, 5.5, 6.0, 8.0, 8.5, 9.0), 
  tail_length  = c(4.0, 4.5, 5.0, 7.0, 7.5, 8.0), 
  comb_height  = c(1.0, 1.1, 1.2, 2.5, 2.6, 2.7),
  breeds       = factor(c("A", "A", "A", "B", "B", "B")) #A품종, B품종
)

#기초6
c_test <- data.frame(
  wing_length = c(5.3, 8.3),
  tail_length  = c(4.2, 7.2),
  comb_height  = c(1.05, 2.55),
  breeds       = factor(c("A", "B"))
)

#기초7
install.packages("kknn")
library(kknn)

#기초8
c_knn3 <- kknn(breeds ~ wing_length + tail_length + comb_height,
               train = c_train,
               test  = c_test,
               k     = 3)

c_test$breeds_knn <- as.character(fitted(c_knn3))  
c_test

#기초9
acc <- mean(c_test$breeds == c_test$breeds_knn)
acc  

#----------------------------------

#기초10
tr.idx <- c(1:98) #가 :  c(1:98)
ds.tr <- iris[tr.idx, c(2:4)] #나 : iris[tr.idx, c(2:4)]
cl.tr <- factor(iris[tr.idx, 5])

ds.tr
cl.tr

#기초11 - 테스트용 데이터 준비
ds.ts <- iris[-tr.idx, c(2:4)]
cl.ts <- factor(iris[-tr.idx, 5])
ds.ts
cl.ts

#기초12 - 
library(class)
#분류(이웃의 수를 4로 설정해 분류 분석)
pred2 <- knn(ds.tr, ds.ts, cl.tr, k=4, prob=TRUE) #가: k=4
ds.ts$pred <- as.character(pred) #나: pred2
ds.ts

#기초13
acc <- mean(as.character(pred2) == as.character(cl.ts)) # 예측 정확도
acc 
#가: 0.25

#기초14
install.packages("class")
library(class)
#학습용 데이터
c_train <- data.frame(
  wing_length = c(5.0, 5.5, 6.0, 8.0, 8.5, 9.0), 
  tail_length  = c(4.0, 4.5, 5.0, 7.0, 7.5, 8.0), 
  comb_height  = c(1.0, 1.1, 1.2, 2.5, 2.6, 2.7),
  beak_length = c(2.5, 2.6, 2.7, 3.5, 3.6, 3.7),
  breeds = factor(c("A", "A", "A", "B", "B", "B")) #A품종, B품종
)
#가: "A", "A", "A", "B", "B", "B"

#기초15
c_test <- data.frame(
  wing_length = c(5.3, 8.3),
  tail_length  = c(4.2, 7.2),
  comb_height  = c(1.05, 2.55),
  breeds = factor(c("A", "B"))
)

#가: breeds

#기초16
c_knn3 <- kknn(breeds ~ wing_length + tail_length + beak_length,
               #가 : breeds ~ wing_length + tail_length + beak_length
               train = c_train,
               test  = c_test,
               k     = 2) #나: 2

c_test$breeds_knn <- as.character(fitted(c_knn3))  
c_test

#기초17 
acc <- mean(c_test$breeds == c_test$breeds_knn)
acc 
#가: 0.5

#----최근접 이웃 분류
library(class)

#훈련용 데이터와 테스트용 데이터 준비
#코드1
tr.idx <- c(1:25, 51:75, 101:125)
ds.tr <- iris[tr.idx, 1:4]
ds.ts <- iris[tr.idx, 1:4]
cl.tr <- factor(iris[tr.idx, 5])
cl.ts <- factor(iris[-tr.idx, 5])
cl.tr
cl.ts

#코드2
library(class)
pred <- knn(ds.tr, ds.ts, cl.tr, k=3, prob=FALSE)
pred

#코드3
acc <- mean(prod==cl.ts)
acc
table(cl.ts)
table(pred)

#코드4
install.packages("kknn")
library(kknn)

c_train <- read.csv("chick_train.csv", header = TRUE)
c_test <- read.csv("chick_test.csv", header = TRUE)

c_train$breeds <- as.factor(c_train$breeds)
c_test$breeds <- as.factor(c_test$breeds)
c_knn3 <- kknn(breeds~wing_length + tail_length + comb_height, c_train,c_test,k=3)
c_test$pred3 <- fitted(c_knn3)
head(c_test)

#코드5
acc <- mean(c_test$breeds==c_test$pred3) #예측 정확도
acc

table(c_test$breeds)
table(c_test$pred3) #예측값과 실제값 비교 통계계

#코드6
c_train5 <- read.csv("chick_train.csv",header=TRUE)

c_test5 <- read.csv("chick_test.csv",header=TRUE)

# 정답 컬럼을 분류용 factor로 변환

c_train5$breeds <- as.factor(c_train5$breeds)
c_test5$breeds <- as.factor(c_test5$breeds)
c_knn5 <- kknn(breeds~wing_length + tail_length + comb_height,c_train5,c_test5,k=5)
c_test5$pred5 <- fitted(c_knn5)

head(c_test5)

#코드7
acc5 <- mean(c_test5$breeds==c_test$pred5)#예측 정확도
acc5

table(c_test5$breeds)
table(c_test5$pred)

#----종합-----
#종합1
ccjh <- read.csv("csv_exam.csv", header = TRUE)
cl_kmccjh <- kmeans(ccjh[,c("math","english","science")], centeres = 3)
cl_kmccjh
ccjh$cluster <- cl_kmccjh$cluster # 가: cl_kmccjh$cluster
ccjh
#종합2
library(class)
tr.idx <- c() #1~15행까지 훈련용 데이터의 인덱스
ds.tr <- ccjh[tr.idx, 3:5] # 훈련용 데이터셋(math, english, science)
ds.ts <- (나) #16~20행 테스트용 데이터셋 math, english, science
cl.tr <- factor(ccjh[tr.idx, 6]) # 훈련용 데이터셋의 그룹 정보
cl.ts <- factor((다)) # 테스트용 데이터셋의 그룹 정보보
cl.tr
cl.ts

#(가): 1:15
#(나): ccjh[16:20, 3:5]
#(다): ccjh[16:20, 6]

#종합3
predcjh <- knn(ds.tr, ds.ts, cl.tr, k=3, prob=TRUE)
predcjh #16~20까지의 예측 분류 번호호

Acc <- mean(as.character(cl.ts)==as.character(predcjh))#예측 정확도를 구함
Acc
#가: predcjh, 나: cl.ts

table(predcjh)
table(cl.ts)

#종합4
favoritecsvcjh <- read.csv("2026_favorite_C.csv", header=TRUE)
head(favoritecsvcjh)
favoritecsvcjhsub <- favoritecsvcjh[,4:8]
head(favoritecsvcjhsub)
#가: 4:8

#종합5
library(cluster)
clusplot(favoritecsvcjhsub[,2:6], favoritecsvcjh$cluster,
         color = TRUE,
         shade = FALSE,
         labels = 2,
         lines = 0) 
         # 가: 0

#종합6
library(class)

ts.idx <- c((가))
#가: ts.idx <- c(16:20)
ds.tr <- favoritecsvcjh[-ts.idx, 4:8]#훈련용 데이터셋
ds.tr <- favoritecsvcjh[ts.idx, 4:8]#테스트용 데이터셋셋
ds.ts
cl.tr <- factor(favoritecsvcjh[(나)])#훈련용 데이터셋의 그룹 정보
#나: cl.tr <- factor(favoritecsvcjh[-ts.idx, 9])
cl.ts <- factor(favoritecsvcjh[(다)])#테스트용 데이터셋의 그룹 정보
#다:cl.ts <- factor(favoritecsvcjh[ts.idx, 9])
cl.tr
cl.ts

#종합7
library(class)
Pred_favoritecjh <- knn(ds.tr, ds.ts, cl.tr, k=3, prob=FALSE)
Pred_favoritecjh
cl.ts
Acc <- mean(Pred_favoritecjh==cl.ts)
Acc

table(Pred_favoritecjh)
table(cl.ts)
#가: 0.925
#서술: 일치하지 않는 데이터는 총 3개(21,25,27)로 나타났다.
#전체 40개 데이터 중 37개를 정확하게 분류하여 정확도 Acc는 0.925

'computing' 카테고리의 다른 글

20260602_iOS14  (0) 2026.06.02
20260526_iOS12  (0) 2026.05.26
20260525_R11  (0) 2026.05.20
20260519_iOS11  (0) 2026.05.19
20260512_iOS10  (0) 2026.05.12