1. 캐글(Kaggle)
- 구글에서 운영하는 전세계 데이터 사이언티스트들이 다양한 데이터를 분석하고 토론할 수 있도록 제공하는 커뮤니티
- 데이터 분석 및 머신러닝, 딥러닝 대회를 개회
- 많은 데이터셋, 파이썬 자료, R자료 등... 제공
2. 데이콘(Dacon)
- 국내 최초 AI 해커톤 플랫폼
- 전문 인력 채용과 학습을 할 수 있는 여러가지 AI 자료들을 제공
3. 타이타닉 데이터
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을 사용하여 데이터를 학습용과 테스트용으로 분할합니다.
'Study > 머신러닝과 딥러닝' 카테고리의 다른 글
[머신러닝과 딥러닝] 6. 의사 결정 나무 (0) | 2023.12.29 |
---|---|
[머신러닝과 딥러닝] 5. 선형 회귀 (0) | 2023.12.28 |
[머신러닝과 딥러닝] 3. 아이리스 데이터셋 (0) | 2023.12.23 |
[머신러닝과 딥러닝] 2. 사이킷런(Scikit-learn) (0) | 2023.12.22 |
[머신러닝과 딥러닝] 1. 개요 (0) | 2023.12.21 |