59doit

머신러닝 예제 TEST(8) 본문

Q.

머신러닝 예제 TEST(8)

yul_S2 2022. 12. 5. 12:34
반응형

(의사결정트리- CART)
 1.  iris 데이터를 이용하여 CART 기법 적용(rpart()함수 이용)하여 분류분석 하시오.

(1) 데이터 가져오기 & 샘플링
(2) 분류모델 생성
(3) 테스트 데이터를 이용하여 분류
(4) 예측정확도

 

# 패키지 설치 및 불러오기

install.packages("rpart")
library(rpart)
library(rpart.plot)

 

 

# 1 데이터 가져오기 & 샘플링

data <- iris

idx=sample(1:nrow(data),0.7*nrow(data))
trainDATA=data[idx,]
testDATA=data[-idx,]
trainDATA
testDATA

 

 

# 2 분류모델 생성

rpart_model <- rpart(Species ~ ., data = trainDATA) 
rpart_model

rpart.plot(rpart_model)

  • trainDATA 데이터 대상으로 생성

< 모델 해석 > 
# 종(Species) 판단
# Petal.Length < 2.5 : setosa로 판단
# Petal.Width >  : versicolor로 판단
# 나머지 versicolor로 판단

 

 

# 3 테스트 데이터를 이용하여 분류

testpred<- predict(rpart_model , newdata = testDATA)
testpred
  • testDATA 데이터 대상으로 생성

 

 

# 4 예측정확도

testpred<- predict(iris_ctree, newdata = testDATA)
testpred
table(testpred, testDATA$Species)
# testpred     setosa versicolor virginica
# setosa         18          0         0
# versicolor      0         12         1
# virginica       0          1        13


#방법1

(18 + 12 + 13) / length(testpred)

# 0.9555556 

# 방법2
caret::confusionMatrix(testDATA$Species, testpred)$overall[1]
# 0.9555556 

 

 

 

 

 

(의사결정트리- CART)
 2.  iris 데이터를 이용하여 조건부 추론나무 적용(ctree()함수 이용)하여 분류분석 하시오.

(1) 데이터 가져오기 & 샘플링
(2) 분류모델 생성
(3) 테스트 데이터를 이용하여 분류
(4) 시각화

 

install.packages("party")
library(party)

 

# 1 데이터 가져오기 & 샘플링

data(iris)

idx <- sample(1:nrow(iris),0.7*nrow(iris))
trainDATA <- iris[idx,]
testDATA <- iris[-idx,]
trainDATA
testDATA

 

# 2 분류모델 생성

iris_ctree <- ctree(Species ~ ., data = trainDATA) 
iris_ctree

 

# 3  테스트 데이터를 이용하여 분류

pred2 <- predict(iris_ctree, testDATA)

# 예측결과와 실제값 비교
table(pred2, testDATA$Species) 

 

# 4 시각화

plot(iris_ctree)


 

 

 

 

 

 

 

 3.   iris데이터 셋의 1~4번 변수를 대상으로 유클리드 거리 매트릭스를 구하여 idist에 저장한 후 계층적 클러스터링을 적용하여 결과를 시각화하시오.

(1) 유클리드 거리 계산
(2) 계층형 군집 분석(클러스터링)
(3) 분류결과를 대상으로 음수값을 제거하여 덴드로그램 시각화
(4) 그룹 수를 3개로 지정하여 그룹별로 테두리 표시

 

# 1 유클리드 거리 계산

idist <- dist(iris[1:4]) 

 

# 2 계층형 군집 분석(클러스터링)

hc <- hclust(idist) 

 

# 3 분류결과를 대상으로 음수값을 제거하여 덴드로그램 시각화

plot(hc, hang = -1)

 

# 4 그룹 수를 3개로 지정하여 그룹별로 테두리 표시

rect.hclust(hc, k = 3, border ="red")

 

 

 

 

 

 4.   iris데이터에서 species 컬럼 데이터를 제거한 후 k-means clustering를 다음 단계별로 실행하시오

(1) iris 데이터셋 로딩
(2) species 데이터 제거
(3) k-means clustering 실행
(4) 군집 결과 시각화

 

# 1 iris 데이터셋 로딩

data(iris)
iris
iris2 <- iris

 

# 2 species 데이터 제거

iris2$Species <- NULL
head(iris2)

 

# 3 k-means clustering 실행

kmeans_result <- kmeans(iris2, 6) 
kmeans_result
str(kmeans_result)

 

# 4 군집 결과 시각화

plot(iris2[c("Sepal.Length", "Sepal.Width")], col=kmeans_result$cluster)





points(kmeans_result$centers[, c("Sepal.Length", "Sepal.Width")], col=1:4, pch=8, cex=2)






plot(iris2[c("Petal.Length", "Petal.Width")], col=kmeans_result$cluster)







points(kmeans_result$centers[, c("Petal.Length", "Petal.Width")], col=1:4, pch=8, cex=2)



 

 

 

반응형

'Q.' 카테고리의 다른 글

텍스트 분석 연습문제  (0) 2022.12.16
텍스트 & 감정분석 예제 TEST(9)  (0) 2022.12.16
[ R ] 연관분석 연습문제  (0) 2022.12.05
[ R ] 군집분석 연습문제  (0) 2022.12.04
[ R ] 통계 기반 데이터 분석 예제 평가(7)  (1) 2022.11.30
Comments