728x90
반응형
아래는 백화점 고객의 1년 간 구매 데이터이다.
...
고객 3,500명에 대한 학습용 데이터(y_train.csv, X_train.csv)를 이용하여 성별예측 모형을 만든 후, 이를 평가용 데이터(X_test.csv)에 적용하여 얻은 2,482명 고객의 성별 예측값(남자일 확률)을 다음과 같은 형식의 CSV 파일로 생성하시오.(제출한 모델의 성능은 ROC-AUC 평가지표에 따라 채점)
library(randomForest)
library(caret)
library(dplyr)
library(e1071)
X_train = read.csv('sample_data/X_train.csv')
y_train = read.csv('sample_data/y_train.csv')
X_test = read.csv('sample_data/X_test.csv')
# head(X_train)
# head(y_train)
# head(X_test)
# summary(X_train)
# 환불금액 결측치 제거 필요, 총구매액 0이상만 filter,최대구매액 0 이상filter
X_train$환불금액 <- ifelse(is.na(X_train$환불금액), 0, X_train$환불금액)
X_test$환불금액 <- ifelse(is.na(X_test$환불금액), 0, X_test$환불금액)
X_train$총구매액 <- ifelse(is.na(X_train$총구매액), 0, X_train$총구매액)
X_test$총구매액 <- ifelse(is.na(X_test$총구매액), 0, X_test$총구매액)
X_train <- X_train %>% filter(총구매액 >= 0)
X_train <-X_train %>% filter(최대구매액 >= 0)
X_test <- X_test %>% filter(총구매액 >= 0)
X_test <- X_test %>% filter(최대구매액 >= 0)
# str(X_train)
#factor형으로 변경
X_train <- X_train %>% mutate_if(is.character, as.factor)
X_test <- X_test %>% mutate_if(is.character, as.factor)
# str(X_train)
y_train$gender <- as.factor(y_train$gender)
train <- merge(X_train, y_train, by="cust_id")
test <- X_test
#head(train)
#head(test)
#summary(train)
# 분리
set.seed(123)
idx <- sample(1:nrow(train), nrow(train)*0.7)
train_data <- train[idx,]
valid_data <- train[-idx,]
# 정규화
train_pre <- preProcess(train_data, method="range")
valid_pre <- preProcess(valid_data, method="range")
train_scaled <- predict(train_pre, train_data)
valid_scaled <- predict(valid_pre, valid_data)
train_data <- train_scaled
valid_data <- valid_scaled
# 모델 생성
md.rf <- randomForest(gender~. -cust_id, data=train_data, ntree=300)
md.glm <- train(gender~. -cust_id, data=train_data, method="glm")
md.svm <- svm(gender~. -cust_id, data=train_data, cost=10, gamma=0.01)
# 예측
pred.rf <- predict(md.rf, newdata=valid_data)
pred.glm <- predict(md.glm, newdata=valid_data)
pred.svm <- predict(md.svm, newdata=valid_data)
# 정확도
acc.rf <- caret::confusionMatrix(valid_data$gender, pred.rf)$overall[1]
acc.glm <- caret::confusionMatrix(valid_data$gender, pred.glm)$overall[1]
acc.svm <- caret::confusionMatrix(valid_data$gender, pred.svm)$overall[1]
print(acc.rf)
print(acc.glm)
print(acc.svm)
# glm 채택. train 데이터셋 전체로 모델링
md.fit <- train(gender~. -cust_id, data=train, method="glm")
pred.fit <- predict(md.fit, newdata=test)
df <- data.frame(custid=test$cust_id, gender=pred.fit)
#head(df)
write.csv(df, "작업형2.csv",row.names=F)
다른 좋은 방법도 많겠지만 나는 이 방법으로 풀었다.
다양한 풀이 공유 차원에서 올려본다.
+ 엑셀은 구글링하면 다운로드 받을 수 있다.
+ 근데 문제에서는 성별의 예측값(남자일 확률)을 구하라고 했는데 결과값은 0, 1이다.. 확률이니 0.267 이런식으로 나와야 하는거 아닌가 싶은데 다른 분들도 이렇게 푸신 것 같아 일단 올린다.😓
[IT/자격증] - [빅분기]빅데이터 분석기사 6회 실기 후기(R/전공자/직장인/수험서/공부기간/후기/논란)
[빅분기]빅데이터 분석기사 6회 실기 후기(R/전공자/직장인/수험서/공부기간/후기/논란)
2023년 6월 24일(토) 에 빅데이터 분석기사 6회 실기시험이 시행되었다. 잘 본 것 같진 않지만 후회되지도 않는다 ! 👍 시험 공부 방법과 후기 등등(+논란)을 공유해보려고 한다. 수험서 2023 이기적
kkunhen.tistory.com
[IT/자격증] - [빅분기]빅데이터 분석 기사 6회 실기 합격 후기
[빅분기]빅데이터 분석 기사 6회 실기 합격 후기
빅분기 6회 실기 시험 후기 보기 >> https://kkunhen.tistory.com/2 빅데이터 분석기사 6회 실기 후기(R/전공자/직장인/수험서/공부기간/후기/논란) 2023년 6월 24일(토) 에 빅데이터 분석기사 6회 실기시험이
kkunhen.tistory.com
728x90
반응형
'IT > 자격증' 카테고리의 다른 글
[빅분기] 이기적 작업형 3유형 추가 자료 풀이(R) (0) | 2023.08.11 |
---|---|
[빅분기] goorm 체험하기 제3유형 문제&풀이(R)-고혈압 데이터셋 (0) | 2023.08.08 |
[리눅스마스터 2급] 1차 시험 접수&응시 후기(합격) (0) | 2023.08.02 |
[빅분기] goorm 체험하기 제1유형 문제&풀이(R)-mtcars 데이터셋 (0) | 2023.07.10 |
[빅분기]빅데이터 분석 기사 6회 실기 합격 후기 (0) | 2023.07.08 |