본문 바로가기
혼공학습단

[혼공머신] 1주차_코랩사용법과 데이터 전처리

by 섀싹 2025. 1. 10.

여름에도 진행했던 혼공학습단!!

여름동안 그래도 책 한권을 꾸준히 공부할 수 있는 동기부여가 되어서 참 좋은 활동이었다고 느껴서

겨울에도 신청해야지~ 하고 있다가 신청했다.

 

이번 겨울에 신청한 책은

'혼자 공부하는 머신러닝+딥러닝' 이다.

2024년 동안 머신러닝과 딥러닝을 지겹도록 배우긴 하였으나 머릿속에 뒤죽박죽 정리가 제대로 안된 것 같아 한번 제대로 정리해보면 좋겠다고 생각하여 이 책으로 결정했다.

1. 나의 첫 머신러닝

1-1) 인공지능과 머신러닝, 딥러닝

인공지능 (Artificial intelligence) 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술
- 인공일반지능(강인공지능) : 사람과 구분하기 어려운 지능을 가진 컴퓨터 시스템
- 약인공지능 : 현실에서 우리가 마주하는 인공지능으로 특정 분야에서 사람의 일을 도와주는 보조 역할
머신러닝 (machine learning) 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 연구하는 분야
- 대표 라이브러리 : 사이킷런(scikit-learn)
딥러닝 (deep learning) 많은 머신러닝 알고리즘 중에  인공신경망(artificial neural network)을 기반으로 한 방법들을 통칭
- 대표 라이브러리 : 텐서플로(tensorflow), 파이토치(pytorch) 

 

1-2) 코랩과 주피터 노트북

 

코랩에 관한 기본적인 내용

 

1-3) 마켓과 머신러닝

- 도미와 빙어 분류하기

  • 사이킷런 패키지를 사용하기 위해선 각 특성의 리스트를 세로 방향으로 늘어뜨린 2차원 리스트를 만들어야 한다. 즉, 하나의 데이터 포인트가 행으로 들어가고 모든 데이터 포인트가 한번 더 리스트로 감싸져야 한다는 뜻

- K-최근접 이웃 알고리즘

  • 가장 간단한 머신러닝 알고리즘 중 하나. 어떤 규칙을 찾기 보다도 전체 데이터를 메모리에 가지고 있고 새로운 데이터에 대해 가장 가까운 k개의 데이터와의 직선거리를 기준으로 분류해줌. 기본값 5
  • p는 매개변수로 거리 재는 방법 지정. 1은 맨해튼, 2는 유클리디안. 기본값 2
  • n_jobs는 매개변수로 사용할 CPU코어 지정. -1이면 모든 CPU코어 사용. 기본값 1
  • fit() : 사이킷런 모델 훈련시 사용하는 메서드
  • predict() : 사이킷런 모델을  훈련하고 예측할 때 사용하는 메서드. 특성 데이터 하나만 매개변수로 받음.
  • score() : 모델의 성능측정. 처음 두 매개변수로 특성과 정답 데이터 전달. predict()로 먼저 예측 수행한 다음 분류 모델의 경우 정답과 비교하여 올바르게 예측한 개수의 비율 반환 

2. 데이터 다루기

2-1) 훈련 세트와 테스트 세트

지도 학습 타깃 데이터가 존재. 입력과 타깃을 전달하여 모델을 훈련한 후 새로운 데이터를 예측하는데 활용
비지도 학습 타깃 데이터가 없음. 입력 데이터에서 어떤 특징을 찾는데 주로 활용
훈련 세트 모델을 훈련할 때 사욯하는 데이터. 클수록 좋음
테스트 세트 전체 데이터에서 20~30%를 테스트 세트로 보통 사용. 전체데이터가 매우 클 경우 1%만 덜어내도 괜찮음. 

 

- 훈련 데이터와 테스트데이터를 선별하는 방법

넘파이에서 random seed를 설정하고 index를 할당한 뒤 index를 무작위로 shuffle 해서 훈련데이터와 테스트데이터 분할

 

-numpy

seed() 난수를 생성하기 위한 정수 초깃값 지정
arange() 일정한 간격의 정수 또는 실수 배열 생성 
shuffle() 주어진 배열을 랜덤하게 섞음. 다차원 배열일 경우 첫번째 축에 대해서만 섞음.  

 

2-2) 데이터 전처리

- 넘파이의 columns_stack() : 전달받은 리스트를 일렬로 세운 다음 차례대로 나란히 연결

- np.columns.stack() 이나 np.concatenate() 모두 튜플로 전달해야함 (안에 튜플로 들어가야함)

- 특성 간 스케일이 다른 경우(데이터를 표현하는 기준이 다를 경우) 알고리즘이 올바르게 예측 불가능. 특히 거리기반일때.

- 가장 많이 사용하는 방법이 표준점수 방법.

- 테스트 세트도 훈련 세트의 평균과 표준편차를 활용하여 변환해야함. 훈련 후 테스트 세트를 평가할 때도 훈련 세트의 기준으로 테스트 세트를 변환해야 함

데이터 전처리 머신러닝 모델에 훈련 데이터를 주입하기 전에 가공하는 단계
표준점수 훈련 세트의 스케일을 바꾸는 대표적 방법. 특성의 평균을 빼고 표준편차로 나눠줌
브로드캐스팅 크기가 다른 넘파이 배열에서 자동으로 사칙 연산을 모든 행이나 열로 확장하여 수행

 

- scikit-learn

train_test_split() 훈련 데이터를 훈련 세트와 테스트 세트로 나눔
- test_size = 0.25
- shuffle = True
- stratify = 클래스 비율에 맞게 훈련 테스트 나눠줌
kneighbors() 가장 가까운 이웃을 찾아 거리와 이웃 샘플의 인덱스 반환.

 

 

- 기본 숙제

 

- 추가 숙제

  • 지도 학습이란 샘플의 입력과 타깃을 알고 있을 때 사용할 수 있는 학습 방법
  • 샘플링 편향 : 훈련 세트와 테스트 세트에 샘플이 골고루 섞여 있지 않아 샘플링이 한쪽으로 치우친 현상
  • 사이킷런은 입력 데이터의 행이 샘플, 열이 특성으로 구성되어 있을 것으로 기대한다.