-
패스트캠퍼스 환급챌린지 34일차 미션 (3월 5일) : 딥러닝·인공지능 Signature 초격차 패키지 Online. 강의 후기패스트캠퍼스 챌린지 2024. 3. 5. 13:43
자, 오늘은
CH04-02. 구현을 위한 코드의 이해
&
CH05-01. 인공신경망 코드를 위한 주요 코드의 이해(1)
CH04-02. 구현을 위한 코드의 이해
어제 본 클러스터 주요 코드를 한번 봐보자!
from sklearn.preprocessing import StandardScalerfrom sklearn.cluster import KMeansfrom sklearn.metrics import silhouette_samples, silhouette_score
X = df.iloc[:,3:]sc = StandardScaler()X = sc.fit_transform(X)
model = KMeans(n_clusters = 2, random_state = 42)y_preds = model.fit_predict(X)df['cluster']=y_preds
print('실루엣 점수: {0:.4f}'.format(silhouette_score(X, y_preds)))이번에 사용한 클러스터링 알고리즘은 사이킨런의 KMeans 알고리즘을 써볼 것이다.
이 KMeans는 데이터가 분포되어있는걸 보고 거리를 계산하다.
거리가 가까우면 같은 클러스터, 근데 이 K이가 몇개의 클러스터를 만들어줄 지 파라미터 역할을 한다.
K = 3 이면 3개의 그룹으로 묶어줄 것이다.
즉, 이 KMeans 알고리즘은 거리를 계산하여 그룹핑을 지어주는 알고리즘이기 때문에
K-means 알고리즘을 적용하기 전에 스탠다드 스케일러로 스케일을 일단 맞춰야한다.
그다음 실루엣 계수를 통해 실루엣 점수를 나타내보자.
X는 2개의 컬럼을 가지고 있다.
실루엣 점수는 0부터 1까지 값을 가지고 있고 그렇게 좋은 클러스터는아니다(0.3 이 나옴)

애뉴얼 인컴과 스펜딩 스코어로 클러스터 스캐터 플롯으로 만들어 보니 우리가 만든 K값이 적합하지 않았다.
그렇다면! K 값을 돌려보면서 어떤 값이 적합한지 한번 봐보자(그에 따른 실루엣 점수도!)
silhouette_avg = []for k in range(10):model = KMeans(n_clusters = k+2, random_state = 42)y_preds = model.fit_predict(X)score = silhouette_score(X, y_preds)silhouette_avg.append(score)print("군집개수: {0}개, 평균 실루엣 점수: {1:.4f}".format(k+2, score))
위의 이미지에서 보이는 것처럼 우리가 위에서 K값의 변화량에 따라 실루엣 점수를 같이 보자고 했으니,
for문 안에서 K를 올려가면서 실루엣 점수를 뽑아보면 아래와 같다.

자, 이렇게 보면 뭔말인지 모르겠으니 시각화를 통해 알아보자.

K 가 5일 때 실루엣 점수가 가장 높다라는 것을 알 수있다.
model = KMeans(n_clusters=5, random_state=42)y_preds = model.fit_predict(X)df['cluster'] = y_preds자 이제, 클러스터가 5가 실루엣 점수가 잘 나온다는 걸 알았으니, 다시 학습을 시킨 다음,
예측결과로 얻은 값을 이 클러스터라는 컬럼에다가 다시 넣어보자.

클러스터를 얻었으면 이제부터 시작이다.!
소득은 높은데 점수는 낮은 그룹(주황), 등등 구룹마다 작명을 해주고 앞으로 고객들을 관리할 때 이런 유형의 사람이므로
마케팅은 이런식으로 해야된다 라고 정책을 정한다.
CH05-01. 인공신경망 코드를 위해 주요 코드의 이해(1)
이번에는 인공신경망을 쓴 분류기 실습을 해보자.
#실습 목표#pytorch의 주요 기능을 이해한다.#주어진 데이터셋을활용하여 인공신경망을 설계한다.#인공신경망 학습 과정을 코드로 작성하고, 학습이 완료된 모델을 생성한다.
데이터셋 클래스는 학습을 할 때 쓰는 데이터의 피쳐(x)와 타겟(y)의 페어로 이루어져있다.
이 데이터셋은 쌍 형태로 관리를 해서 계속 학습하게 된다.
데이터로더: 학습할 때 각각의 인스턴스에 쉽게 접근할 수 있도록 순회 가능한 객체(이터러블) 객체를 만들어준다.
이터러블한 오브젝트를 만들면 무엇을 해주나?
★ ★ ★ ★ Define
1. shuffling : 무작위 섞고,
2. batch_size: 배치 사이즈 만들어주고,...
3. number of processes
4. and much more
자 요약하자면, 파이토치에서의 dataset은
기존의 x와 y를 하나씩 넣어주는 것이 아니라,
dataset이라는 클래스를 통해 관리를 하고 있다.(x,y,를 페어로 데이터셋 클래스의 역할)
dataloader라는 것은 데이터셋이 엑스와 와이에 대해 설정을 해준 값, 초기화가 되면 x,y에는 여러개의 값이 들어있을텐데
배치사이즈(뭉텅이) 를 만들어주거나 데이터를 섞어주는 역할을 한다.
데이터 셋과 데이터로더는 어떻게 만드나?
나중에 알아보자. 무튼 이게 바로 데이터 로더와 데이터 셋의 정의다.
34일차 끝.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글