본문 바로가기
Study (Data Science)/ML

Scikit-Learn

by 콜라찡 2022. 12. 7.

https://youtu.be/WCEXYvv-T5Q

 

1단계 : ESL 하는과정
2단계 : 모델 fit 하고 predict 까지
1,2단계를 수행하는 API no.1 Meta-estimator
1,2단계를 수행하는 API no.2 Pipeline
이정도가 원래 가장 간단한 방법. 하기는 모델 보완한 것.
Iris 데이터1 : 모델을 3층으로 stacking 하고 meta로 묶고,
Iris 데이터2 : pipeline으로 검증

 

모델은 2층으로 staking하고, pipeline.fit, predict로 한번 더 검증함.

 

  • Scikit Learn :  파이썬 기반 머신러닝 라이브러리. Scipy 및 NumPy 와 비슷한 데이터 표현과 수학 관련 함수
  • 일반적으로 머신러닝에서 데이터 가공(ETL:Extract Transform Load)을 거쳐 모델을 훈련하고 예측하는 과정을 거침
  • Scikit Learn은 ETL - transformer()를 제공하고, 모델의 훈련과 예측은 Estimator 객체를 통해 수행되며, Estimator에는 각각 fit()(훈련), predict()(예측)을 행하는 메소드가 있음. 모델의 훈련과 예측이 끝나면 이 2가지는 작업을 Pipeline()으로 묶어 검증을 수행.
  • data >> transformer() >> estimator.fit(X,y) >> estimator.predict(X) >> Pinpeline(model)
  •                                          |----------------meta-estimator----------------|

 

https://youtu.be/rvVkVsG49uU

https://youtu.be/WCEXYvv-T5Q

 

 


 

데이터 표현법

NumPy의 ndarray, Pandas의 DataFrame, SciPy의 Sparse Matri를 사용해 나타낼 수 있음.

특성 행렬 X, n_samples & 타겟 벡터 y, n_samples =  동일해야 함.

  • 특성 행렬(Feature Matrix) : X값 
    • 특성 : X값에 해당하는 모든 열의 속성. 나이, 몸무게, 키, 성별 등등
    • [n_samples, n_features] : 행의 갯수(표본의 갯수), 열의 갯수 (특성의 갯수)
  • 타겟 벡터(Target Vector) : y값,= label, = 구해야하는 답
    • n_feature는 없음. 왜? 답이니깐,,
    • n_sample : 행의 갯수(표본의 갯수)
    • 보통 1차원 벡터로 나타내며, Numpy ndarray나, pandas의 Series로 나타냄
    • 1차원이 아닐 수도 있음.

데이터셋 준비

from sklearn.model_selection import train_test_split
result = train_test_split(X, y, test_size=0.2, random_state=42)
 
train_test_split은 비율에 따라 자동으로 train, test를 나눠주는 아주 똑똑한 친구.
 
나는 왜 이때까지 pandas로 slicing 했었나 돌아보게 된다..

Estimator

Estimator은 scikit-learn 이 제공하는 머신모델을 쉽게 사용하게 해주는 모듈

예시) model = RandomForestClassifer(), LinearRegression(), PCA()

 

model.fit(X_train,y_train) : 답이 있는 지도학습에서는 y (타겟벡터)를 인자로 써서 수행하고,

model.fit(X_train            ) : 답이 없는 비지도학습에서는 따로 타겟벡터 없이 특성행렬만 넣어 수행할 수 있다.

y_test=model.predict(X_test) : 예측

 

결과 확인

print(classification_report(y_test, y_pred))   - matrix 형태
print("정답률=", accuracy_score(y_test, y_pred))  - accuracy만 보여줌

 

 

 

728x90

'Study (Data Science) > ML' 카테고리의 다른 글

문자열다루기, 정규표현식  (0) 2022.12.08
Matplotlib, Seaborn  (0) 2022.12.07
알고리즘 선택하기  (0) 2022.12.07
오차행렬, FP, FN, F-score, Threshold  (0) 2022.12.07
Batch size, Epoch, Iteration  (0) 2022.12.06

댓글