59doit
머신러닝 예제 TEST(8) 본문
(의사결정트리- 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 |