티스토리 뷰
1. 우선 주어진 데이터의 결측치 등을 확인하기
summary(train)
summary(test)
2. 기본적으로 사용하게 될 라이브러리 함수를 불러와 준다.
library(dplyr) # 파이프 연산자(%>%)
library(caret) # postResample >> RMSE, R2, MSE 를 확인할 수 있다.
library(randomForest) # 예측모델 randomForest 사용
3. 환불금액이 없는 경우(결측치)를 0원으로 대체한다. 결측이라고 보기 어렵다.
# 환불금액 없는 경우 >>> 0 으로 대체한다
train$환불금액 <- ifelse(is.na(train$환불금액), 0, train$환불금액)
test$환불금액 <- ifelse(is.na(test$환불금액), 0, test$환불금액)
4. 범주형 자료에 대해 훈련용, 학습용 데이터의 라벨(level)을 맞춰 준다.
# train 과 test 의 범주형 자료에 대한 라벨(level)을 맞춘다
train$주구매상품 <- factor(train$주구매상품)
test$주구매상품 <- factor(test$주구매상품, level = levels(train$주구매상품))
train$주구매지점 <- factor(train$주구매지점)
test$주구매지점 <- factor(test$주구매지점, level = levels(train$주구매지점))
#table(test$주구매상품)
5. 총구매액에 대해 예측하려고 하는데. 이상치에 대해 정리한 후 예측 모델을 사용하려고 한다.
## 이상치 처리
q1 <- quantile(train$총구매액, 0.25)
q3 <- quantile(train$총구매액, 0.75)
IQR <- q3 - q1
lower <- q1 - IQR*1.5
upper <- q3 + IQR*1.5
train01 <- train %>% filter(총구매액 >= lower & 총구매액 <= upper)
#########################
set.seed(100)
id <- sample(1:nrow(train01), nrow(train01)*0.7)
x_train <- train01[ id, ]
y_train <- train01[-id, ]
6. 모든 독립변수를 사용해서 r2 의 결과를 보고, importance=TRUE 옵션을 사용하여 중요변수를 확인해 본다.
주구매지점을 뺀 예측모델에서의 설명력을 확인한다. (결론: 뺀 경우의 설명력이 더 좋았다.)
rf_model <- randomForest(총구매액~. -주구매지점 , data=x_train, ntree = 100)
#pred1 <- predict(rf_model, y_train)
#new <- data.frame(pred1)
#new$actual <- y_train$총구매액
#r2 <- postResample(new$pred1, new$actual)
#r2
## 독립변수 모두 사용
#> RMSE Rsquared MAE
#285.9369579 0.8072927 166.3168846
### 주구매지점을 제외한 경우
#> RMSE Rsquared MAE
#281.3831391 0.8123912 166.9973182
pred <- predict(rf_model, test)
result <- data.frame(pred)
#tail(result)
#> pred
#2477 1102.51119
#2478 820.77033
#2479 23.23172
#2480 971.42983
#2481 453.41317
#2482 32.96072
# 답안(코드)을 제출한다.
write.csv(result,"result.csv",row.names = FALSE)
[참고]
유툽에서의 유명하신 분들보다 왜이리 빈약한 것 같네요...ㅜ.ㅠ..
'4. 파이썬, R 등등(통계분석 관련)' 카테고리의 다른 글
제1유형 - 단어 개수, 특정 단어 찾기 등 (0) | 2025.06.26 |
---|---|
제1유형 - 시계열 데이터 처리 (0) | 2025.06.25 |
제1유형 - 반별, 과목별 합계, 평균, 표준화 등 정렬하기 (0) | 2025.06.24 |
Merge (R v.s Tableau) (0) | 2022.08.19 |
- Total
- Today
- Yesterday
- IOS
- 입시결과
- 깃허브
- Working copy
- 옵시디언
- 깃
- OBSIDIAN
- 파이차트
- 제1유형
- 빅분기
- git
- infinicloud
- 옵시디안
- 클라우드
- 깃헙
- 태블로
- Github
- markgit
- 빅데이터분석기사
- WebDAV
- SourceTree
- 실기r
- 실기
- Raidrive
- R
- tableau
- Nplayer
- 실기 r
- 동기화
- 리모틀리세이브
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |