---
title: "chapter06 lda"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## 6장 통계 기반 머신러닝 1 - 확률분포와 모델링 - 베이즈 판별 분석

R에 내장된 iris 데이터를 읽은 후 지도학습 데이터와 테스트 데이터로 나눕니다.

```{r iris}
library(MASS)
# 데이터 읽기와 학습용으로 사용할 테스트용 데이터 할당
data(iris)
train.data<- iris[c(1:75)*2-1,]
test.data<- iris[c(1:75)*2,]

# 학습에 사용할 데이터 라벨 교체
iris.labels<- factor(c(rep("s",25), rep("c",25), rep("v",25)))
train.data[,5]<-iris.labels
test.data[,5]<-iris.labels
```

## 판별 분석(사전분포 데이터는 없음)

사전분포를 지정하지 않는(각 붓꽃 종이 같을 확률) 상태로 판별 분석을 합니다. 여기서 Z는 판별 도구입니다.

```{r lda1}
Z<- lda(Species ~ ., data=train.data)
Z
```

Z의 학습 결과를 출력합니다.

```{r lda_train_result}
# Z의 학습 결과
table(train.data[,5], predict(Z)$class)
```

테스트 데이터를 Z로 판별합니다.

```{r lda_train_result2}
# 테스트용 데이터를 Z로 판별합니다
table(test.data[,5], predict(Z,test.data)$class)
```

## 베이즈 선형 판별 분석

사전분포를 설정한 후 판별 분석을 합니다. 사전분포는 붓꽃의 세 가지 종류에 1/6, 1/2, 1/3 확률을 지정합니다. Z2 역시 판별 도구입니다.

```{r lda2}
# 베이즈 선형 판별 분석(사전분포 확률 1/6, 1/2, 1/3)
Z2<- lda(Species ~ ., data=train.data, prior=c(1,3,2)/6)
Z2
```

판별 도구 Z2의 학습 결과를 출력합니다.

```{r lda2_train_result}
# Z2 학습 결과
table(train.data[,5], predict(Z2)$class)
``` 

Z2에서 테스트 데이터를 판별합니다

```{r lda2_train_result2}
# 테스트용 데이터를 Z2로 판별합니다
table(test.data[,5], predict(Z2, test.data)$class)
```

## Z와 Z2 판별 함수 히스토그램

Histogram of Z

```{r histo1, echo=FALSE}
plot(Z, dimen=1)
```

Histogram of Z2

```{r histo2, echo=FALSE}
plot(Z2, dimen=1)
```
