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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# 의사결정트리 알고리즘을 이용하여 화장품 구매 고객 예측하기
# skin 데이터 갖고 오기 (C50 쓰려면 컬럼명,데이터 모두 영어여야함)
skin <- read.csv("c:/data/skin.csv", header=T ,stringsAsFactors = TRUE)
str(skin)
nrow(skin) # 30
# TEST용 하나 제외
skin_real_test_cust <- skin[30, ]
skin_real_test_cust
# TEST용을 제외하고 새롭게 skin2 생성
skin2 <- skin[ 1:29, ]
nrow(skin2) # 29
skin2 <- skin2[ , -1] # 고객번호 제외
# shuffle
set.seed(0)
skin2_shuffle <- skin2[sample(nrow(skin2)),]
train_num <- round(0.7 * nrow(skin2_shuffle), 0) # 20
# train(70%) / test(30%)
skin2_train <- skin2_shuffle[1:train_num,]
skin2_test <- skin2_shuffle[(train_num+1) : nrow(skin2_shuffle),]
nrow(skin2_train) # 20
nrow(skin2_test) # 9
# 의사결정트리 패키지 설치
# install.packages("C50")
library(C50)
# 의사결정트리는 trials와 seed로 정확도 조절
skin_model <- C5.0(cupon_react~.,data=skin2_train,trials=10,replace=T)
skin_model # skin 데이터는 데이터양이 너무 적어서 trials=1번밖에 못 도는 것 확인 가능
# 정답 / 예측값 확인
skin2_result <- predict(skin_model , skin2_test[ , -6])
x <- data.frame(skin2_result,skin2_test[6])
table(x)
skin3_result <- predict(skin_model,skin_real_test_cust)
data.frame(skin3_result,skin_real_test_cust[7])
library(gmodels)
CrossTable( skin2_test[ , 6], skin2_result )
per <- CrossTable( skin2_test[ , 6], skin2_result )
per$prop.tbl[1]+per$prop.tbl[4] # 0.777778
|
cs |
'인공지능 > 실습예제' 카테고리의 다른 글
(R) 규칙기반알고리즘 활용하기 - 버섯 분류 (0) | 2020.06.26 |
---|---|
(R) 의사결정트리 활용하기 2 - 은행 대출 채무 이행/불이행 여부 예측 (0) | 2020.06.25 |
(R) 나이브베이즈알고리즘 활용하기 3 - 독감 환자입니까? (0) | 2020.06.25 |
(R) 나이브베이즈알고리즘 활용하기 2 - 영화 장르 예측 (0) | 2020.06.25 |
(R) 나이브베이즈알고리즘 활용하기 1 - 버섯 분류 (0) | 2020.06.24 |