02wk-03: 타이타닉 / 첫 제출

Author

최규빈

Published

September 12, 2023

1. 강의영상

2. Imports

import pandas as pd

3. 제출방법

- 제출: Submit Predictions

- 결과확인: Leaderboard

4. 결과확인

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
df_train=pd.read_csv("/kaggle/input/titanic/train.csv")
df_test=pd.read_csv("/kaggle/input/titanic/test.csv")
# !kaggle competitions download -c titanic
# !unzip titanic.zip -d ./titanic
# df_train = pd.read_csv('titanic/train.csv')
# df_test = pd.read_csv('titanic/test.csv')
# !rm titanic.zip
# !rm -rf titanic/

# 예비학습 – accuracy의 계산

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를 구해보자.

(df_train.Survived == (df_train.Sex == 'female')).mean()
0.7867564534231201

4. 개념

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

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

  • - 타이타닉의 training set

    df_train.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: 죽었습니다.

    df_train.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

    df_test.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점 정도는 맞던데? 이 사람도 남자니까 죽었다고 하자) 죽었다고 예측하겠습니다.