본문 바로가기
Study/[도서] 혼자 공부하는 머신러닝+딥러닝

[혼자 공부하는 머신러닝+딥러닝] 데이터 전처리

by CodeNook; 2024. 6. 20.
반응형

데이터 전처리와 K-최근접 이웃 알고리즘

 

 

안녕하세요! 오늘은 데이터 전처리와 K-최근접 이웃(K-NN) 알고리즘에 대해 알아보겠습니다. 이번 포스팅에서는 데이터 전처리의 중요성과 K-NN 알고리즘의 개념을 쉽게 설명하겠습니다.

데이터 전처리

데이터 전처리는 머신러닝 모델의 성능을 높이는 중요한 과정입니다. 전처리는 데이터의 품질을 높이고, 모델이 데이터를 효과적으로 학습할 수 있도록 돕습니다. 특히, 특성(feature)들의 스케일이 서로 다를 때, 이를 맞추는 작업이 필요합니다.

예제: 생선 분류

우리는 도미와 빙어를 분류하는 문제를 다루고 있습니다. 생선의 길이와 무게 데이터를 사용하여 도미인지 빙어인지를 예측합니다.

데이터 준비

먼저, 생선의 길이와 무게 데이터를 파이썬 리스트로 준비합니다.

도미_길이 = [25.4, 26.3, 26.5, ...] 
도미_무게 = [242.0, 290.0, 340.0, ...] 
빙어_길이 = [10.0, 11.2, 12.0, ...] 
빙어_무게 = [7.0, 9.0, 10.0, ...]

K-최근접 이웃(K-NN) 알고리즘

K-NN 알고리즘은 새로운 데이터 포인트를 예측하기 위해 가장 가까운 K개의 이웃을 참조하는 방식입니다.

작동 원리

  1. 데이터 준비: 분류하고자 하는 데이터와 라벨(정답)이 있는 학습 데이터를 준비합니다.
  2. 거리 계산: 새로운 데이터 포인트와 학습 데이터의 각 포인트 간의 거리를 계산합니다.
  3. K개의 이웃 선택: 가장 가까운 K개의 이웃을 선택합니다.
  4. 투표: 선택된 K개의 이웃이 어떤 클래스에 속하는지 투표하여 예측합니다.

예제: 사이킷런을 이용한 K-NN

사이킷런 라이브러리를 사용하면 K-NN 알고리즘을 쉽게 구현할 수 있습니다.

  1. 데이터 준비:
    from sklearn.model_selection import train_test_split 
    from sklearn.neighbors import KNeighborsClassifier 
    import numpy as np 
    
    # 도미와 빙어의 길이와 무게 데이터 
    length = [25.4, 26.3, 26.5, 27.0, 27.6, 28.0, 29.0, 29.7, 29.9, 30.0, 30.5, 31.0, 31.5, 32.0, 32.5, 10.0, 11.2, 11.3, 11.8, 12.0, 12.2, 12.4, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0] 
    weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 540.0, 500.0, 475.0, 500.0, 500.0, 340.0, 7.0, 9.0, 9.8, 10.0, 10.5, 11.0, 11.2, 12.0, 12.2, 12.4, 13.0, 14.0, 15.0, 16.0, 17.0] 
    fish_target = [1] * 15 + [0] * 15 
    fish_data = np.column_stack((length, weight)) 
    train_input, test_input, train_target, test_target = train_test_split(fish_data, fish_target, test_size=0.3, random_state=42)
  2. K-NN 모델 학습:
    knn = KNeighborsClassifier(n_neighbors=3)
    knn.fit(train_input, train_target)
  3. 모델 예측:
    new_fish = np.array([[20, 150]]) 
    prediction = knn.predict(new_fish) 
    print("예측된 결과:", prediction)
  4. 모델 평가:
accuracy = knn.score(test_input, test_target) 
print("모델 정확도:", accuracy)

데이터 전처리의 중요성

K-NN 알고리즘은 데이터의 스케일에 매우 민감합니다. 따라서, 데이터를 전처리하여 스케일을 맞추는 것이 중요합니다. 이를 위해, 평균을 빼고 표준편차로 나누어 표준점수로 변환하는 방법을 사용할 수 있습니다.

결론

K-최근접 이웃(K-NN) 알고리즘은 단순하면서도 강력한 성능을 제공하는 머신러닝 알고리즘입니다. 새로운 데이터 포인트를 예측할 때, 가장 가까운 K개의 이웃을 참조하여 예측하는 방식으로 작동합니다. 이해하기 쉽고 구현하기 간단하다는 장점이 있어 머신러닝을 처음 접하시는 분들께 매우 유용합니다.

이제 여러분도 K-NN 알고리즘을 활용해 다양한 분류 문제를 해결해보세요! 다음 포스팅에서는 더 흥미로운 알고리즘과 예제를 소개해드리겠습니다. 감사합니다!

반응형