TIL/머신러닝

머신러닝 - 로지스틱회귀 실습

jojoon2786 2024. 8. 13. 14:55

타이타닉 예측 대회 데이터를 통해 로지스틱회귀를 실습해보고자 함.

선형 회귀 때와 같이 import 로 필요한 라이브러리를 가져왔다.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import sklearn

 

 

데이터를 확인한 후 가설을 세워보았다.

  • "비상상황 특성상 여성을 배려하여 많이 생존하였을 것이다."
  • 가설의 검증에는 두 가지 방법이 있음.

        1. pivot table을 만들어 확인

        2. 그래프를 통해서 확인

 

1. pivot_table

2. 그래프

이렇게 성별은 생존과 관련이 있다는 사실을 알 수 있다.

 

그렇다면 X변수로 쓸 수 있는 컬럼에 어떤 것이 더 있을까 ?

데이터를 분류해보자

  1. 숫자 - Age, Sisp, Parch, Fare
  2. 범주 - Pclass, Sex, Cabin, Embarked

 

X변수로 Fare를 사용해보자.

# x = Fare, y = Survived

X_1 = titanic_df[['Fare']]
y_true = titanic_df[['Survived']]

 

히스토그램으로 요금의 분포를 확인

sns.histplot(titanic_df, x = 'Fare')

대부분의 요금이 10$ 근방인 것을 확인할 수 있음.

학습시켜보자.

from sklearn.linear_model import LinearRegression, LogisticRegression
model_lor = LogisticRegression()
model_lor.fit(X_1, y_true)

 

 

자주쓰는 함수를 타이타닉 데이터로 확인해보자.

  • sklearn.linear_model.LogisticRegression : 로지스틱회귀 모델 클래스
    • 속성
      • classes_: 클래스(Y)의 종류
      • n_features_in_ : 들어간 독립변수(X) 개수
      • feature_names_in_: 들어간 독립변수(X)의 이름
      • coef_: 가중치
      • intercept_: 바이어스
def get_att(x):
    print('클래스 종류 :', x.classes_)
    print('독립변수 갯수 :', x.n_features_in_)
    print('들어간 독립변수(X)의 이름 :', x.feature_names_in_)
    print('가중치 :', x.coef_)
    print('바이어스 :', x.intercept_)

get_att(model_lor)

 

평가하기

from sklearn.metrics import accuracy_score, f1_score
def get_metrics(true, pred):
    print('정확도', accuracy_score(true, pred))
    print('f1-score', f1_score(true, pred))

 

pred 인자를 전달하기 위해서 pred 선언

y_pred_1 = model_lor.predict(X_1)
y_pred_1[:10]

실행결과

 

#함수 실행

get_metrics(y_true, y_pred_1)

 

성별 때에 비해서 낮은 정확도를 볼 수 있음. X변수를 추가해야할 것 같음.