■ 공부/ML DL

4. 타이타닉 데이터 셋

J U N E 2024. 6. 13. 16:28

1. 캐글(Kaggle)
구글에서 운영하는 전세계 AI개발자, 데이터 사이언티스트들이 데이터를 분석하고 토론할 수 있는 자료 등을 제공데이터 분석 및 머신러닝, 딥러닝 대회를 개최데이터셋, 파이썬 자료, R 자료 등을 제공
캐글사이트
2. 데이콘(Dacon)
국내 최초의 AI 해커톤 플랫폼전문 인력 채용과 학습을 할 수 있는 여러가지 AI자료 등을 제공
데이콘
3. AI허브
한국지능정보사회진흥원이 운영하는 AI통합 플랫폼AI기술 및 제품 서비스 개발에 필요한 AI 인프라를 제공
4. 타이타닉 데이터
https://bit.ly/fc-ml-titanic
import pandas as pd
df = pd.read_csv('https://bit.ly/fc-ml-titanic')
df

PassengerId: 승객 아이디
Survived: 생존여부(0: 사망, 1: 생존)
Pclass: 좌석 등급
Name: 이름
Sex: 성별
Age: 나이
SibSp: 형제, 자매, 배우자 수
Parch: 부모, 자식 수
Ticket: 티켓 번호
Fare: 요금
Cabin: 선실
Embarked: 탑승 항구
5. 데이터 전처리
데이터 정제 작업을 뜻함필요없는 데이터를 삭제하고, null이 있는 행을 처리하고, 정규화/표준화 등의 많은 작업들을 포함한 과정
머신러닝, 딥러닝 실무에서 전처리가 차지하는 중요도는 50%이상이라고 봄
5-1. 독립변수와 종속변수 나누기
# feature = ['Pclass', 'Sex', 'Age', 'Fare'] # 독립변수
# label =  ['Survived'] # 종속변수
columns = ['Pclass', 'Sex', 'Age', 'Fare', 'Survived']
# 생존과 관련있는 컬럼 찾아보는 것이 목표
df['Survived'].head()

 

df['Survived'].value_counts()

0: 사망 / 1: 생존

5-2. 결측치 처리
df.info()

Age와 Cabin, Embarked에서 결측값 있음 확인

 

df.isnull().sum()

 

df.isnull().mean() # null의 비율

 

# Age는 생존과 밀접관련이 있을 수도 있으므로, null값은 평균값으로 대입하여 분석에 이용한다.
df['Age'] = df['Age'].fillna(df['Age'].mean())
df['Age']

 

5-3. 라벨 인코딩(Label Encoding)
문자(Categorical)를 수치(Numerical)로 변환

 

df.info()

Dtype : Object형은 될 수 있으면 숫자로 변환해 주는 것이 좋다.

 

# 성별을 수치화
df['Sex'].value_counts()

 

# 남자는 1, 여자는 0으로 변환하는 함수
def convert_sex(data):
    if data == 'male':
        return 1
    elif data =='female':
        return 0
df['Sex'] = df['Sex'].apply(convert_sex)
df.head()

int로 잘 변환되었다.

 

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['Embarked'].value_counts() # null은 제거

 

embarked = le.fit_transform(df['Embarked']) # 0: S, 1: C, 2: Q
embarked # null: 3

3 찾아보기 ㅎㅅㅎ

le.classes_  # 0: S, 1: C, 2: Q

 

5-4. 원 핫 인코딩(One Hot Encoding)
독립적인 데이터는 별도의 컬럼으로 분리하고 각각 컬럼에 해당 값에만 1, 나머지는 0의 값을 갖게 하는 방법
df['Embarked_num'] = LabelEncoder().fit_transform(df['Embarked'])
df.head()
pd.get_dummies(df['Embarked_num'])

df = pd.get_dummies(df, columns=['Embarked'])
df.head()

df = df[columns]
df

 

df = pd.get_dummies(df, columns=['Pclass', 'Sex'])
df.head()

Pclass와 성별도 원 핫 인코딩처리

 

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df.drop('Survived', axis=1), df['Survived'], test_size=0.2, random_state=2024)

 

 

'■ 공부 > ML DL' 카테고리의 다른 글

딥러닝 학습순서  (0) 2024.07.02
머신러닝 알고리즘 정리  (0) 2024.06.22
3. 아이리스 데이터 셋  (0) 2024.06.13
2. 사이킷런  (0) 2024.06.12
1. 머신러닝  (1) 2024.06.12