1. 머신러닝의 기본 개념
1.1 머신러닝의 정의
- 데이터를 사용해 모델을 학습시켜 예측, 분류, 군집 등의 작업을 수행하는 알고리즘.
1.2 머신러닝의 종류
- 지도 학습(Supervised Learning): 레이블(정답)이 있는 데이터 학습.
- 예: 회귀(Regression), 분류(Classification).
- 비지도 학습(Unsupervised Learning): 레이블이 없는 데이터 학습.
- 예: 군집화(Clustering), 차원 축소(Dimensionality Reduction).
- 강화 학습(Reinforcement Learning): 에이전트가 환경과 상호작용하며 학습.
- 예: 자율주행, 게임 AI.
2. Python으로 머신러닝 준비
2.1 필수 라이브러리
- 데이터 처리 및 분석:
- numpy: 배열 및 수학 연산.
- pandas: 데이터프레임으로 데이터 조작.
- 시각화:
- matplotlib: 그래프 그리기.
- seaborn: 데이터 시각화.
- 머신러닝 라이브러리:
- scikit-learn: 머신러닝 모델 구현 및 평가.
- tensorflow/keras: 딥러닝 모델 구현.
- xgboost, lightgbm: 고성능 머신러닝 모델.
- 환경:
- jupyter: 대화형 Python 노트북 환경.
설치 명령:
bash
복사편집
pip install numpy pandas matplotlib seaborn scikit-learn
3. 머신러닝 워크플로우
3.1 데이터 준비
- 데이터 로드:
- 파일 형식: CSV, Excel, SQL 등.
- 예:
python복사편집import pandas as pd data = pd.read_csv("data.csv")
- 결측치 처리:
- 결측치 제거 또는 대체:
python복사편집data.fillna(0, inplace=True)
- 결측치 제거 또는 대체:
- 데이터 시각화:
- 분포, 상관관계, 이상치 탐색.
python복사편집import seaborn as sns sns.pairplot(data)
- 분포, 상관관계, 이상치 탐색.
3.2 데이터 전처리
- 특징(Feature) 스케일링:
- 표준화(Standardization) 또는 정규화(Normalization).
python복사편집from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaled_data = scaler.fit_transform(data)
- 표준화(Standardization) 또는 정규화(Normalization).
- 데이터 분리:
- 학습용과 테스트용 데이터로 분리.
python복사편집from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- 학습용과 테스트용 데이터로 분리.
3.3 모델 학습 및 평가
- 모델 선택:
- 지도 학습: LinearRegression, DecisionTreeClassifier 등.
- 비지도 학습: KMeans, PCA 등.
python복사편집from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier()
- 모델 학습:
- 데이터를 모델에 학습.
python복사편집model.fit(X_train, y_train)
- 데이터를 모델에 학습.
- 예측:
- 테스트 데이터에 대해 예측.
python복사편집y_pred = model.predict(X_test)
- 테스트 데이터에 대해 예측.
- 평가:
- 분류: 정확도, 정밀도, 재현율, F1-점수.
python복사편집from sklearn.metrics import accuracy_score print(accuracy_score(y_test, y_pred))
- 회귀: MSE, RMSE, R².
python복사편집from sklearn.metrics import mean_squared_error print(mean_squared_error(y_test, y_pred))
- 분류: 정확도, 정밀도, 재현율, F1-점수.
3.4 모델 최적화
- 하이퍼파라미터 튜닝:
- 그리드 서치(GridSearchCV) 또는 랜덤 서치(RandomizedSearchCV).
python복사편집from sklearn.model_selection import GridSearchCV params = {'n_estimators': [50, 100, 200]} grid = GridSearchCV(model, param_grid=params, cv=5) grid.fit(X_train, y_train) print(grid.best_params_)
- 그리드 서치(GridSearchCV) 또는 랜덤 서치(RandomizedSearchCV).
- 교차 검증:
- 데이터를 나누어 학습 및 평가를 반복.
python복사편집from sklearn.model_selection import cross_val_score scores = cross_val_score(model, X, y, cv=5) print(scores.mean())
- 데이터를 나누어 학습 및 평가를 반복.
4. 머신러닝 모델 종류
4.1 지도 학습
- 회귀(Regression):
- 예: LinearRegression, Ridge, Lasso.
- 분류(Classification):
- 예: LogisticRegression, SVM, RandomForestClassifier.
4.2 비지도 학습
- 군집화(Clustering):
- 예: KMeans, DBSCAN.
- 차원 축소:
- 예: PCA, t-SNE.
5. 실습 프로젝트 아이디어
- 회귀 분석: 주택 가격 예측 (Kaggle의 "Boston Housing Dataset").
- 분류: 손글씨 숫자 분류 (sklearn.datasets.load_digits).
- 군집화: 고객 세분화 분석 (Kaggle의 "Mall Customer Dataset").
- 추천 시스템: 영화 추천 시스템 제작 (Kaggle의 "MovieLens Dataset").
요약
Python 머신러닝을 시작하려면:
- 데이터 처리와 시각화를 위한 기본 라이브러리 사용법을 익히고.
- 데이터 전처리 → 모델 학습 및 평가 → 최적화 과정을 학습.
- 다양한 머신러닝 모델과 실제 데이터를 활용한 프로젝트를 진행