Post

K-NN Model & Data Preprocessing

K-NN Model & Data Preprocessing

Chapter 1. 나의 첫 머신러닝

인공지능이란?

  • 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술.

머신러닝이란?

  • 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야.
  • 머신러닝의 대표적인 라이브러리는 사이킷런(scikit-learn)

딥러닝이란?

  • 머신러닝 알고리즘 중에 인공신경망을 기반으로 한 방법들을 통칭하여 딥러닝이라고 부른다.
  • 텐스플로우(구글), 파이토치(페이스북)의 오픈소스가 있음

Chapter 01-2 코랩과 주피터 노트북

코랩은 웹 브라우저에서 텍스트와 프로그램 코드를 자유롭게 작성할 수 있는 온라인 에디터라고 생각하면 된다.

텍스트 셀에 사용할 수 있는 마크다운

alt text

Chapter 01-3 마켓과 머신러닝

생선 분류 문제

  1. 도미 데이터
    1
    2
    
     bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0]
     bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]
    
  2. 데이터 산점도를 통해 선형성 확인
    1
    2
    3
    4
    5
    
     import matplotlib.pyplot as plt
     plt.scatter(bream_length, bream_weight)
     plt.xlabel('length')
     plt.ylabel('weight')
     plt.show()
    

    시각화 결과
    Scatter Plot Result

  3. 도미, 빙어 같이 산점도 찍기
    1
    2
    3
    4
    5
    
     plt.scatter(bream_length, bream_weight)
     plt.scatter(smelt_length, smelt_weight)
     plt.xlabel('length')
     plt.ylabel('weight')
     plt.show()
    

    빙어, 도미 plot result

  4. K-NN 분석 (k-최근접 이웃)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
     ### 데이터 전처리 ###
     length = bream_length + smelt_length 
     weight = bream_weight + smelt_weight 
     fish_data = [[l, w] for l, w in zip(length, weight)]
     # 리스트 병합 후 세로 방향으로 2차원 리스트 만들기
     fish_target = [1] * 35 + [0] * 14  # 정답(라벨링) 리스트 
    
     #### 모델 불러오기 #### 
     from sklearn.neighbors import KNeighborsClassifier
     model = KNeighborsClassifier() # default n_neighbors=5
     model.fit(fish_data, fish_target) # 타겟변수(종속변수)를 통한 알고리즘 훈련 
     model.score(fish_data, fish_target) # 모델 평가 점수(정확도)
     model.predict([[30, 600]]) # 테스트 데이터 넣어보기 
    
     kn49 = KNeighborsClassifier(n_neighbors=49) # 참고 데이터를 49개로 한 kn49 모델
     kn49.fit(fish_data, fish_target)
     kn49.score(fish_data, fish_target) # 0.71428
    
This post is licensed under CC BY 4.0 by the author.