1. 캐글(Kaggle)

https://kaggle.com

  • 구글에서 운영하는 전세계 데이터 사이언티스트들이 다양한 데이터를 분석하고 토론할 수 있도록 제공하는 커뮤니티
  • 데이터 분석 및 머신러닝, 딥러닝 대회를 개회
  • 많은 데이터셋, 파이썬 자료, R자료 등... 제공
 

Kaggle: Your Machine Learning and Data Science Community

Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.

www.kaggle.com


2. 데이콘(Dacon)

https://dacon.io/

  • 국내 최초 AI 해커톤 플랫폼
  • 전문 인력 채용과 학습을 할 수 있는 여러가지 AI 자료들을 제공
 

데이터사이언티스트 AI 컴피티션

8만 AI 팀이 협업하는 데이터 사이언스 플랫폼. AI 경진대회와 대상 맞춤 온/오프라인 교육, 문제 기반 학습 서비스를 제공합니다.

dacon.io


3. 타이타닉 데이터

train.csv
0.06MB


 

 

1. 필요한 라이브러리 임포트 및 데이터 로드

import numpy as np
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 : 탑승 항구

 

2. 데이터 전처리

  • 데이터 정제(가공) 작업을 뜻함.
  • 필요없는 데이터를 삭제하고, null 값이 있는 행을 처리하고, 정규화/표준화 등의 많은 작업들을 포함
  • 머신러닝, 딥러닝 실무에서 전처리가 50% 이상의 중요도를 차지함.

2-1. 독립 변수와 종속변수 나누기

feature = ['Pclass', 'Sex', 'Age', 'Fare'] # 독립변수 선택
label = ['Survived'] # 종속변수 선택

분석을 위해 선택한 독립변수는 'Pclass', 'Sex', 'Age', 'Fare'입니다.

종속변수는 'Survived'로, 승객의 생존 여부를 나타냅니다.

 

# 선택한 독립 변수들에 대한 데이터프레임의 상위 5개를 출력
df[feature].head()

 

# 종속변수의 데이터프레임 상위 5개를 출력
df[label].head()

 

# 종속변수의 값을 확인
df[label].value_counts()

 

2-2. 결측치 처리

# 결측치 확인 및 처리 코드
df.isnull().sum() # 결측치 합계 확인
df['Age'] = df['Age'].fillna(df['Age'].mean()) # 나이의 결측치를 평균값으로 채움

결측치는 데이터 분석의 정확도를 떨어뜨릴 수 있으므로, 적절한 방법(예: 평균값으로 대체)으로 처리합니다.

 

# 전체 결측치 확인
df.isnull().sum()

# 퍼센트 형식으로 출력
df.isnull().mean()

 

# 평균 나이를 구해서 데이터를 삽입
df['Age'] = df['Age'].fillna(df['Age'].mean())
df['Age']

2-3. 라벨 인코딩

# 성별을 숫자로 인코딩하는 함수
def convert_sex(data):
    if data == 'male':
        return 1
    elif data == 'female':
        return 0

df['Sex'] = df['Sex'].apply(convert_sex) # 성별 데이터 인코딩

문자형 데이터를 수치형으로 변환하는 과정입니다. 예를 들어, 'male'은 1로, 'female'은 0으로 변환합니다.

 

2-4. 원 핫 인코딩

# 탑승 항구에 대한 원 핫 인코딩
df = pd.get_dummies(df, columns=['Embarked'])

범주형 데이터를 개별 컬럼으로 분리하고, 각 컬럼에서 해당 값에 1을 할당하고 나머지는 0으로 설정합니다.

이는 모델이 데이터를 더 잘 이해하도록 도와줍니다.

 

3. 모델 준비 및 학습

from sklearn.model_selection import train_test_split

# 데이터를 학습용과 테스트용으로 분할
X_train, X_test, y_train, y_test = train_test_split(df[feature], df[label], test_size=0.2, random_state=2023)

train_test_split을 사용하여 데이터를 학습용과 테스트용으로 분할합니다.