출처 : 파이썬 라이브러리를 활용한 머신러닝 - 한빛미디어
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
X,y=make_blobs(random_state=0)
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0)
logreg=LogisticRegression().fit(X_train,y_train)
logreg.score(X_test,y_test)
from sklearn.model_selection import cross_val_score # scikit-learn에서 교차 검증은 model_selection 모듈의 cross_val_score 함수로 구현
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
iris=load_iris()
logreg=LogisticRegression()
scores=cross_val_score(logreg,iris.data,iris.target,cv=5)
print(scores)
print('교차검증 평균 : {:.2f}'.format(scores.mean()))
2. 그리드 서치 ( 매개변수 튜닝하여 일반화 성능 개선 : 관심있는 매개변수 대상 가능한 모든 조합 시도) -> 더 좋은 svc 매개변수 찾기
3. 파이프라인 : 데이터 변환 과정과 머신러닝 모델 연결
pipeline과 gridsearchcv 함께 사용 -> 각 처리단계에서 필요한 매개변수 탐색 동시에 수행
여러 단계를 하나의 파이썬 객체로 캡슐화해주고 scikit-learn의 fit,predict,transform 인터페이스 사용 가능
파이프라인 구축
from sklearn.pipeline import Pipeline
pipe=Pipeline([('scaler',MinMaxScaler()), ('svm',SVC())])
pipe.fit(X_train,y_train)
pipe.score
그리드 서치에 파이프라인 적용
paramgrid={'svcC':[0.001,0.01,0.1,1,10,100],
'svmgamma' : [0.001,0.01,0.1,1,10,100]
} # 파이프라인용 매개변수 그리드는 단계 이름과 매개변수 이름 __(밑줄 2개)로 연결해서 만듬
grid=GridSearchCV(pipe, param_grid=parma_grid, cv=5)
grid.fit(X_train,y_train)
print('최상의 교차 검증 정확도',grid.best_score)
전처리와 모델의 매개변수를 위한 그리드 서치
from sklearn.preprocessing import PolynomialFeatures
pipe=make_pipeline(StandardScaler(),PolyNOMIALfeatures(), Ridge())
param_grid={'polynomialfeaturesdegree' : [1,2,3],
'ridgealpha' : [0.001,0.01,0.1,1,10,100]}
grid=GridSearchCV(pipe, param_grid=param_grid, cv=5, n_jobs=-1)
grid.fit(X_train,y_train)
모델 선택을 위한 그리드 서치(standard와 minmax중 어떤 것 사용할지)
pipe=Pipiline([('preprocessing', StandardScaler()), ('classifier',SVC())])