728x90
728x90
[ 이전 글 ] LDA에서는 결정경계를 선형으로 가정하고 있어 서로 다른 공분산 분류에 어려움이 있는데( 비선형 분류가 가능하긴 함 ) 이것은 QDA로 해결할 수 있다.
QDA Quadratic Discriminat Analysis ]
- 서로 다른 공분산 데이터 분류 가능 ( 비선형 분류 가능 )
- 서로 다른 공분산 데이터 분류를 위해 샘플이 많이 필요하다.
- 독립변수(설명변수)의 개수가 많을 경우, 추정해야하는 모수가 많아짐 ➡️ 연산량이 큼
🔎 모수
아래의 식에서 β에 해당하는 것을 모수라고 함
QDA 예시
평균이 각각 (0,0) (1,1) (-1,1) 이고 class2 와 class3 의 공분산 구조는 같지만 class1의 구조가 다르기 때문에 QDA를 사용한다
[ 파이썬에서 ' IRIS 데이터 ' QDA에 적용 ]
1️⃣ Iris 데이터 불러오기 + test / train 데이터로 나누기
# Iris data 불러오기
import seaborn as sns # seaborn을 불러옴.
iris=sns.load_dataset('iris') # iris라는 변수명으로 Iris data를 download함.
X=iris.drop('species',axis=1) # 'species'열을 drop하고 특성변수 X를 정의함.
y_=iris['species'] # 'species'열을 label y를 정의함.
from sklearn.preprocessing import LabelEncoder # LabelEncoder() method를 불러옴
classle=LabelEncoder()
y=classle.fit_transform(iris['species'].values) # species 열의 문자형을 범주형 값으로 전환
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y, test_size=0.4, random_state=123, stratify=y)
2️⃣ LDA를 사용하기 위해 sklearn.discriminant_analysis에서 QuadraticDiscriminantAnalysis 임포트
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis
cqd=QuadraticDiscriminantAnalysis(store_covariance=True)
3️⃣ 적용 후 정확도 확인
cqd.fit(X_train, y_train) # QDA 적합
y_train_pred=cqd.predict(X_train)
y_test_pred=cqd.predict(X_test)
from sklearn.metrics import accuracy_score
print(accuracy_score(y_train, y_train_pred)) # train data에 대한 accuracy
print(accuracy_score(y_test, y_test_pred)) # test data에 대한 accuracy
728x90
'CODING > AI & ML & DL' 카테고리의 다른 글
[ML] BoVW : bag of visual words | Feature engineering (1) | 2020.12.22 |
---|---|
[기계학습] 의사결정나무 | Decision Tree (0) | 2020.10.30 |
[기계학습] 선형 판별 분석 | Linear Discriminant Analysis (0) | 2020.10.14 |
[기계학습] 판별 분석 | Discriminant analysis (0) | 2020.10.13 |
[기계학습] 로지스틱 회귀 | Logistic Regression (2) | 2020.09.30 |
댓글