저번 시간에는 모델 학습에 필요한 데이터들을 전처리하는 과정을 거쳐 보았다.
이번 시간에는 이 데이터들을 바탕으로 모델을 생성하고 학습을 해보도록 하자.
Feature Engineering & Initial Modeling
1
2
|
X_train = train[['Sex','Pclass']]
y_train = train[['Survived']]
|
cs |
1
|
X_test = test[['Sex','Pclass']]
|
cs |
X_test에는 X_train과 마찬가지로 'Sex' 와 'Pclass'를 불러들인다.
sklearn.linear_model.LogisticRegression()
이번에는 로지스틱 회귀 모형을 사용하여 모델을 생성하도록 하겠다.
로지스틱 회귀모형은 0과 1 사이의 값을 산출하도록 하는 모형이다.
sklearn.tree.DecisionTreeClassifier()
이번에는 의사결정 나무 모델에 대해서 알아보도록 하자.
의사결정 나무 트리란 특징 변수들로부터 타깃변수를 맞추기 위해 경우를 쪼개나가는 알고리즘을 말한다.
이두가지 모델에 대해서 자세한 내용은 추후 다루도록 하겠다.
모델 생성
1
2
|
lr = LogisticRegression()
dt = DecisionTreeClassifier()
|
cs |
위 코드를 입력하여 모델을 생성해 주도록 한다,
Model Tuning & Evaluation
model.fit를 이용하여 모델을 학습 시키도록 한다.
1
2
|
lr.fit(X_train,y_train)
dt.fit(X_train,y_train)
|
cs |
그 후 moel.oredict()를 이용하여 모델을 예측하도록 한다.
1
|
lr.predict(X_test)
|
cs |
모델의 학습을 하게 되면 다음과 같은 배열의 결과가 나오게 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
array([0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0,
1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1,
1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1,
1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,
1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1,
0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0,
0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0,
1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1,
0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0])
|
cs |
위의 값은 X_test의 데이터들을 바탕으로 모델이 추측한 값들을 배열로 나타낸 것이다.
여기서 세부적으로 나아가 생존률을 예측해 보도록 하자.
1
|
lr.predict_proba(X_test)
|
cs |
model.predit_proba()를 이용하게 되면 생존할 확률과 생존하지 못할 확률을 구할 수 있다.
prdba를 지우게 되면 두개의 확률 중 더 높은 것을 알려준다.
모델 저장
pd.DataFrame.to_csv()를 이용하여 결과 값을 저장해보도록 하자.
1
2
|
submission['Survived']=lr_pred
submission.to_csv('logistic_regression_pred.csv',index=False)
|
cs |
위의 코드를 작성하게 되면 모델을 통해 예측한 값이 저장이 된다.
만약 의사결정나무트리를 통하여 모델을 만들고 학습하고자 하면 위의 모델 예측부터 코드에 있는 lr을 dt로 바꾸어 주면 된다.
'인공지능 > 기존예제' 카테고리의 다른 글
따릉이 사용자 수 예측하기_모델 생성 및 학습 (0) | 2021.08.09 |
---|---|
따릉이 사용자 수 예측하기_데이터 전처리 (0) | 2021.08.08 |
타이타닉승객들의 생존률 예측하기_데이터 전처리 (2) | 2021.08.04 |
댓글