고영민mandu05.com

둘러보기

  • 홈
  • 글
  • 프로젝트
  • 지식 그래프
  • 이력서
본문으로 건너뛰기
  1. 고영민
  2. /
  3. 글
고영민/글
© 2023-2026 Youngmin. All rights reserved.
rhdudals0505@naver.comGitHubLinkedIn
이 사이트는 Next.js로 만들었습니다.갱신 2026.09.26
글/AI · 머신러닝 공부 · ML 기초 · 실습

머신러닝을 위한 Python 생태계 학습 기록

2025-01-30·2분 읽기
Machine LearningPythonNumPyPandasScikit-learn
← 이전 글 Google ML Bootcamp 회고: Gemma-2B로 금융 자문 챗봇 만들기 다음 글 →머신러닝 두 번째: 예측과 분류

댓글 불러오는 중…

← 글

목차

  • NumPy
  • Pandas
  • Scikit-learn
  • 학습하면서 느낀 것들
  • 목표

머신러닝을 시작하면서 NumPy, Pandas, Scikit-learn이라는 3대 라이브러리를 학습했다. 각 라이브러리가 어떤 역할을 하고 어떻게 연결되는지 나중에 다시 볼 수 있게 정리해두려 한다.

NumPy

내 기준에서 NumPy는 ML 파이썬 워크플로우의 출발점에 가장 가까웠다. 다차원 ndarray 객체를 통해 C언어 수준의 속도로 벡터 및 행렬 연산을 수행한다. 이미지 데이터(픽셀 행렬), 텍스트 임베딩(벡터) 등 ML의 모든 데이터는 결국 NumPy 배열로 표현된다.

처음 배울 때 .shape이랑 브로드캐스팅 개념이 진짜 안 들어왔다. 벡터가 (100,)이랑 (100, 1)이랑 다르다는 거 직접 에러를 뱉어보고 나서야 체감했다.

python
1import numpy as np
2
3# NumPy로 간단한 배열 연산
4arr = np.array([[1, 2, 3], [4, 5, 6]])
5print("배열의 형태:", arr.shape)
6print("배열의 차원:", arr.ndim)
7
8# 복잡한 배열 연산
9matrix_mul = np.dot(arr, arr.T)
10print("행렬 곱셈 결과:\n", matrix_mul)

Pandas

Pandas는 NumPy 위에서 동작하며, DataFrame이라는 엑셀과 유사한 2차원 자료구조를 제공한다. SQL 어느 정도 해본 사람이면 생각보다 금방 익숙해진다. 어렵다기보다 함수 이름을 외우는 게 문제다.

python
1import pandas as pd
2
3# 데이터프레임 기본 조작
4df = pd.read_csv('my_dataset.csv')
5
6# 결측값 처리 및 고급 분석
7df_cleaned = df.dropna()
8grouped_data = df_cleaned.groupby('category').agg({
9    'value': ['mean', 'median', 'std']
10})
11print("카테고리별 통계:\n", grouped_data)

Scikit-learn

Scikit-learn은 다양한 머신러닝 알고리즘을 일관된 인터페이스로 제공한다. 어떤 모델을 쓰든 .fit()으로 학습하고 .predict()로 예측하는 구조가 통일돼 있어서, 다른 모델로 바꾸는 게 코드 한 줄이라는 게 편했다.

python
1from sklearn.model_selection import train_test_split
2from sklearn.preprocessing import StandardScaler
3from sklearn.linear_model import LogisticRegression
4from sklearn.metrics import classification_report
5
6# 데이터 분할 및 전처리
7X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
8
9# 데이터 스케일링
10scaler = StandardScaler()
11X_train_scaled = scaler.fit_transform(X_train)
12X_test_scaled = scaler.transform(X_test)
13
14# 로지스틱 회귀 모델 학습
15model = LogisticRegression(max_iter=1000)
16model.fit(X_train_scaled, y_train)
17
18# 모델 평가
19predictions = model.predict(X_test_scaled)
20print("분류 보고서:\n", classification_report(y_test, predictions))

학습하면서 느낀 것들

세 라이브러리 중에 NumPy가 개념 잡기가 가장 까다로웠다. Scikit-learn은 .fit() → .predict() 인터페이스가 통일돼 있어서 오히려 빨리 익숙해졌다.

목표

앙상블(Random Forest, XGBoost) 쪽 공부 이어가면서 Kaggle 대회 하나 참가해보는 게 목표다.