PCAUMAP: 차원 삭감 방법을 간소화하고 PCA와 UMAP를 연결하는 분석

차원 감축 기법으로 유명한 것은 주성분 분석(PCA, Principal Component Analysis), 그리고 최근 주목받은 것은 UMAP(Uniform Manifold Approximation and Projection for Dimension Reduction)이다.
이번에 우리는 이 두 데이터를 연결하여 데이터 구조를 보기 위한 도구인 PCAUMAP을 만들었다.다음 코드는 Google Colaboratory의 동작을 전제로 합니다.

설치하다.


github 창고에서 PCAUMAP을 설치합니다.코드는 https://github.com/maskot1977/PCAUMAP.git에서 볼 수 있습니다.
!pip install git+https://github.com/maskot1977/PCAUMAP.git
Collecting git+https://github.com/maskot1977/PCAUMAP.git
  Cloning https://github.com/maskot1977/PCAUMAP.git to /tmp/pip-req-build-y2pfqm58
  Running command git clone -q https://github.com/maskot1977/PCAUMAP.git /tmp/pip-req-build-y2pfqm58
Building wheels for collected packages: pcaumap
  Building wheel for pcaumap (setup.py) ... [?25l[?25hdone
  Created wheel for pcaumap: filename=pcaumap-0.1.0-cp37-none-any.whl size=4069 sha256=105a1af1e8b544dd1bcc83563ee0e333d9a1f48b873c6891075cac9ac45b215e
  Stored in directory: /tmp/pip-ephem-wheel-cache-539fnps9/wheels/38/75/23/32a1f509a49530de49787801ee6e723d02375f371a299eaf76
Successfully built pcaumap
Installing collected packages: pcaumap
Successfully installed pcaumap-0.1.0
UMAP 설치."umap-learn"을 사용하지 말고 "umap-learn"을 사용하십시오.
!pip install umap-learn
Requirement already satisfied: umap-learn in /usr/local/lib/python3.7/dist-packages (0.5.1)
Requirement already satisfied: scipy>=1.0 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (1.4.1)
Requirement already satisfied: scikit-learn>=0.22 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (0.22.2.post1)
Requirement already satisfied: pynndescent>=0.5 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (0.5.2)
Requirement already satisfied: numba>=0.49 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (0.51.2)
Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.7/dist-packages (from umap-learn) (1.19.5)
Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.22->umap-learn) (1.0.1)
Requirement already satisfied: llvmlite>=0.30 in /usr/local/lib/python3.7/dist-packages (from pynndescent>=0.5->umap-learn) (0.34.0)
Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from numba>=0.49->umap-learn) (54.1.2)

기본 작업(분류용 데이터)


다음 코드는 PCA입니다. 기본입니다.
  • 주성분도
  • 로드맵
  • 누적 공헌률 표시
  • 를 참고하십시오.
    from pcaumap import PCAUmap
    import sklearn.datasets
    
    dataset = sklearn.datasets.load_breast_cancer()
    
    pcau = PCAUmap()
    pcau.fit(dataset.data)
    pcau.pca_summary(c=dataset.target)
    



    다음은 PCA 결과를 표시하는 UMAP 코드입니다.
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(6, 6))
    plt.scatter(pcau.embedding[:, 0], pcau.embedding[:, 1], alpha=0.5, c=dataset.target)
    plt.grid()
    plt.show()
    

    아래 코드와 같이 scikit-learn의 분류 모델을 적용하면 분류 결과의 경관을 볼 수 있습니다.이 예는 파라미터가 전혀 조화롭지 않은 무작위 숲을 사용했지만 필요에 따라 고릴라로 조정된 임의의 모형을 사용할 수 있다.
    from sklearn.ensemble import RandomForestClassifier
    
    model = RandomForestClassifier()
    model.fit(dataset.data, dataset.target)
    
    pcau.map_predicted_values(model)
    

    기본 작업(회귀용 데이터)


    회귀용 데이터와 scikit-learn의 회귀 모델을 응용하면 아래와 같이 대체적으로 같은 코드로 회귀 결과의 경관을 조망할 수 있다.
    from pcaumap import PCAUmap
    import sklearn.datasets
    
    dataset = sklearn.datasets.load_diabetes()
    
    pcau = PCAUmap()
    pcau.fit(dataset.data)
    pcau.pca_summary(c=dataset.target)
    


    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(6, 6))
    plt.scatter(pcau.embedding[:, 0], pcau.embedding[:, 1], alpha=0.5, c=dataset.target)
    plt.grid()
    plt.show()
    
    from sklearn.ensemble import RandomForestRegressor
    
    model = RandomForestRegressor()
    model.fit(dataset.data, dataset.target)
    
    pcau.map_predicted_values(model)
    

    상세 설정


    PCAUMAP에 대한 간단한 설명입니다.더 자세한 설정은 github 창고https://github.com/maskot1977/PCAUMAP.git의 코드를 참조하십시오.

    좋은 웹페이지 즐겨찾기