data-science-summary/summary

Logistic regression 에서 통계적으로유의한 독립변수 찾는법 in python

고수트 2020. 9. 19. 16:00
반응형

<엔지니어는 구현을 못하면 모르는것이다>

로지스틱 회귀분석에서 통계적으로 유의한 독립변수는 statsmodels 에서 변수의 p_value 찾은뒤 유의수준(보통 0.05) 이하인 변수를 찾으면 된다.

# 통계적으로 유의한 독립변수 찾는법 => statsmodels 사용
from sklearn import datasets
import statsmodels.api as sm
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
breast_cancer = datasets.load_breast_cancer()
X = breast_cancer.data
y = breast_cancer.target
cols = [i.replace(' ' , '_') for i in breast_cancer.feature_names] + ['y']
train_x, test_x, train_y, test_y = train_test_split(X, y, test_size=0.4, random_state=7777)
train = np.hstack((train_x, train_y.reshape(-1,1)))
test = np.hstack((test_x, test_y.reshape(-1,1)))
train = pd.DataFrame(train, columns=cols)
test = pd.DataFrame(test, columns=cols)

# 20 개 넘어가면 잘안됨
formula = 'y ~ mean_radius + mean_texture + mean_perimeter + mean_area + mean_smoothness + mean_compactness + mean_concavity'
# train
lor = sm.Logit.from_formula(formula, train).fit()
# 요약
print(lor.summary())
# p_value 확인 => 0.05 이하이면 의미있는 변수
lor.pvalues
# 계수확인
lor.params

# 또 다른 방법. 일반선형 모델인 GLM(Generalize linear Model) 에서 이진 분류 하면 link function이 Logit 되어 Logistic regression 됨
import statsmodels.formula.api as smf
smf.glm(formula, train, family=sm.families.Binomial()).fit().summary()
반응형