[TIL]Day 63

이재희·2021년 1월 31일
0

TIL

목록 보기
63/312

테스트 데이터 나누기

from sklean.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,stratify=y,test_size=0.2,random_state=42)

stratify는 훈련 데이터를 나눌 때 클래스 비율을 동일하기 맞추기 위함. 만약 클래스 분포가 불균등하면 stratify=y 지정해줘야함
test_size는 디폴트 값인 75%25% 가 아닌 다르게 나누고 싶을 때 사용

샘플데이터 한개에 대한 그레이언트 == SGD(확률적 경사 하강법)
전체 데이터 그레디언트 계산 == 배치 경사 하강법
미니 배치 그레디언트 계산 == 미니 배치 경사 하강법

from sklearn.linear_model import SGDClassifier
sgd = SGDClassifier(loss='log',random_state=42)

여기서 'log'와 같은 값을 하이퍼파라미터라고 함.
이런 하이퍼파라미터등을 조정하는것을 모델을 튜닝한다고 하는데 테스트데이터에서 모델을 튜닝하면 실전에서 좋은 성능을 얻기가 어려움.
따라서 모델 튜닝을 위한 데이터셋이 필요한데 그게 검증세트임.(validation set,dev set)

사이킷런의 표준화 클래스 StandardScaler
훈련 세트의 평균과 표쥰편차를 활용하여 검증세트 변환해야함... 훈련세트는 훈련세트대로, 검증세트는 검증 세트대로 하면 안됨...

StandardScaler L1,L2 규제 사용

sgd = SGDClassifier(loss='log',penalty='l2',alpha=0.001,random_state=42)
sgd.fit(x_train_scaled,y_train)
sgd.score(x_val_scaled,y_val)

penalty 에는 어떤 규제를 사용할 것인지,
alpha 는 규제강도

사이킷런의 model_selection 모듈로 교차검증하기
cross_validation 사용

from sklearn.model_selection import cross_validate
sgd = SGDClassifier(loss='log',penalty='l2',alpha=0.001,random_state=42)
scores = cross_validate(sgd,x_train_all,y_train_all,cv=10)
print(np.mean(scores['test_score']))

cv가 폴드 개수

코랩에 파일 불러오기
http://growthj.link/python-%EA%B5%AC%EA%B8%80-colab%EC%9C%BC%EB%A1%9C-pd-read_csv-%ED%99%9C%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/

profile
오늘부터 열심히 산다

0개의 댓글