캐글(Kaggle)/프로젝트

Kaggle(캐글) - 타이타닉 생존자 예측 초보자 튜토리얼[Hellfer](1)

Hellfer 2024. 6. 27. 20:42
728x90

 

 

https://www.kaggle.com/code/shivadumnawar/titanic-a-complete-tutorial-for-beginners

 

Titanic : A Complete Tutorial For Beginners

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

위의 튜토리얼을 보고 참고하여 진행하였습니다.

 

step

1. 데이터 분류란 무엇인가?

2. 로지스틱 회귀란 무엇인가?

3. import

4. 누락된 값 처리

5. 데이터 시각화

6. 이상값 제거

7. 원 - 핫 인코딩

8. Feature Scaling

9. 제출

 

분류란 무엇인가?

- 분류 대상이 범주형인 경우(2개 이상의 클래스 포함)에 사용

 

- Titatic 데이터 셋에서 대상은 클래스 0과 1이 있는 'Survived' 변수이고 클래스 0은 "생존하지 않음"을 나타내고 클래스 1은 "생존"을 나타낸다.

 

로지스틱 회귀란 무엇인가?

- 회귀분석을  분류에 이용한 방법으로, 독립변수의 선형 결합을 이용해 사건의 발생 가능성을 예측하는 분석방법으로 종속변수(y)가 범주형 변수일 때 사용가능하다.

 

- 종속변수가 바로 범주형 변수를 변환하지 않고 각 범주(집단)에 포함될 확률값을 반환하여 분류한다.

ex) 어떤 사건이 발생활 확률과 발생하지 않을 확률로 나누어서 예측

 

 

 

라이브러리와 모듈을 삽입해 보겠습니다.

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt #데이터 시각화 
import seaborn as sns #데이터 시각화
import warnings
warnings.filterwarnings('ignore')

plt.style.use('ggplot')

 

다음으로 훈련 데이터셋과 테스트 데이터 셋을 가져오겠습니다.

 

train_df = pd.read_csv('/kaggle/input/titanic/train.csv') #훈련 데이터 
test_df = pd.read_csv('/kaggle/input/titanic/test.csv') #테스트 테이터

 

train_df와 test_df의 복사본을 만들어보겠습니다.

 

train = train_df.copy()
test= test_df.copy()

 

 

데이터셋의 정보를 알기 위해 info() 함수를 사용하여 변수, NULL이 아닌 개수, 각 열의 데이터 유형 및 메모리 사용량에 대한 종합적인 정보를 알아봅니다.

 

print(train.info())

 

 

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
None

 

 

print(test.info())

 

 

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 418 entries, 0 to 417
Data columns (total 11 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  418 non-null    int64  
 1   Pclass       418 non-null    int64  
 2   Name         418 non-null    object 
 3   Sex          418 non-null    object 
 4   Age          332 non-null    float64
 5   SibSp        418 non-null    int64  
 6   Parch        418 non-null    int64  
 7   Ticket       418 non-null    object 
 8   Fare         417 non-null    float64
 9   Cabin        91 non-null     object 
 10  Embarked     418 non-null    object 
dtypes: float64(2), int64(4), object(5)
memory usage: 36.0+ KB
None

 

describe() 함수는 데이터셋의 기초통계량인 개수, 중간값, 표준편차, 최댓값, 최솟값, 사분위수를 제공합니다.

 

print(train.describe())
 
 PassengerId    Survived      Pclass         Age       SibSp  \
count   891.000000  891.000000  891.000000  714.000000  891.000000   
mean    446.000000    0.383838    2.308642   29.699118    0.523008   
std     257.353842    0.486592    0.836071   14.526497    1.102743   
min       1.000000    0.000000    1.000000    0.420000    0.000000   
25%     223.500000    0.000000    2.000000   20.125000    0.000000   
50%     446.000000    0.000000    3.000000   28.000000    0.000000   
75%     668.500000    1.000000    3.000000   38.000000    1.000000   
max     891.000000    1.000000    3.000000   80.000000    8.000000   

            Parch        Fare  
count  891.000000  891.000000  
mean     0.381594   32.204208  
std      0.806057   49.693429  
min      0.000000    0.000000  
25%      0.000000    7.910400  
50%      0.000000   14.454200  
75%      0.000000   31.000000  
max      6.000000  512.329200  
 
print(test.describe())

 

PassengerId      Pclass         Age       SibSp       Parch        Fare
count   418.000000  418.000000  332.000000  418.000000  418.000000  417.000000
mean   1100.500000    2.265550   30.272590    0.447368    0.392344   35.627188
std     120.810458    0.841838   14.181209    0.896760    0.981429   55.907576
min     892.000000    1.000000    0.170000    0.000000    0.000000    0.000000
25%     996.250000    1.000000   21.000000    0.000000    0.000000    7.895800
50%    1100.500000    3.000000   27.000000    0.000000    0.000000   14.454200
75%    1204.750000    3.000000   39.000000    1.000000    0.000000   31.500000
max    1309.000000    3.000000   76.000000    8.000000    9.000000  512.329200

 

데이터셋의 NULL값은 isnull() 함수를 통해 확인해 보겠습니다.

 

print(train.isnull().sum())

 

train 데이터셋에서는 'Age', 'Cabin', 'Embarked' 변수에서 NULL값이 확인되었습니다.

 
PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

 

print(test.isnull().sum())

 

 

test 데이터셋에서는 'Age', 'Cabin', 'Fare' 변수에서 각각 확인되었습니다.

 

PassengerId      0
Pclass           0
Name             0
Sex              0
Age             86
SibSp            0
Parch            0
Ticket           0
Fare             1
Cabin          327
Embarked         0
dtype: int64

 

columns은 train의 열 이름을 출력하는 코드입니다.

 

print(train.columns)

 

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

 

print(test.columns)

 

Index(['PassengerId', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch',
       'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')
728x90