머신러닝 및 데이터 과학 맥락에서의 NumPy
NumPy 는 머신러닝 알고리즘의 효율성에 어떻게 기여하나요?
답변:
NumPy 는 Python 루프보다 훨씬 빠른 고도로 최적화된 배열 연산 및 벡터화된 계산을 제공합니다. 이러한 효율성은 대규모 데이터셋을 처리하고 행렬 곱셈, 요소별 연산, 통계 계산과 같은 ML 알고리즘에 공통적인 수학 연산을 수행하는 데 중요합니다.
NumPy 의 '브로드캐스팅 (broadcasting)' 개념과 데이터 과학에서의 관련성을 설명해주세요.
답변:
브로드캐스팅은 산술 연산 중에 NumPy 가 다른 모양의 배열을 어떻게 처리하는지를 설명합니다. 이는 값의 여러 복사본을 명시적으로 생성하지 않고도 다른 크기의 배열에 대해 연산을 수행할 수 있도록 하여 코드를 더 간결하고 메모리 효율적으로 만듭니다. 이는 스칼라를 배열에 적용하거나 다른 차원의 배열을 결합하는 데 필수적입니다.
데이터 과학에서 수치 데이터를 위해 Python 리스트 대신 NumPy 배열을 선호하는 시나리오는 무엇인가요?
답변:
NumPy 배열은 뛰어난 성능, 메모리 효율성 및 풍부한 수학 함수 세트로 인해 수치 데이터에 선호됩니다. NumPy 배열은 동질적 (동일한 타입의 요소를 저장) 이어서 최적화된 C 레벨 연산을 허용하는 반면, Python 리스트는 이질적인 데이터를 저장할 수 있고 수치 계산에 덜 효율적입니다.
일반적인 머신러닝 파이프라인의 전처리 단계에서 NumPy 는 어떻게 사용되나요?
답변:
NumPy 는 데이터 정리, 변환 및 특성 공학 (feature engineering) 에 광범위하게 사용됩니다. 여기에는 누락된 값 처리 (예: NaN 대체), 특성 스케일링 (정규화/표준화), 모델 입력을 위한 데이터 재구성, 수치 열에 대한 통계 집계 수행 등이 포함됩니다.
NumPy 가 머신러닝의 기초가 되는 선형 대수 연산 구현을 어떻게 지원하는지 설명해주세요.
답변:
NumPy 의 numpy.linalg 모듈은 행렬 곱셈 (@ 연산자 또는 np.dot), 역행렬, 행렬식, 고유값 및 특이값 분해와 같은 필수 선형 대수 연산을 위한 함수를 제공합니다. 이러한 연산은 선형 회귀, PCA 및 신경망과 같은 알고리즘의 기초입니다.
이미지 데이터 (예: 컴퓨터 비전) 로 작업할 때 NumPy 배열은 일반적으로 어떻게 활용되나요?
답변:
이미지 데이터는 일반적으로 다차원 NumPy 배열로 표현되며, 여기서 차원은 높이, 너비 및 색상 채널 (예: RGB 의 경우 (H, W, 3)) 에 해당합니다. NumPy 는 배열 조작 기능을 통해 크기 조정, 자르기, 회전, 필터 적용 및 색 공간 간 변환과 같은 작업을 효율적으로 수행할 수 있도록 합니다.
NumPy 는 Pandas 및 Scikit-learn 과 같은 다른 인기 있는 데이터 과학 라이브러리와 어떻게 통합되나요?
답변:
NumPy 는 Pandas 와 Scikit-learn 모두의 기본 배열 라이브러리입니다. Pandas DataFrame 및 Series 는 NumPy 배열 위에 구축되며, Scikit-learn 모델은 주로 학습 및 예측을 위한 입력으로 NumPy 배열을 기대합니다. 이러한 원활한 통합을 통해 효율적인 데이터 조작 및 모델 구축이 가능합니다.
NumPy 의 '벡터화 (vectorization)' 개념과 성능에 중요한 이유를 설명해주세요.
답변:
벡터화는 명시적인 루프를 사용하여 요소별이 아닌 전체 배열에 대해 연산을 수행하는 프로세스입니다. NumPy 는 최적화된 C 또는 Fortran 코드로 연산을 구현하여 이를 달성합니다. 이는 Python 인터프리터 오버헤드를 피함으로써 특히 대규모 데이터셋의 실행 시간을 크게 줄이고 성능을 향상시킵니다.
데이터 과학에서 np.random의 목적은 무엇이며 일반적인 사용 사례를 제공해주세요.
답변:
np.random은 의사 난수 (pseudo-random numbers) 를 생성하고 다양한 확률 분포에서 샘플링하는 함수를 제공합니다. 모델 가중치 초기화, 데이터셋을 학습/테스트 세트로 분할, 데이터 시뮬레이션, 정규화 또는 데이터 증강을 위한 노이즈 추가와 같은 작업에 중요합니다.
2D 배열로 표현된 데이터셋에서 특정 특성 (열) 의 평균 및 표준 편차를 계산하기 위해 NumPy 를 어떻게 사용하나요?
답변:
열이 특성인 2D NumPy 배열 data가 있다고 가정할 때, data[:, 1].mean() 및 data[:, 1].std()를 사용하여 특정 특성 (예: 두 번째 특성, 인덱스 1) 의 평균과 표준 편차를 계산할 수 있습니다. 슬라이싱 [:, 1]은 두 번째 열에 대한 모든 행을 선택합니다.