그동안 혼자 책보고 공부하면서 노션에 적었던 글을 옮겨 적으면서 복습하려고 적는 글입니다.
predict_proba 함수는 분류 모델에서 주로 사용되는 함수 중 하나로, 모델이 각 클래스에 속할 확률(확률 예측)을 계산하는 데 사용

사이킷런에서는LogisticRegression 클래스가 준비되어 있음.
z값은 decision_function()함수로 출력 가능

이 z값을 시그모이드 함수에 통과시키면 확률을 얻을 수 있음 → scipy 라이브러리의 sigmoid 함수인 expit()
LogisticRegression 클래스는 기본적으로 반복적인 알고리즘을 사용. max_iter 매개변수에서 반복 횟수를 지정하며 기본값은 100
LogisticRegression 은 기본적으로 릿지회귀와 같이 계수의 제곱을 규제(L2 규제), 매개변수는 C비용함수(cost function)는 손실 함수의 다른 말
→ 이 손실 함수를 로지스틱 손실 함수 or 이진 크로스엔트로피 손실 함수
크로스엔트로피 손실 함수cf) 그럼, 분류말고 회귀에는 어떤 손실 함수를 사용? → 평균 제곱 오차(MSE)를 많이 사용
객체를 만들지 않고 훈련한 모델 sc를 이어서 훈련할 경우 partial_fit()메서드를 사용
과대적합이 시작하기 전에 훈련을 멈추는 것을 조기 종료라고 함.

gini 는 지니 불손도를 의미
지니 불순도 = 1 - (음성 클래스 비율^2 + 양성 클래스 비율^2)
cross_validate()
한 가지 주의할 점은 cross_validate()는 훈련 세트를 섞어 폴드를 나누지 않음. 우리는 train_test_split()함수로 전체 데이터를 섞은 후 훈련 세트를 준비했기 때문에 따로 섞을 필요가 없지만 교차 검증을 할 때 훈련 세트를 섞으려면 분할기를 지정해야함.
사이킷런의 분할기는 교차 검증에서 폴드를 어떻게 나눌지 결정해줌. cross_validate()함수는 기본적으로 회귀 모델일 경우 KFold 분할기를 사용하고 분류 모델일 경우 타깃 클래스를 골고루 나누기 위해 StratifiedKFold를 사용함.
그리드서치 를 사용해 최적의 하이퍼파라미터 튜닝
그리드 서치로 찾은 최적의 매개변수는 bestparams 속성에 저장되어 있음.
매개변수의 값이 수치일 때 값의 범위나 간격을 미리 정하기 어려울 수 있음. 또 너무 많은 매개 변수 조건이 있어 그리드 서치 수행시간이 오래 걸릴 수 있음. → 랜덤 서치 사용
랜덤 서치: 매개변수 값의 목록을 전달하는 것이 아니라 매개변수를 샘플링할 수 있는 확률 분포 객체를 전달.
랜덤 포레스트는 각 트리를 훈련하기 위한 데이터를 랜덤하게 만듬.
이 데이터를 만드는 방법은 우리가 입력한 훈련 데이터에서 랜덤하게 샘플을 추출해서 만듬
ex) 1,000개 가방에서 100개씩 샘플을 뽑는다면 먼저 1개를 뽑고, 뽑았던 1개를 다시 가방에 넣음. 이란 식으로 계속해서 100개를 가방에서 뽑으면 중복된 샘플을 만들 수 있음 → 부트스트랩 샘플