ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [scikit-learn] Iris 데이터를 이용한 머신러닝_Kmeans
    AI 2020. 2. 25. 15:49

    비지도학습이란 ?

    • 지도학습과는 다르게 데이터에 대한 정답, 즉 라벨을 사용하지 않고 모델을 만들 수 있다.

     

     

    k-평균 군집화(K-means Clustering) ?

    • 주어진 데이터를 k개의 클러스터로 묶는 알고리즘
    • 각 클러스터와 거리 차이의 분산을 최소화하는 방식으로 동작한다.
    • k는 클러스터의 중심 수를 의미한다.

     

     

    Iris 데이터에 관한 전처리는 미리 되어 있다는 가정하에 사이킷런을 이용한 군집화를 진행한다.

     

     

    사이킷런 라이브러리의 k-평균 군집화 함수 불러오기

    from sklearn.cluster import KMeans

     

     

    k 값을 의미하는 군집의 개수를 설정하기

    k_means = KMeans(n_clusters=3)

    n_clusters는 k값을 의미하는 것으로 군집의 개수를 뜻한다.

     

     

    train 데이터를 이용해서 모델을 학습시키기

    k_means.fit(train_input)

     

     

    cluster의 군집 확인

    k_means.labels_

     

    여기에 나오는 라벨은 실제 Iris 종의 라벨을 의미하는 것이 아니다.

    군집이 0번째, 1번째 또는 2번째 인지를 나타내는 라벨이다.

    그렇기 때문에 이 값은 실행 할때마다 결과가 변동 될 수도 있다.

     

     

    각 군집의 종을 확인하기

    print("0 cluster: ", train_label[k_means.labels_ == 0])
    print("1 cluster: ", train_label[k_means.labels_ == 1])
    print("2 cluster: ", train_label[k_means.labels_ == 2])

    이 결과를 통해 몇번째 cluster에 몇번 라벨이 주로 분포해 있는지 확인 할 수 있다.

     

     

    test 데이터를 이용해서 결과값(label) 예측하기

    predict_cluster = k_means.predict(test_input)
    print(predict_cluster)

     

     

    보기 편하게 군집을 의미하는 값을 Iris의 종을 의미하는 값으로 변경하기

    import numpy as np
    
    np_arr = np.array(predict_cluster)
    np_arr[np_arr == 0], np_arr[np_arr == 1], np_arr[np_arr == 2] = 3, 4, 5
    np_arr[np_arr == 3] = 1
    np_arr[np_arr == 4] = 0
    np_arr[np_arr == 5] = 2

     

    predict_label = np_arr.tolist()
    print(predict_label)

     

     

    예측한 값과 실제 값을 비교하여 성능을 확인하기

    print(f"test accuracy: {np.mean(predict_label == test_label):.2f}")

     

     

     

    Iris 데이터를 이용해서 Kmeans clustering을 해보았다.

    이것은 단순히 한번 사용해 본것에 지나지 않으므로 추가적은 공부가 필요해 보인다.

     

     

     

     

     


    참고

    Kmeans 위키

    scikit-learn KMeans 사용법

    https://github.com/Lagom92/TIL/blob/master/AI/scikit-learn.ipynb

     

     

     

    'AI' 카테고리의 다른 글

    Pytorch Classifier Tutorial  (0) 2021.03.04
    교차 검증(Cross validation)  (0) 2020.08.21
    [scikit-learn] Iris 데이터를 이용한 머신러닝_KNN  (0) 2020.02.20
    파이썬으로 xlsx 파일과 csv 파일 다루기  (0) 2019.09.18
    pickle 모듈  (0) 2019.08.21

    댓글

© 2019 All rights reserved.