🐍 Python & library/Scikit-Learn

[Scikit-learn] Logistic Regression 정리, 예제

복만 2021. 4. 4. 15:09
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

 

주요 arguments

  • max_iter: iteration의 최대치 (default: 100)
  • penalty: penalization에 사용되는 norm의 종류. Solver의 종류에 따라 사용 가능한 penalty의 종류가 상이하기 때문에 docs를 확인해야 함. {'l1', 'l2', 'elasticnet', 'none'}, (default: 'l2')
    • 'elasticnet' 의 경우 l1+l2 penalty를 함께 사용하며, l1_ratio parameter를 통해 그 비율을 조정할 수 있다.
  • solver: optimization에 사용되는 algorithm의 종류. {'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'} (default: 'lbfgs')
    • 작은 dataset의 경우 'liblinear'이 좋은 선택일 수 있으며, 'sag''saga'는 큰 dataset에서 더욱 빠르게 동작한다.
    • Multiclass problem의 경우, 'newton-cg', 'sag', 'saga', 'lbfgs'만이 multinomial loss를 다룰 수 있다.
    • 'liblinear'은 one-versus-rest scheme에서만 동작한다.
    • 각 solver가 지원하는 penalty의 종류는 다음과 같다.
      • 'newton-cg': 'l2', 'none'
      • 'lbfgs': 'l2', 'none'
      • 'liblinear': 'l1', 'l2'
      • 'sag': 'l2', 'none'
      • 'saga': 'elasticnet', 'l1', 'l2', 'none'
  • class_weight: class에 부여할 가중치. {class label: weight} 형태의 dictionary 를 전달하거나 'balanced'를 선택. 'balanced'의 경우 각 class에 n_samples / (n_classes * np.bincount(y)) 로 weight를 줌. (default: None)
  • l1_ratio: elasticnet penalty를 사용할 경우 사용할 수 있는 parameter로, l1 penalty와 l2 penalty의 비율을 조절한다. (default: None)

 

주요 Methods

  • fit(X, y) : training data X, label y를 이용해 train을 진행
    • X: (n_samples, n_features)
    • y: (n_samples,)
  • predict(X): test data X를 이용해 class label 값을 예측
    • X: (n_samples, n_features)
    • returns: (n_samples,)
  • predict\_proba(X): test data X를 이용해 class probability 값을 예측
    • X: (n_samples, n_features)
    • returns: (n_samples, n_classes)

사용예제

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=5000, class_weight='balanced')

model.fit(X_train, y_train)

pred_train = model.predict_proba(X_train)
pred_test = model.predict_proba(X_test)

 

 

sklearn.linear_model.LogisticRegression

Examples using sklearn.linear_model.LogisticRegression: Release Highlights for scikit-learn 1.0 Release Highlights for scikit-learn 1.0, Release Highlights for scikit-learn 0.23 Release Highlights ...

scikit-learn.org

 

반응형