📖
Simple & Clear Engineer Note
  • This is me
  • Infra 용어
  • Linux Acceptance test
    • ISO 9126의 특성에 따른 OS 항목 분류
    • 기능성 (Functionality)
      • Kernel 영역
      • LVM (Logical Volume Manager)
      • API (daemon 서비스 상태 체크)
      • CPU 정보 및 Firmware 확인
      • Memory 용량 및 Slot 확인
      • Negotiation 상태 확인
      • Raid 구성 확인
      • WEB/WAS 설치
      • Cache/Swap 메모리 초기화
      • NFS (Network File System)
    • 신뢰성 (Reliability)
      • Bonding
      • System Reboot
      • Disk Mirror
      • Multipath
      • Cluster
      • Backup & Optical Drive check
      • kdump
      • watchdogtimer
    • 사용성 (Usability)
      • Locale
      • Network 구성
      • Hosts file
      • DNS(Domain Name System)
      • NTP(Network Time Protocol) 시간 동기화
      • tcpdump
      • SSH (Secure Shell)
      • Runlevel
      • Crontab 작업 예약
      • TimeZone
      • VNC(Virtual Network Computing)
      • Yum local repository
    • 유지보수성 (Maintenance)
      • hdparm
    • 보안성 (Security)
      • Permission error 해결방법
    • 기타(ETC)
      • X window
      • Macro (Shell Script & TeraTerm(TTL))
  • Webserver
    • Infra Structure 소개
      • HTML +CSS +JavaScript
      • MongoDB + Flask
  • Hadoop Guide
    • Hadoop Single설치 (ver 2.7.4)
  • MachineLearning
    • 확률(Probability)
    • Machine learning이해하기
    • Processing Data(Numpy)
    • Data Handling - Pandas
      • feature Scaling
      • Data encoding
    • Analysis(with Python & R)
      • 기초통계지식
      • 회귀(Regression)
      • 분류(Classification)
      • 차원축소(Dimension Reduction)
      • 군집화(Clustering)
      • 평가(Evaluation)
      • Scikitlearn
    • Text Analysis
    • Time Series Analysis
    • Statistics
    • Customer Value Analysis
  • Deep Learning
    • CS231n
      • CS231n (Lecture 1~6)
      • CS231n(Lecture7~12)
  • DataBase
    • DataBase
    • Transaction
    • Oracle 12C setup
    • MySQL setup
    • neo4j Enterprise Setup
    • SQL
    • Data inquiry and data analysis using SQL
    • 품질 & RiskManagement
    • 성능(Performance)
    • 안정성
    • 이기종간 데이터 이관방법
  • 기타
    • JAVA용어정리(암기)
  • Windows 관리
    • WINDOW 서버 root 권한 설정 방법
    • 접속자 확인
  • EMRproject
    • Git & Github
Powered by GitBook
On this page
  • Label Encoding
  • CodeReview
  • Titanic_code Review (Labelencoding(Cabin,Embarked,sex variable)
  • One-hot Encoding
  • CodeReview
  • Titanic_code Review One-hot encoding(Cabin,Embarked,Sex variable)
  • Reference

Was this helpful?

  1. MachineLearning
  2. Data Handling - Pandas

Data encoding

레이블(Label)인코딩과 원핫(One-hot)인코딩 소개

Previousfeature ScalingNextAnalysis(with Python & R)

Last updated 5 years ago

Was this helpful?

Label Encoding

문자열 데이터 값들을 숫자 값(Categorical )으로 변환하는 방식이지만 숫자값들이 서로 연관이 없음에 관계성(대소관계)이 생겨 원치 않은 방향으로 흐를 수 있다.

CodeReview

  • 파이썬 머신러닝완벽가이드 참조

from sklearn.preprocessing import LabelEncoder

Appliances = [ 'TV', '냉장고', '에어드레서' , '세탁기', '노트북', '모니터', '기타']

encoder= LabelEncoder() #객체생성

encoder.fit(Appliances) #틀을 만든다 생각...

Labels= encoder.transform(Appliances) #실제변환

print(Labels)

print('encoder class : ', encoder.classes_) # 인코더 클래스값

print('decoder variable?', encoder.inverse_transform([0, 2, 6, 5, 3, 4, 1])) #원본값

Titanic_code Review (Labelencoding(Cabin,Embarked,sex variable)

필요한 모듈생성

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

데이터 가져오기

train = pd.read_csv('./train.csv')

train.head()

print('Null 값 수 ',train.isnull().sum()) #cabin의 전체 891개중 204개밖에 없음을 알 수있다.또한 embarked도 2개모자라다.

범주형 변수들(cabin,Embarked) 전처리

#Cabin

train['Cabin'].fillna('N',inplace=True) #891개 중 687개를 N이라는 글자로 채움

train['Cabin'] = train['Cabin'].str[:1] #객실의 방번호를 제외하고 앞글자만 가져오기

train['Cabin'].value_counts()

#Embarked

train['Embarked'].fillna('Q',inplace=True) #2개를 Q로 채

print('Null 값 수 ',train.isnull().sum())

Label Encoding

from sklearn.preprocessing import LabelEncoder

#함수생성(labelencoder 생성 )

def encode_features(dataDF):

features = ['Cabin', 'Sex', 'Embarked']

for feature in features:

encoder= LabelEncoder() #객체생성

encoder.fit(dataDF[features]) #틀을 만든다 생각...

dataDF[features]= encoder.transform(dataDF[features])

return dataDF

#Labelencoder 함수 적

train = encode_features(train)

train.head()

One-hot Encoding

피쳐 유형에 따라 새로운 피쳐를 추가하여 해당컬럼값만 1을 표시하고 이외에는 0을 표기하는 방식이 있고 더 편리한 방식으로는 Pandas의 pd.get_dummies(Dataframe)를 이용한다.

한 가지 덧붙여 말하자면, R에서는 factor값으로 변환하는데, Python에서는 factor로 변환기능이 없기로 알고 있다.

CodeReview

  • 파이썬 머신러닝완벽가이드 참조

scikitlearn preprocessing 부분의 One-hot Encoder 경우 2차원 데이터로 변환하는 번거로움이 있어서 Pandas로 간단 변환하는 방식만 다루겠다.

import pandas as pd

df_appliances= pd.DataFrame( {'appliance':['TV', '냉장고', '에어드레서' , '세탁기', '노트북', '모니터', '기타']})

print(df_appliances.shape) # 초기 7행 1열의 dataframe 형태

print(df_appliances)

df_appliances=pd.get_dummies(df_appliances) #get_dummies를 이용해 피쳐 늘리기

print(df_appliances.shape)

df_appliances.head() #7행7열로 피쳐가 늘어났을 알 수 있다.

Titanic_code Review One-hot encoding(Cabin,Embarked,Sex variable)

  • 위에서 Label Encoding codereview 를 바탕으로 이어 나가겠다.

train=pd.get_dummies(train['Cabin', 'Sex', 'Embarked']) #get_dummies를 이용해 피쳐 늘리기

print(train.shape)

train.head()

Reference

Label , One-hot figure :

https://medium.com/@michaeldelsole/what-is-one-hot-encoding-and-how-to-do-it-f0ae272f1179
https://medium.com/@michaeldelsole/what-is-one-hot-encoding-and-how-to-do-it-f0ae272f1179
df_appliances.head()