본문 바로가기
머신러닝&딥러닝

[ML] NumPy, SciPy, matplotlib, pandas 개념 정리

by IT 정복가 2023. 8. 27.
728x90

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]

 

728x90