2022년 5월 6일 금요일

오렌지3로 주성분분석 (PCA)

 파이썬을 활용한 데이터·AI 분석 사례 (건강보험심사평가원 발행) 페이퍼를 보면서 오렌지3를 익히고 있습니다.

오렌지3 만으로도 이러한 분석이 가능한 걸 알면 의료분야 많은 교수님들이 좋아 할 것 같습니다. 저는 의료분야는 문외한이라 페이퍼에 나온 것을 오렌지로 구현해본 것 뿐입니다.

1. 주성분분석(Principal Component Analysis)

여러 특성(feature)가운데 대표 특성을 찾아 분석하는 방식으로, 대표 특성의 선별은 자료의 차원을 고차원에서 하위 차원으로 축소하는 (차원축소)기법을 활용한다.

2. 분석연습

위스콘신 암센터 569명의 유방암 진료 환자 샘플 데이터를 PCA에 활용하였다. 암 진단에 필요한 속성 정보와 양성(Benign)/악성(malignant) 진단 결과로 분류된 환자 데이터이다. 해당 데이터 세트를 검토하여 유방암 진단에 설명력이 높은 주성분들을 찾아본다.

3. 일단 오렌지를 실행하고 > 위젯을 아래와 같이 배치합니다. 


주된 루트는 파이썬스트립트 > 프리프로세스 > 주성분분석(PCA)입니다. 

4. 파이썬스크립트를 더블크릭하고 내용을 아래와 같이 수정하고 [RUN] 버튼을 눌러 실행합니다.

from sklearn.datasets import load_breast_cancer
import numpy as np
from Orange.data import Table, Domain, ContinuousVariable, DiscreteVariable

cancer = load_breast_cancer()

ifeature = list(cancer.feature_names)
jfeature = [istr.replace(' ', '_') for istr in ifeature]
iclass = DiscreteVariable('target',cancer.target_names)
domain = Domain([ContinuousVariable(istr) for istr in jfeature], iclass)

out_data = Table.from_numpy(domain, cancer.data, cancer.target)

domain 관련하여 약간의 코딩이 들어 갔습니다. 에디트도메인위젯을 이용하면 쉽게할 수 있습니다.

5. 오렌지를 설치하면 자동으로 깔리는 sklearn에 있는 자료를 불러와 오렌지3의 테이블 형식으로 변경하는 것입니다.

6. 이제는 오렌지3의 위젯을 더블크릭하여 확인하는 일만 남았습니다. 이런것을 이짧은 코딩으로 가능하다니 놀랍지 않나요? 불어온 자료를 눈으로 확인합니다.


6. Feature Statistics를 더블크릭하여 확인합니다. 양성/악성이 특정 Feature에의해 구분이 가능하군요.


7. 다음으로 데이터 표준화 또는 정규화 작업이 필요하다. 속성마다 데이터값의 범위가 다르므로 이를
주성분 선별 전에 전처리해야 각 속성의 영향도를 같은 선상에서 비교할 수 있다. Preprocess 위젯을 더블크릭하여 아래와 같이 표준화를 합니다.

8. 표준화된 Data TAble (1)을 더블크릭하여 데이터를 확인합니다.

9. PCA 위젯을 더블크릭하고 [Components = 6] 으로 설정합니다. 페이퍼와 일치 시키기위해서


10. Distribution (1)을 더블크릭하여 주성분의 적중여부를 확인합니다.




댓글 없음:

델파이 12.1이냐 11.3이냐?

 델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.