scikit-learn은 파이썬 과락 라이브러리인 numPy와 SciPy를 기반으로 만들었다.
scikit-learn을 잘 활용할 수 있도록 NumPy, SciPy, matplotlib, pandas, mglearn들의 개념을 알아보자.
NumPy
넘파이는 다차원 배열을 위한 기능과 선형 대수 연산과 푸리에 변환같은 고수준 수학 함수와 유사 난수 생성기를 포함한다.
사용
- 다차원 배열을 위한 기능
- 선형 대수 연산
- 푸리에 변환
- 고수준 수학 함수와 유사 난수 생성기
scikit-learn에서 넘파이 배열은 기본 데이터 구조이다.
scikit-learn은 넘파이 배열 형태의 데이터를 입력으로 받는다.
그렇기 때문에 우리가 사용할 데이터는 모두 넘파이 배열로 변환되어야 한다.
NumPy의 핵심 기능
- 다차원(n-차원) 배열인 ndarray 클래스
위의 배열의 모든 원소는 동일한 데이터 타입이어야 한다.
NumPy 배열의 예
import numpy as np
x = np.array([[1,2,3],[4,5,6]])
print("x:\n", x)
SciPy
SciPy는 과학 계산용 함수를 모아놓은 파이썬 패키지이다.
기능
- 고성능 선형 대수
- 함수 최적화
- 신호 처리
- 특수한 수학 함수와 통계 분포
SciPy의 scipy.sparse 기능은 scikit-learn에서 데이터를 표현하는 또 하나의 방법인 희소 행렬 기능을 제공한다.
희소 행렬은 0을 많이 포함한 2차원 배열을 저장할 때 사용한다.
넘파이와 사이파이 비교
넘파이
import numpy as np
# 대각선 원소는 1이고 나머지는 0인 2차원 넘파이 배열을 만든다.
identity_matrix = np.eye(4)
print(identity_matrix)
사이파이
from scipy import sparse
#넘파이 배열을 CSR 포맷의 사이파이 희박 행렬로 변환함
#0이 아닌 원소만 저장됨
sparse_matrix = sparse.csr_matrix(eye)
print("\nSciPy의 CSR 행렬:\n",sparse_matrix)
matplotlib
파이썬의 대표적인 과학 계산용 그래프 라이브러리이다.
선 그래프, 히스토그램, 산점도 등을 지원하며 고품질의 그래프를 그려준다.
matplotlib 사용
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
#-10에서 10까지 100개의 간격으로 나눠진 배열을 생성
x = np.linspace(-10,10,100)
#사인 함수를 사용하여 y 배열을 생성
y = np.sin(x)
#plot 함수는 한 배열의 값을 다른 배열에 대응해서 선 그래프를 그림
plt.plot(x,y,marker="x")
%matplotlib inline 명령을 사용하면 브라우저에서 바로 이미지를 볼 수 있다.
pandas
pandas는 데이터 처리와 분석을 위한 파이썬 라이브러리이다.
간단히 말하면 pandas의 DataFrame은 엑셀의 스프레드시트와 비슷한 테이블 형태라고 할 수 있다.
pandas는 이 테이블을 수정하고 조작하는 다양한 기능을 제공한다.
특히, SQL처럼 테이블에 쿼리나 조인을 수행할 수 있다.
넘파이와는 달리 각 열의 타입이 달라도 상관없다.
pandas 사용 예
import pandas as pd
#회원정보가 들어간 간단한 데이터셋을 생성함
data = {"Name": ["John","Anna","Peter","Linda"],
"Location":["New York","Paris","Berlin","London"],
"Age":[24,13,53,33]
}
data_pandas = pd.DataFrame(data)
print(data_pandas)
이 테이블에 질의를 하는 방법을 알아보자.
#Age 열의 값이 30 이상인 모든 행을 선택하는 질의
data_pandas[data_pandas.Age > 30]
'머신러닝&딥러닝' 카테고리의 다른 글
[ML] 일반화, 과대 적합, 과소 적합 (0) | 2023.09.15 |
---|---|
[ML] 지도학습의 분류와 회귀 개념 정리 (0) | 2023.08.30 |
[ML] 붓꽃 데이터로 알아보는 머신러닝 (0) | 2023.08.30 |