티스토리 뷰
1. 데이터 확인하기
1-1. 데이터 소개
UCI의 공개데이터인 Mushroom을 csv파일로 배포한 것을 사용하였다.
1-2. 데이터 구조 분석하기
- 데이터 불러온다.
mushroom<-read.csv("mushrooms.csv")
- 데이터의 structure를 확인한다.
str(mushroom)
→ 23개의 변수와 8124개의 데이터를 가지고 있다는 것을 확인할 수 있다.
→ 변수의 타입이 모두 character이다.
- N/A 결측치가 있는지 확인한다.
colSums(is.na(mushroom))
→ 결측치를 가지는 변수가 없음을 알 수 있다.
- 각 열들이 어떤 factor들로 분류되어있는지 확인한다.
name <- names(mushroom)
for(i in 1:length(name)){
print(name[i])
print(table(mushroom[name[i]]))
}
→ 독버섯 여부를 표시해주는 type 변수를 통해 나중에 분류의 정확도를 검사할 수 있다.
1-3. 데이터 탐색적 분석하기
-> 필요!!
-> 변수 별로 막대그래프/히스토그램, 도수분포표, summary 등을 탐색해본다.
-> 정규분포와 거리가 멀어보이는 변수의 경우 제거하는 것도 방법이다.
-> 산점도를 봤을 때 두 변수가 믹스돼있을 경우 적절하지 않은 변수이다.
-> 정규성 검정 mvn() - 변수별로 살펴본다.
2. 데이터 분할하기 - Holdout 방식
- simple random sampling 방법을 사용한다.
- 전체 데이터 중 70%는 training data로, 나머지 30%는 testing data로 분리한다.
- set.sedd()를 이용해 랜덤 넘버 시드를 주어 계속해서 같은 데이터셋을 만들 수 있다.
- idx에 각 데이터의 행 번호를 뽑아내는 방법을 사용했다.
# simple random sampling
set.seed(1234)
idx<-sample(2, nrow(mushroom), replace=T, prob=c(0.7, 0.3))
# trainning data, testing data 생성
train<-mushroom[idx==1,-1]
test<-mushroom[idx==2,-1]
# 각각의 label 생성
train_labels <- mushroom[idx==1,1]
test_labels <- mushroom[idx==2,1]
nrow(train)
nrow(test)
→ 5729개의 training data와 2395개의 testing data로 분리하였다.
3. Naive Bayes Classification 모델 적용하기
-> Naive Bayes Classification 모델의 경우 보통 적합하지 않다!! (모든 변수들이 독립이라는 가정은 보통 맞지 않기 때문이다.)
-> 베이즈 선형 모델을 사용해보자.
-> Bayes Classification 모델은 이산형 데이터보다는 연속형 데이터에 적합한 모델이다.
- 필요한 패키지를 불러온다.
# 나이브 베이즈 분류기 사용
install.packages("e1071")
library(e1071)
# CrossTable 사용
install.packages("gmodels")
library(gmodels)
- 모델을 생성한다.
mushroom_classifier <- naiveBayes(train, train_labels, laplace = 1)
- 생성한 모델을 이용하여 testing data를 예측해본다.
m_pred <- predict(mushroom_classifier, test)
- 예측값과 실제 정답을 비교하는 CrossTable을 확인해본다.
CrossTable(m_pred, test_labels)
- accuracy를 확인해본다.
print(sum(m_pred==test_labels)*100/length(m_pred))
[1] 95.03132
-> confficients of linear discriminations를 조사해봐야한다.
-> training/testing data를 여러번 분류하여 그에 대한 accuracy를 구해내고 그 accuracy들의 평균/분산을 구해야한다.
-> post probability 또한 알아보자.
ref.
[R] 나이브 베이즈 분류(Naive Bayes Classifier) 활용 데이터 분석 및 실습 - 독버섯 분류하기 (tistory.com)
[ADP] R을 활용한 모형평가 방법(1) - Holdout, K-fold, Boostrap (tistory.com)
7.12 R에서 나이브 베이즈(Naïve Bayes)분석 실시하기 : 네이버 블로그 (naver.com)
'Data > R' 카테고리의 다른 글
[데이터사이언스/R] Red Wine Quality - 서포트 벡터 머신 (Support Vector Machine, 지지 벡터 머신) (0) | 2021.07.13 |
---|---|
[데이터사이언스/R] 데이터 분석해보기 6 - Red Wine Quality (0) | 2021.07.08 |
[빅데이터] 분류분석 (Classification Analysis) (0) | 2021.07.07 |
Linear Regression (선형 회귀) (0) | 2021.07.06 |
범주형/연속형 데이터의 연관 분석 (0) | 2021.07.06 |