두 종류의 세포
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 51번째.
한 실험실에서 조직 샘플 569개를 측정했으며, 각 샘플에는 세포 측정값이 30개씩 있습니다. 그래프로 나타내기에는 너무 많고, 사람이 눈으로 분류할 수도 없습니다:
각 샘플의 진단 결과인 양성 또는 악성은 봉인된 봉투 안에 들어 있습니다. 진단 결과를 알지 못해도 세포들이 스스로 두 종류로 나뉠 수 있을까요?
PCA를 사용해 30개의 측정값을 축소하고, 남은 데이터로 군집화한 다음에야 봉투를 열어 세포들이 얼마나 가까이 모였는지 확인하세요.
챌린지
어려움이 프로그램은 유지할 분산의 비율(0.7 이상)을 입력받으며, 시작 코드는 차트를 설정합니다.
- 스케일링한 다음 해당 비율에 도달하는 최소 개수의 주성분을 유지합니다. 개수와 이 주성분들이 유지하는 비율을 출력합니다.
- k-means로 해당 주성분들을 군집화합니다: k = 2,
n_init=10,random_state=0. - 봉투를 엽니다. 각 군집에 대해 크기가 큰 순서대로 진단 결과와 다수 진단을 출력합니다. 그런 다음 군집의 다수 진단과 일치하는 비율인 일치도를 출력합니다.
- 군집별로 처음 두 주성분을 산점도로 표시하고,
mostly benign또는mostly malignant라고 라벨을 붙입니다. 범례를 표시하고 그래프를 띄웁니다.
처음 300개 샘플에 0.8을 입력하면 다음과 같습니다.
Components for 80% of the variance: 5 (they keep 0.844)
Cluster of 175: 146 benign, 29 malignant, so mostly benign
Cluster of 125: 8 benign, 117 malignant, so mostly malignant
Agreement with the diagnosis: 0.877그리고 해당 차트는 다음과 같습니다.
그러면 Coddy가 여러분의 결과를 설명합니다.
직접 해보기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# 조직 샘플 569개, 각 샘플의 세포 측정값 30개
cancer = load_breast_cancer(as_frame=True)
cells = cancer.data
# 봉인된 봉투: 각 샘플의 양성 또는 악성 여부. 맨 마지막에만 열어보세요.
diagnosis = pd.Series(cancer.target_names[cancer.target])
# 유지할 분산의 비율, 0.7 이상
share = float(input())
fig, ax = plt.subplots()
ax.set_title("Cells on Two Components")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러