티스토리 뷰

Data Science

[Python] Logistic Regression

noonsong 2018. 6. 8. 22:30


Logistic Regression

독립변수의의 선형 결합을 이용하여 사건의 발생 가능성을 예측할 때 사용되는 통계기법  


로지스틱 회귀의 목적은 종속변수와 독립변수간의 관계를 구체적인 함수로 나타내어 향후 예측 모델에 사용하는 것이다. 

독립변수의 선형 결합을 이용하여 사건의 발생가능성을 예측하는 통계적 기법을 활용한것

(일어날 확률/일어나지 않을 확률)


결과적으로 로지스틱 회귀의 y값은 0~1 사이의 확률값이 된다. 


종속변수가 범주형  데이터를 대상으로 하며 입력 데이터가 주어졌을 때 해당 데이터의 결과가 특정 분류로 나뉘기 때문에 일종의 classification 기법으로 볼 수 있다. 


logistic regression 은 데이터가 두 집단(0또는 1)로 나뉘어져 있는 경우에 사용된다. 


Python Logistic Regression Example

Titanic data 에서 테스트 데이터 / 트레이닝 데이터를 만든다. 


sklearn.model_selection 을 사용하여 2:8 비율로 분류


Scikit-Learn 의 model_selection 서브 패키지는 교차 검증을 위해 전체 데이터 셋에서 트레이닝용 데이터나 테스트용 데이터를 분리해 내는 여러가지 방법을 제공한다. 


- train_test_split : data 를 train set 과 test set 으로 단순하게 분리. 



train_x : 분류에 사용될 attributes - 탑승자의 정보 / train_y : 분류결과값 (0또는 1 / Survived or Not)


from sklearn.model_selection import train_test_split
#test(valid)/train 을 2:8 로 randomly select
train, valid = train_test_split(titanic, test_size=0.2, random_state=0)

#train/valid set 완성! 
train_y=train['survived']
train_x=train.drop(['survived'], axis=1)

valid_y=valid['survived']
valid_x=valid.drop(['survived'],axis=1)


sklearn.linear_model LogisticRegression 을 사용하여 분류 

from sklearn.linear_model import LogisticRegression lr = LogisticRegression(C=1000.0, random_state=0) lr.fit(train_x, train_y) pred_y = lr.predict(valid_x)


C : Inverse of regularization strength; must be a positive float. Like in support vector machines, smaller values specify stronger regularization.


random_state : random 데이터 생성 시 seed of random number


fit(train_x, train_y) : Fit the model according to the given training data 

training 데이터로 학습시키기


predict(valid_x) : Predict class labels for samples in X

valid_x 값을 사용하여 학습한 분류기에 y 값을 예측하게 한다.프린트해보면 0 1 0 0 1  과 같이 생존률을 예측한 값들이 나온다. 


print("Misclassification samples : %d" %(valid_y != pred_y).sum())


제대로 분류되지 않은 데이터를 valid_y 와 pred_y 를 비교하여 단순 count 한다. 


from sklearn.metrics import precision_score, recall_score, f1_score
from sklearn.metrics import accuracy_score
print("accuracy: %.2f" %accuracy_score(valid_y, pred_y))
print("Precision : %.3f" % precision_score(valid_y, pred_y))
print("Recall : %.3f" % recall_score(valid_y, pred_y))
print("F1 : %.3f" % f1_score(valid_y, pred_y))


accuracy, Precision, Recall, F1 값을 프린트 

약 77% 정도로 분류가 성공했음을 알 수 있음



참고 : https://ko.wikipedia.org/wiki/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1_%ED%9A%8C%EA%B7%80 

'Data Science' 카테고리의 다른 글

[Python] T-Test and P-Value  (0) 2018.06.08
one-hot-encoding  (0) 2018.05.12
pandas/numpy  (0) 2018.04.14
[Python] Pandas module  (0) 2018.03.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함