앞서 말하기를 지금 하는 것은 아직 머신러닝의 ㅁ자에도 못 들어갈 정도지만, 일단 찍어 먹고 내부를 보는 것이 후폭풍이 덜하기도 해서 찍먹 구간이다!
머신러닝에서 중요한것은 데이터와 데이터 전처리 그리고 모델로 이루어져 있다.
아무리 데이터가 안 좋으면 모델이 좋다한들 원하는 결과를 내기 힘들고,
데이터 전처리가 부족하면 데이터가 안 좋은 것과 동일하며,
모델이 안 좋으면 역으로 데이터가 아무리 좋다한들 정확도 등에서의 결과가 좋을 수 없다.
일단 데이터와 데이터 전처리를 그 전에 pandas로 배웠기에 이를 활용할 좋은 방법 하나만 소개하고 넘어가겠다.
일단 sklearn에서는 imputer와 같은 변환기가 여러개가 있고, get_dummies같은 범주형 데이터는 따로 처리해야하는 면이 있기에
우리는 pipeline을 통해서 하나의 과정을 함수처럼 구축할 수 있다.
파이프 라인은 리눅스에서 | 가 의미하는 것처럼 코드끼리 연결시켜준다.
첫 코드의 output이 다음 코드의 input으로 들어가는 꼬리를 물고 물어가며 원하는 결과를 도출해낸다.
기본 사용법은
from sklearn.pipeline import Pipeline
num_pipeline = Pipeline([
('이름1', 함수1()),
('이름2', 함수2())
])
의 형태이다. 모듈을 임포트하고
클래스처럼 받아온다음에 그 값을 집어넣는데,
이때 pipeline은 키와 벨류를 갖는 딕셔너리의 모습이다.
그러므로 해당 함수를 쓰고 싶다면 num_pipeline['이름1'] 이처럼 사용한다면
'이름1'이 갖고있는 파이프라인을 가져온다.
이런 특성이 있고,
결과적으로 파이프라인으로 묶으면 함수1에 들어갔다 나온 output이 함수 2로 들어가게되어 나온다.
또 이를 combine한 파이프라인이 있는데 이는 위와 유사하다.
간단히 선형회귀모델, 결정트리모델이 있다.
결정트리 모델은 선형회귀보다 복잡하여
성능이 좋을 가능성이 크지만 그만큼 과대적합에 취약하다.