이전 포스팅 데이터 분석의 과정 - 개요에 이어지는 내용입니다.
5. 머신러닝 모델의 구축
사이킷런의 KNeighborsClassifier 클래스를 불러와 머신러닝 모델 객체를 생성한다.
KNeighborsClassifier 클래스 동작원리에 대한 포스팅 : K-최근접 이웃 알고리즘(K-NN)
각 머신러닝 알고리즘에 해당하는 hyper parameter 제어가 필수적이다.
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=11, n_jobs=-1)
※ 머신러닝 모델 객체 학습
- fit 메소드를 사용
- 사이킷런의 모든 머신러닝 클래스는 fit 메소드의 매개변수로 X, y를 입력 받음
- X는 반드시 2차원 데이터 셋 ex) pandas의 DataFrame, 파이썬의 2차원 list
- y는 반드시 1차원 데이터 셋 ex)pandas의 Series, 파이썬의 1차원 list
model.fit(X_train, y_train)
※ 학습이 완료된 머신러닝 모델 객체 평가
- score 메소드 사용
- 입력된 X를 사용해 예측을 수행하고 예측된 값을 입력된 y와 비교하여 평가 결과를 반환
※ score 메소드
- 머신러닝 클래스가 분류형인경우 score는 정확도를 반환
(정확도 = 전체 데이터에서 정답의 비율)
- 머신러닝 클래스가 회귀형인경우 score는 결정계수(R2)를 반환
(결정계수 = 음의 값부터 1 사이의 값을 가지며 1인 경우 100% 예측 일치)
score = model.score(X_train, y_train)
print(f'Train = {score}')
score = model.score(X_test, y_test)
print(f'Test = {score}')
※ 학습된 머신러닝 모델 사용하여 예측 수행
- predict 메소드 사용
- 예측할 데이터 X는 반드시 2차원으로 입력되어야 함
pred = model.predict(X_train[:2])
print(pred) # 예측값 : [0 1]
만약 학습된 머신러닝 모델이 분류형인 경우 확률 값으로 예측할 수 있다.
- predict_proba 메소드 사용
proba = model.predict_proba(X_test)
print(proba)
# [[0. 1.]
# [0. 1.]]
예측 확률의 기준선을 도입하여 일정 확률 이상으로 예측하는 경우에만 수용하는 방법을 사용해야 한다.
'머신러닝' 카테고리의 다른 글
[머신러닝] 선형 모델의 성능 향상을 위한 방법 (0) | 2022.04.22 |
---|---|
[머신러닝] Ridge, Lasso 클래스 (0) | 2022.04.22 |
[머신러닝] 회귀분석을 위한 선형 모델 - LinearRegression (0) | 2022.04.22 |
[머신러닝] K-최근접 이웃 알고리즘(K-NN) (0) | 2022.04.22 |
[머신러닝] 데이터 분석의 과정 - 개요 (0) | 2022.04.22 |