-
Logistic regression을 사용한 예측 모델 만들기ML,DL 2024. 1. 23. 18:36
Logistic regression은 binary classification 문제를 푸는데 쓰이는 머신러닝 방법론이다.
💡 독립변수가 (-∞,∞)의 어느 숫자이든 상관없이 종속 변수 또는 결과 값이 항상 범위 [0,1] 사이에 있도록 한다. 이는 오즈를 로짓변환 수행함으로써 항상 [0,1]사이 값을 갖는 로지스틱 함수(시그모이드 함수)를 얻을 수 있다.
kaggle제공
https://www.kaggle.com/code/adepvenugopal/logistic-regression-predicting-insurance-buying/notebook
Logistic Regression : Predicting Insurance buying
Explore and run machine learning code with Kaggle Notebooks | Using data from Insurance Data
www.kaggle.com
EDA
pandas library
data.head() :처음 몇개의 행을 보여주는 명령어이다, 표 형식의 데이터를 다루는데 사용된다.
data.describe() : 데이터프레임의 간단한 통계적 요약정보를 제공한다. 각 열의 평균, 표준편차, 최소값, 최대값 등을 확인할 수 있다. 이를 통해 인풋 데이터의 통계적 특성을파악할 수 있다.
data.info() : 데이터프레임의 열에 대한 데이터타입, 비어있지 않은 값의 개수, 메모리 사용량 등을 알 수 있다. 데이터 전처리를 수행할 때 도움이된다.
data.corr() : 데이터프레임의 열 간 상간관계를 계산하여 표시하는 명령어이다. 이 명령어를 사용하면 각 열 사이 상관계수를 확인할 수 있다. (상관계수는 -1에서 1까지의 값을 가지며, 0에 가까울수록 두 열 간의 상관관계가 낮고, 1이나 -1에 가까울수록 두 열 간의 강한 상관관계를 나타낸다.)
Seaborn library
pairplot() : 데이터 간 산점도 행렬을 그리는 명령어이다. 데이터 열 간 관계를 시각화 할 수 있다.
데이터 전처리
# 특성 행렬 x와 타겟 벡터 y를 분리한다 x = data.iloc[:, :-1].values # 모든 행, 마지막 열을 제외한 열들을 특성 행렬로 설정 y = data.iloc[:, 1].values # 모든 행, 마지막 열을 타겟 벡터로 설정
iloc은 행렬을 특정 위치에 있는 값을 추출한다. [:,:,-1] 는 모든 행에 대해 마지막 열을 제외한 열을 선택한다. [:, 1] 모든 행에 대해 마지막 열을 선택한다.
x는 입력데이터의 특성을 담은 행렬이되고, y는 모델이 예측하고자 하는 결과값을 담은 벡터가 된다.
이렇게 나누어진 두 벡터는 머신러닝 모델을 학습시키거나 테스트할때 사용된다.
# 학습용과 테스트용 데이터로 나눈다 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
train_test_split 함수는 입력 데이터 x와 타켓 데이터 y를 받아서 지정된 비율(0.2 → 20%)로 나누어준다.
학습용 → 80% / 테스트용→20%
이렇게 데이터를 나누는 이유는 모델을 학습시키고 나서 그 모델의 성능을 평가하기 위해 일부 데이터를 테스트에 사용하는 것이다. 이를 통해 overfitting을 방지하고 일반화된 성능을 낼 수 있다.
머신러닝
# 머신러닝 알고리즘으로 로지스틱 회귀 모델을 정의한다 ml = LogisticRegression()
LogisticRegression()은 Scikit-Learn 라이브러리에서 제공하는 로지스틱 회귀 모델을 생성하는 함수이다. 이는 binary classification문제에서 사용되며, 주어진 데이터를 두 개의 클래스로 분류한다.
# 머신러닝 알고리즘을 학습시킨다 ml.fit(x_train, y_train)
x_train : 학습용 특성 벡터
y_train : 학습용 타켓 벡터
# 머신러닝 알고리즘을 사용하여, 테스트 데이터에 대한 예측을 수행한다 y_pred = ml.predict(x_test)
predict() : 훈련된 모델을 사용하여, 입력된 데이터에 대한 예측값을 반환한다.
x_test : 테스트용 특성행렬
y_pred : 모델이 예측한 결과값 (예측된 타켓 벡터)
예측결과비교
import matplotlib.pyplot as plt # 실제값과 모델의 예측값을 산점도로 표시한다 plt.scatter(x_test, y_test, color='red', marker='+', label='실제값') plt.scatter(x_test, y_pred, color='blue', marker='.', label='모델 예측값') plt.xlabel("사람의 나이") plt.ylabel("보험 구매 여부 (1=구매, 0=미구매)") plt.legend() # 범례 표시 # 그래프를 출력한다 plt.show()
평가
# 모델의 정확도를 계산한다 accuracy = ml.score(x_test, y_test)
테스트 데이터와 그와 대응하는 실제값을 사용하여 모델의 accuracy를 계산한다.
반환값은 0~1까지 범위이며 1에가까울수록 모델이 더 정확하게 예측했음을 나타낸다.
from sklearn.metrics import confusion_matrix # confusion_matrix를 계산한다. cm = confusion_matrix(y_test, y_pred)
confusion matix는 이진 분류(Binary Classification)에서 모델의 성능을 평가하는 데 사용되며, 각 셀은 다음과 같이 정의된다.
- True Positive (TP): 모델이 Positive으로 예측하고 실제로도 Positive인 경우
- True Negative (TN): 모델이 Negative으로 예측하고 실제로도 Negative인 경우
- False Positive (FP): 모델이 Positive으로 예측했지만 실제로는 Negative인 경우
- False Negative (FN): 모델이 Negative으로 예측했지만 실제로는 Positive인 경우
kaggle에서 code에 들어가면 원하는 머신러닝 알고리즘을 어떻게 구현하고 데이터분석에 사용하는지 레퍼런스를 볼 수 있습니다.
https://www.kaggle.com/code?searchQuery=binary+classification
Run Data Science & Machine Learning Code Online | Kaggle
Kaggle Notebooks are a computational environment that enables reproducible and collaborative analysis.
www.kaggle.com
'ML,DL' 카테고리의 다른 글
[DL] 차 상태 예측 분류 신경망 모델 구축 실습 (2) 2024.03.22 LG AIMERS 4기 PHASE 2 해커톤 및 수료 후기 (0) 2024.03.11