728x90
머신 러닝에서 사용하는 데이터
> 수치형 데이터 : 나이, 몸무게, 키
> 범주형 데이터 : 혈액형, 성별
> 머신 러닝의 경우 입력 데이터가 수치형 데이터여야 한다.
> 범주형 데이터는 수치형 데이터로 변환해야 한다.
> 1,2,3 숫자로 근데 이렇게 하면 혈액형에서의 크기가 생긴다.
> One-hot Encoding을 이용해서 하나의 새로운 열로 만들어준다!
> A형 B형 -> A형 열 B형 열
A형 | AB형 | B형 | O형 | 나이 |
0 | 0 | 1 | 0 | 25 |
1 | 0 | 0 | 0 | 36 |
> One-hot Encoding을 하면 엉뚱한 관계를 만들지 않으면서 수치형 데이터로 바꿀 수 있다.
import pandas as pd
TITANIC_FILE_PATH = 'C:/Users/user/Desktop/titanic.csv'
titanic_df = pd.read_csv(TITANIC_FILE_PATH)
titanic_df.head()
Unnamed: 0 Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 0 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 1 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 2 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 3 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 4 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN
Sex(성별), Embarked(배를 탄 장소) 해당 데이터는 범주형 데이터 -> One-hot Encoding -> 수치형 데이터로
titanic_sex_embarked = titanic_df[['Sex','Embarked']]
titanic_sex_embarked.head()
Sex Embarked
0 male S
1 female C
2 female S
3 female S
4 male S
one_hot_encoded_df = pd.get_dummies(titanic_sex_embarked)
one_hot_encoded_df.head()
Sex_female Sex_male Embarked_C Embarked_Q Embarked_S
0 0 1 0 0 1
1 1 0 1 0 0
2 1 0 0 0 1
3 1 0 0 0 1
4 0 1 0 0 1
> 위의 경우는 원하는 데이터만 가져와 One-hot Encoding을 수행
> 이번에는 전체 데이터에서 원하는 데이터를 One-hot Encoding 수행
> 원하는 데이터만 One-hot Encoding 된 것을 확인할 수 있다.
one_hot_encoded_df = pd.get_dummies(data=titanic_df, columns=['Sex','Embarked'])
one_hot_encoded_df.head()
Unnamed: 0 Survived Pclass Name Age SibSp Parch Ticket Fare Cabin Sex_female Sex_male Embarked_C Embarked_Q Embarked_S
0 0 0 3 Braund, Mr. Owen Harris 22.0 1 0 A/5 21171 7.2500 NaN 0 1 0 0 1
1 1 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... 38.0 1 0 PC 17599 71.2833 C85 1 0 1 0 0
2 2 1 3 Heikkinen, Miss. Laina 26.0 0 0 STON/O2. 3101282 7.9250 NaN 1 0 0 0 1
3 3 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) 35.0 1 0 113803 53.1000 C123 1 0 0 0 1
4 4 0 3 Allen, Mr. William Henry 35.0 0 0 373450 8.0500 NaN 0 1 0 0 1
- 최종 코드
import pandas as pd
TITANIC_FILE_PATH = 'C:/Users/user/Desktop/titanic.csv'
titanic_df = pd.read_csv(TITANIC_FILE_PATH)
titanic_sex_embarked = titanic_df[['Sex','Embarked']]
one_hot_encoded_df = pd.get_dummies(titanic_sex_embarked)
- 실습 코드
import pandas as pd
GENDER_FILE_PATH = './datasets/gender.csv'
gender_df = pd.read_csv(GENDER_FILE_PATH)
input_data = gender_df.drop(['Gender'], axis=1)
# 일단 목표 변수로 사용할 성별 열을 제외한 새로운 dataframe을 만들어줄게요.
# 여기 코드를 쓰세요
X = pd.get_dummies(input_data)
# 체점용 코드
X.head()
728x90
반응형
'Machine learning > Machine learning 강의' 카테고리의 다른 글
머신 러닝 데이터 전처리 #1 - Feature Scaling(min-max normalization) 0과 1사이 (0) | 2021.02.09 |
---|---|
머신 러닝 로지스틱 회귀(Logistic Regrssion)#3 - 로지스틱 회귀 구현하기, 와인 종류 예측하기 구현 (0) | 2021.02.09 |
머신 러닝 로지스틱 회귀(Logistic Regrssion)#2 - 손실 함수, 로그 손실 (0) | 2021.02.09 |
머신 러닝 로지스틱 회귀(Logistic Regrssion)#1 - 로지스틱 회귀란? (0) | 2021.02.08 |
머신 러닝 다항 회귀(Polynomial Regression) #2 - sklearn으로 다중 회귀, 당뇨병 예측 학습 프로그램 만들기 (0) | 2021.02.08 |
댓글