여유로움
[11.28 일] 빅데이터 분석기사 실기 - Machine Learning (5~8강) 본문
1. 지도학습과 비지도학습
|
2. 데이터 세트(Data set)
|
3. 홀드 아웃(Hold out)
|
4. 교차검증(Cross Validation)
![]() |
5. 오버피팅(Overfitting)
|
![]() 순서대로 Underfitting, Appropriate, Overfitting |
6. 파라미터(Parameter)와 하이퍼파라미터(Hyper-Parameter)
|
7. scikit-learn(sklearn) library 사용
# [0] 라이브러리 import
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
|
8. 데이터 전처리
|
[방법1] X_train, X_test를 합쳐서 전처리 작업
|
# [2] X, Y 데이터로 분리
X = df.iloc[:,:-1]
Y = df['target'] #df.iloc[:,-1]
# [방법1] StandardScaler 사용하여 표준 정규 분포 만들기 - fit_transform(X)
scaledX = StandardScaler().fit_transform(X)
print(scaledX.mean(), scaledX.std()) #표준정규분포 : 평균 0, 표준편차 1
# [방법2] StandardScaler 사용하여 표준 정규 분포 만들기 - fit(), transform()
scaler = StandardScaler().fit(X) #스케일러를 가져옴
scaledX = scaler.transform(X) #X_train
print(scaledX.mean(), scaledX.std())
scaledX_submission = scaler.transform(X_test)
|
9. 데이터 분할
|
from sklearn.model_selection import train_test_split
# [4] train, test 세트 8:2로 나누기
a = list(range(10))
x_train, x_test= train_test_split(a, test_size=0.2)
x_train, x_test
# [5] 층화추출 이해 (비율 맞춰 나누기)
a = [1, 1, 2, 3] * 5 # 20개 데이터 8:2 (4 : 1)
x_train, x_test = train_test_split(a, test_size=0.2, stratify=a) #층화추출
print(x_train, x_test)
# [6] 여러 개 데이터셋을 분할
a = list(range(10)) #행의 개수가 같아야 함
b = list(range(10))
train_test_split(a,b,test_size=0.2)
# [7] scaledX, Y를 사용하여 train_size : test_size 를 0.8 : 0.2로 나누기,
# random_state = 0 사용, 층화추출, 데이터 섞기 사용
x_train, x_test, y_train, y_test = train_test_split(scaledX, Y, test_size=0.2, random_state=0, stratify=Y) #보통 Y 비율에 맞춤
print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)
|
10. 머신러닝 모델(Estimator) Interface
sklearn.base.BaseEstimator
|
KNeighborsClassifier(n_neighbors=5, *, weights='uniform', algorithm='auto',
leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None)
# [8] 모델 생성 및 학습
# k가 3인 knn 분류기 생성
knn = KNeighborsClassifier(n_neighbors=3)
# knn 에 Train set 전달하여 모델 생성(학습)
knn.fit(x_train, y_train)
# 동일한 결과: knn = KNeighborsClassifier(n_neighbors=3).fit(x_train, y_train) # [9] 평가하기
# train set, test set을 각각 사용함
print('train 성능 :', knn.score(x_train, y_train) )
print('test 성능 :', knn.score(x_test, y_test))
# 성능이 낮은 경우 : hyperparameter 조절, model을 변경, 데이터의 전처리를 변경 등을 통해 성능을 향상할 수 있음
# [10-1] knn 모델에 Test set 적용하여 예측치 얻기
pred = knn.predict(x_test)
pred
# [10-2] 예측 확률 값
pred_proba = knn.predict_proba(x_test)
print(pred_proba)
|
출처 : 유튜브 강의 EduAtoZ
'셀프스터디 > 빅데이터 분석기사' 카테고리의 다른 글
[11.29 월] 빅데이터 분석기사 실기 - Machine Learning (13~15강) 다양한 모델 사용(회귀 모델, 분류 모델), 오분류표 (0) | 2021.11.29 |
---|---|
[11.28 일] 빅데이터 분석기사 실기 - Machine Learning (10~12강) 회귀분석, 파생변수 생성, 스케일러 사용 (0) | 2021.11.28 |
빅데이터 분석기사 실기 1유형 문제풀이 (0) | 2021.11.27 |
[11.27 토] 빅데이터 분석기사 실기 - Machine Learning (1~4강) (0) | 2021.11.27 |
[11.27 토] 빅데이터 분석기사 실기 - Pandas (30~35강) (0) | 2021.11.27 |