[STBDA2023] 02wk-003: 타이타닉, 첫 제출

Author

김보람

Published

September 17, 2023

해당 자료는 전북대학교 최규빈 교수님 2023학년도 2학기 빅데이터분석특강 자료임

2. 제출방법

- 제출: Submit Predictions

- 결과확인: Leaderboard

3. 결과확인

A. test – 답을 모름, 제출해야 알 수 있음

- 제출결과는 리더보드에서 확인할 수 있음.

B. train – 스스로 풀어보고 채점할 수 있음

- 캐글에서 code \(\to\) New Notebook 클릭

# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files are available in the read-only "../input/" directory
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using "Save & Run All" 
# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session
/kaggle/input/titanic/train.csv
/kaggle/input/titanic/test.csv
/kaggle/input/titanic/gender_submission.csv
tr=pd.read_csv("/kaggle/input/titanic/train.csv")
tst=pd.read_csv("/kaggle/input/titanic/test.csv")

# 예비학습 – accuracy의 계산

import pandas as pd 
df = pd.DataFrame({'Surv':[1,0,1,1,0],'Sex':['f','m','f','m','m']})

- Surv 열의 선택

df.Surv
0    1
1    0
2    1
3    1
4    0
Name: Surv, dtype: int64

- Sex 열의 선택

df.Sex
0    f
1    m
2    f
3    m
4    m
Name: Sex, dtype: object

- Sex == f이면 생존(1), 그렇지 않으면 사망(0)이라고 예측

(df.Sex == 'f')*1
0    1
1    0
2    1
3    0
4    0
Name: Sex, dtype: int64

- 결과를 정리하면 아래와 같음

pd.DataFrame({'real': df.Surv, 'estimate': (df.Sex == 'f')*1})
real estimate
0 1 1
1 0 0
2 1 1
3 1 0
4 0 0

- accuracy를 손으로 계산하면 \(\frac{4}{5}=0.8\).

- 컴퓨터로 accuracy를 계산한다면

(df.Surv == (df.Sex == 'f')*1).sum()/5 # 방법1
0.8
(df.Surv == (df.Sex == 'f')*1).mean() # 방법2
0.8

#

- 실제자료의 accuracy를 구해보자.

tr = pd.read_csv('~/Desktop/titanic/train.csv')
(tr.Survived == (tr.Sex == 'female')).mean()
0.7867564534231201
tr[tr.Sex == 'female'].Survived.mean()
0.7420382165605095

4. 개념

- 캐글대회는 시험과 비슷하다.

  • 캐글대회를 여는 사람은 보통 (1) 모의고사문제+답 (training set) (2) 실제시험문제 (test set)를 준다.[1]
  • (1)의 자료에서는 문제(X,독립변수,설명변수)와 답(y,종속변수,반응변수)이 함께 주어진다.
  • (2)의 자료에서는 문제(X,독립변수,설명변수)만 주어진다.
  • 우리는 (1)을 이용하여 문제(X,독립변수,설명변수)와 답(y,종속변수,반응변수)사이의 관계를 찾아내는 훈련을 한다.
  • 그리고 그 훈련이 잘 되었는지를 평가하기 위해서 (2)를 풀어보고 그 결과를 제출한다.

- 타이타닉의 training set

[1] 물론 모든 대회가 이런건 아님, 시험도 수능같은 시험만 있는게 아닌 실기같은것도 있잖아요?

tr.iloc[0]
PassengerId                          1
Survived                             0
Pclass                               3
Name           Braund, Mr. Owen Harris
Sex                               male
Age                               22.0
SibSp                                1
Parch                                0
Ticket                       A/5 21171
Fare                              7.25
Cabin                              NaN
Embarked                             S
Name: 0, dtype: object
  • 모의고사문제1: Pclass는 3이에요, 그리고 이름은 ‘Braund, Mr. Owen Harris’ 입니다. 성별은 ‘male’ 입니다. 그리고 …. 입니다. 이 사람은 죽었을까요? 살았을까요?

  • 답1: 죽었습니다.

tr.iloc[1]
PassengerId                                                    2
Survived                                                       1
Pclass                                                         1
Name           Cumings, Mrs. John Bradley (Florence Briggs Th...
Sex                                                       female
Age                                                         38.0
SibSp                                                          1
Parch                                                          0
Ticket                                                  PC 17599
Fare                                                     71.2833
Cabin                                                        C85
Embarked                                                       C
Name: 1, dtype: object
  • 모의고사문제2: Pclass는 1이에요, 그리고 이름은 ‘Cumings, Mrs. John Bradley (Florence Briggs Thayer)’ 입니다. 성별은 ‘female’ 입니다. 그리고 …. 입니다. 이 사람은 죽었을까요? 살았을까요?

  • 답2: 살았습니다.

- 타이타닉의 test set

tst = pd.read_csv('~/Desktop/titanic/test.csv')
tst.iloc[0]
PassengerId                 892
Pclass                        3
Name           Kelly, Mr. James
Sex                        male
Age                        34.5
SibSp                         0
Parch                         0
Ticket                   330911
Fare                     7.8292
Cabin                       NaN
Embarked                      Q
Name: 0, dtype: object
  • 실전문제1: Pclass는 3이에요, 그리고 이름은 ‘Kelly, Mr. James’ 입니다. 성별은 ‘male’ 입니다. 그리고 …. 입니다. 이 사람은 죽었을까요? 살았을까요?

  • 답1: (속마음: 훈련집합에서 대부분 남자는 죽고 여자는 살았다고 푸니까 대충 78점 정도는 맞던데? 이 사람도 남자니까 죽었다고 하자) 죽었다고 예측하겠습니다.