1. 캐글(Kaggle)
- 소개: 구글에서 운영하는 전 세계 AI 개발자 및 데이터 사이언티스트들이 데이터를 분석하고 토론할 수 있는 플랫폼입니다. 데이터 분석, 머신러닝, 딥러닝 대회를 개최하며 다양한 데이터셋, 파이썬 자료, R 자료 등을 제공합니다.
- 주요 기능:
- 데이터 분석 및 머신러닝, 딥러닝 대회 개최
- 다양한 데이터셋 제공 (공개, 비공개)
- 파이썬, R 프로그래밍 언어 학습 자료 제공
- 데이터 과학 커뮤니티 운영
- 활용 방법:
- 대회 참여: 머신러닝 실력 향상, 새로운 데이터셋 발굴
- 데이터셋 활용: 개인 연구, 프로젝트 진행
- 커뮤니티 참여: 다른 데이터 과학자들과 교류, 정보 공유
- 링크: https://www.kaggle.com/
2. 데이콘(Dacon)
- 소개: 국내 최초 AI 해커톤 플랫폼으로 전문 인력 채용 및 학습을 위한 다양한 AI 자료를 제공합니다.
- 주요 기능:
- AI 경진 대회 개최: 다양한 분야의 AI 문제 해결 능력 경쟁
- 온/오프라인 교육 제공: 데이터 과학 및 머신러닝 교육 프로그램
- 문제 기반 학습 서비스: 실제 문제 해결을 통한 학습 경험 제공
- 활용 방법:
- 대회 참여: AI 실력 검증, 경력 개발
- 교육 참여: 데이터 과학 및 머신러닝 지식 습득
- 학습 서비스 활용: 실무에 도움이 되는 실질적인 문제 해결 능력 향상
- 링크: https://dacon.io/
- https://dacon.io/
3. AI 허브
- 소개: 한국지능정보사회진흥원에서 운영하는 AI 통합 플랫폼으로 AI 기술 및 제품 서비스 개발에 필요한 AI 인프라를 제공합니다.
- 주요 기능:
- AI 알고리즘, 데이터셋, 컴퓨팅 자원 등 제공
- AI 모델 개발, 훈련, 평가를 위한 도구 제공
- AI 관련 기술 및 동향 정보 제공
- 활용 방법:
- AI 모델 개발: 알고리즘, 데이터셋, 컴퓨팅 자원 활용
- AI 모델 훈련 및 평가: 제공되는 도구 활용
- AI 기술 및 동향 파악: 관련 정보 활용
- 링크: https://www.aihub.or.kr/
- https://www.aihub.or.kr/
4. 타이타닉 데이터
- 소개: 타이타닉 침몰 사고와 관련된 승객 정보 데이터
- 데이터 구성:
- PassengerId: 승객 ID
- Survived: 생존 여부 (0: 사망, 1: 생존)
- Pclass: 좌석 등급
- Name: 이름
- Sex: 성별
- Age: 나이
- SibSp: 형제, 자매, 배우자 수
- Parch: 부모, 자식 수
- Ticket: 티켓 번호
- Fare: 요금
- Cabin: 선실 번호
- Embarked: 탑승 항구
- 활용:
- 머신러닝 모델 학습: 생존 여부 예측 모델 개발
- 데이터 분석: 생존 여부에 영향을 미치는 요인 분석
- 데이터 시각화: 데이터 패턴 및 통계 분석 결과 시각화
- 링크: 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[columns].head()
df['Survived'].head()
df['Survived'].value_counts()
5-2. 결측치 처리
- 누락된 데이터 값 처리 방법
-
- 삭제: 결측치가 있는 행/열 제거 (데이터 손실 발생 가능성)
- 보간: 평균, 중앙값, 최빈값 등으로 결측치 채우기 (데이터 분포 변형 가능성)
- 예측: 다른 변수를 활용하여 결측치 예측 (모델 학습 필요)
-
df.info()
df.isnull().sum()
df.isnull().mean()
df['Age'] = df['Age'].fillna(df['Age'].mean())
df['Age']
5-3. 라벨 인코딩(Label Encoding)
- 문자(Categorycal)를 수치(Numerical)로 변환
- 각 범주에 고유한 값 (숫자) 할당
- 단점: 범주 간 순서 반영 불가능, 희소 행렬 발생 가능성
df.info()
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()
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['Embarked'].value_counts() # null은 제거
embarked = le.fit_transform(df['Embarked'])
embarked # null: 3
le.classes_ # array(['C', 'Q', 'S', nan]
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()
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)
X_train.shape, X_test.shape
y_train.shape, y_test.shape
X_train
'머신러닝 & 딥러닝' 카테고리의 다른 글
6. 의사 결정 나무 (1) | 2024.06.11 |
---|---|
5. 선형 회귀 (0) | 2024.06.11 |
3. 아이리스 데이터셋 (0) | 2024.06.10 |
2. 사이킷런(Scikit-Learn) (0) | 2024.06.10 |
1. 머신러닝 (0) | 2024.06.10 |