Kaggle(캐글) - 타이타닉 생존자 예측 초보자 튜토리얼[Hellfer](1)
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')