일상에 필요한 정보들/컴퓨터, IT관련
파이썬으로 머신러닝 기초 다지기
불타는 신디
2025. 5. 17. 14:50
728x90
반응형
어느 흐린 월요일 아침, ‘지수’는 데이터 시각화까지 마친 뒤 잠시 커피를 홀짝이며 중얼거렸습니다.
“이제 숫자와 그래프를 넘어서, 컴퓨터가 스스로 배우도록 해보고 싶어!”
이렇게 시작된 오늘의 이야기, “파이썬으로 머신러닝 기초 다지기” 여정을 함께 걸어보겠습니다.
🤖 1. 머신러닝이란?
머신러닝(Machine Learning)은 데이터에서 패턴을 찾아 모델이 스스로 예측·분류·군집화 등을 수행하도록 학습시키는 기술입니다.
- 지도학습: 입력(특징)과 출력(정답)이 있는 데이터를 학습 → 예) 스팸 메일 분류, 주택 가격 예측
- 비지도학습: 정답 없이 데이터 간 유사도만으로 학습 → 예) 고객 세그먼트 군집화
- 강화학습: 보상을 최대화하는 행동을 스스로 탐색 → 예) 게임 AI, 자율주행
지수는 오늘 간단한 지도학습으로 꽃의 품종을 예측해보려고 합니다.
⚙️ 2. 개발 환경 준비
pip install scikit-learn pandas matplotlib seaborn
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix
# 한글 폰트 설정 (Windows 예시)
plt.rc('font', family='Malgun Gothic')
지수의 팁
“가상환경을 만들어 두면, 프로젝트별 라이브러리 충돌 없이 깔끔히 관리할 수 있어요.”
🌸 3. 데이터 불러오기: Iris 꽃 데이터셋
Scikit-learn에 내장된 Iris 데이터를 사용합니다.
iris = datasets.load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.Series(iris.target, name='species')
df = pd.concat([X, y], axis=1)
df.head()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) species
5.1 | 3.5 | 1.4 | 0.2 | 0 |
4.9 | 3 | 1.4 | 0.2 | 0 |
4.7 | 3.2 | 1.3 | 0.2 | 0 |
4.6 | 3.1 | 1.5 | 0.2 | 0 |
5 | 3.6 | 1.4 | 0.2 | 0 |
- species 레이블: 0=Setosa, 1=Versicolor, 2=Virginica
지수의 깨달음
“데이터를 프레임으로 보니, 다룰 때 훨씬 직관적이네요.”
🧹 4. 데이터 전처리
- 학습용/검증용 분리
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42, stratify=y
)
- 특징 스케일링
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
지수의 팁
“특징마다 단위가 다르면, 거리 기반 알고리즘의 성능이 떨어질 수 있어요. 스케일링은 필수!”
🚂 5. 모델 학습: k-최근접 이웃 (KNN)
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train_scaled, y_train)
- n_neighbors=3: 주변 3개 샘플의 다수결로 분류
📊 6. 예측 및 평가
y_pred = knn.predict(X_test_scaled)
print("혼동 행렬:\n", confusion_matrix(y_test, y_pred))
print("\n분류 리포트:\n", classification_report(y_test, y_pred, target_names=iris.target_names))
- 혼동 행렬: 실제 클래스 vs. 예측 클래스 교차표
- 정밀도(Precision), 재현율(Recall), F1-score 확인
해석 포인트
- Setosa(0)는 거의 완벽하게 분류된 반면, Versicolor와 Virginica는 약간 섞여 있을 수 있어요.
- n_neighbors를 조정하거나 다른 알고리즘을 시도해 보세요.
✨ 7. 모델 개선 아이디어
- 이웃 개수 튜닝: n_neighbors=5,7… 교차 검증으로 최적 값 찾기
- 다른 알고리즘 시도:
- 로지스틱 회귀(LogisticRegression)
- 의사결정 나무(DecisionTreeClassifier)
- 랜덤 포레스트(RandomForestClassifier)
- 교차 검증: cross_val_score로 모델 안정성 확인
- 피처 엔지니어링: 새로운 파생 변수 생성
🚀 8. 마무리 및 다음 스텝
오늘은 지수와 함께 파이썬으로 머신러닝의 첫 단계를 밟아 보았습니다.
- 데이터 로딩 → 전처리 → 모델 학습 → 평가
- scikit-learn 한 줄로 구현 가능한 간편함
다음 포스팅에서는 “파이썬으로 딥러닝 기초 입문하기”를 다룰 예정이니, 인공신경망의 신비로운 세계로 함께 떠나봐요! 👩💻✨
728x90
반응형