본문 바로가기

AI Theory/key concept of AI

사이킷런 머신러닝

사이킷런 머신러닝

 

머신러닝의 분류

데이터로부터 학습하고 패턴을 인식하여 예측, 분석, 의사 결정 등을 수행하는 인공지능 분야

 

  • 지도학습
    • 분류: 예측해야할 데이터가 범주형(categorical) 변수일때
    • 회귀: 예측해야할 데이터가 연속적인 값 일때 
    • 예측: 과거 및 현재 데이터를 기반으로 미래를 예측하는 과
  • 비지도학습
    • 클러스터링: 특정 기준에 따라 유사한 데이터끼리 그룹화
    • 차원축소: 고려해야할 변수를 줄이는 작업, 변수와 대상간 진정한 관계를 도출
  • 강화학습
    • 환경으로부터의 피드백을 기반으로 행위자(agent)의 행동을 분석하고 최적화
    • 시행착오, 지연보상
    • Monte carlo methods, Q-learining, policy graidient methods 등등...

 

머신러닝 알고리즘을 선택하는 기준

데이터의 크기, 품질, 특성, 가용 연산 시간, 작업의 긴급성, 데이터를 이용해 하고싶은 것 등등 다양한 기준으로 머신러닝 알고리즘을 선택할 수 있다.

 

이미지 출처(https://blogs.sas.com/content/saskorea/2017/08/22/%EC%B5%9C%EC%A0%81%EC%9D%98-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%84-%EA%B3%A0%EB%A5%B4%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%B9%98%ED%8A%B8/)


사이킷런

파이썬 기반의 머신러닝 라이브러리

매우 다양한 모듈들(API)을 갖고 있음

https://scikit-learn.org/stable/modules/classes.html

 

 

사이킷런의 datasets 모듈

크게 dataset loaders, dataset fetchers로 나뉨

  • dataset loaders: 사전에 정의된 데이터셋 로드하는 함수
  • dataset fetchers: 외부에 있는 데이터를 설치하고 로드하는 함수

 

사이킷런 api 대략적 구조

transformer()

모델링 전 데이터 가공(ETL, Extract transform load) 수행

estimator()

데이터셋을 기반으로 머신러닝 모델 파라미터를 추정하는 객체(모델 훈련, 예측 수행)

훈련: estimator의 fit()

예측: estimator의 predict()

 

pipeline()

여러 transformer와 estimator를 연결해 하나의 모델을 만드는데 사용

 

pipeline을 통해 데이터 전처리와 모델링 단계를 연결하는 이유?

 

데이터 전처리와 모델링 단계가 분리되어 있는 경우, 전처리된 데이터를 따로 저장하고 관리해야하며 이후 모델링 단계에서 이를 활용하는 데 어려움이 있을 수 있고 작은 오류도 전체적인 결과에 큰 영향을 끼칠 가능성이 높음

 

그러나 파이프라인을 사용해 데이터전처리와 모델링 단계를 연결하면, 위와 같은 문제를 해결할 수 있음.

 

또한 파이프라인을 사용하면 각 단계의 설계 및 테스트를 쉽게 할 수 있고, 모든 작업이 하나의 객체에 묶이므로 코드 관리가 효율적이고 복잡성을 줄일 수 있음.


사이킷런 라이브러리 사용하기

1. 데이터셋 선택

  • 사이킷런 dataset 모듈이 제공하는 예제 데이터
  • 그외 외부 데이터
    • numpy의 ndarray, pandas의 dataframe, scipy의 sparse matricx 등
    • ! 리스트는 사용 불가! ndarray 형태로 변경해야 함

 

사이킷런에서의 데이터 표현법

특성 행렬(Feature matrix)타겟 벡터(target vector)로 표현

 

특성 행렬(Feature matrix)

  • 입력 데이터
  • n_samples: 행 개수(표본 개수)
  • n_features: 열 개수(특성 개수)

 

타겟 벡터(target vector)

  • 입력 데이터의 정답(label)
  • 특성 행렬로부터 예측하고자 하는 것
  • n_samples: 벡터의 길이(라벨의 개수)

 

2. 데이터 전처리

  • 사이킷런의 transformer 모듈 사용해 전처리 수행
  • 정규화(StandardScaler), 스케일링(MinMaxScaler) 등등...

데이터 분할

사이킷런의  train_test_split() 함수

훈련 데이터와 테스트 데이터로 분리

일반적으로 8:2로 분리

 

3. 모델 훈련

  • 사이킷런의 estimator 모듈 사용
  • 모델 훈련(fit) 및 예측(predict) 수행

4. 모델 평가

 

lms 10

 

사이킷런으로 회귀모델 생성하기

# import
import numpy as np
import matplotlib.pyplot as plt

# 데이터 생성
r = np.random.RandomState(10)
x = 10 * r.rand(100)
y = 2 * x - 3 * r.rand(100)

#분포 확인
print('x:',x[:10])
print('y:',y[:10])

plt.scatter(x,y)

# linearRegressor

from sklearn.linear_model import LinearRegression
model = LinearRegression() #모델 객체 생성
model

#리스트형태인 데이터를 numpy를 이용해 ndarray로 변경 (100,0) >> (100, 1)
X = x.reshape(100,1)

model.fit(X,y)

# 새 데이터 생성 후 예측 수행
x_new = np.linspace(-1, 11, 100) # -1부터 11까지 구간 100개 나누어 numpy 배열 생성
X_new = x_new.reshape(100,1)
y_new = model.predict(X_new)

# 데이터 형태 변경
X_ = x_new.reshape(-1,1)
X_.shape

#모델 평가: RMSE 사용
from sklearn.metrics import mean_squared_error

# y 값 계산
y_ = 2 * x_new - 3 * r.rand(100)

error = mean_squared_error(y_, y_new)

print(error)

 

사이킷런 알고리즘 cheat sheet

'AI Theory > key concept of AI' 카테고리의 다른 글

딥네트워크  (0) 2023.07.03
데이터 전처리 기법들  (0) 2023.06.28
배열(array)과 파이썬 그래프  (0) 2023.06.27
파이썬 더 잘 알기  (0) 2023.06.26
[boostcourse beyond ai] 딥러닝의 역사  (0) 2023.05.28