2μ£Όμ°¨μ—λŠ” '데이터닀루기'λΌλŠ” 주제둜

ν›ˆλ ¨μ„ΈνŠΈμ™€ ν…ŒμŠ€νŠΈμ„ΈνŠΈ, 데이터 μ „μ²˜λ¦¬μ— λŒ€ν•΄ ν•™μŠ΅ν–ˆλ‹€!

 

λ¨Έμ‹ λŸ¬λ‹μ€ 인곡지λŠ₯의 ν•œ λΆ„μ•Όλ‘œ, 컴퓨터가 '데이터'λ₯Ό μ΄μš©ν•˜μ—¬

ν•™μŠ΅ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ κΈ°μˆ μ΄λ‹€.

μž…λ ₯κ³Ό 좜λ ₯을 톡해 μ•Œκ³ λ¦¬μ¦˜μ„ λ„μΆœν•΄λ‚΄λŠ” 기술이며,

μ •λ‹΅κ°’μ˜ μœ λ¬΄μ— 따라 μ§€λ„ν•™μŠ΅κ³Ό λΉ„μ§€λ„ν•™μŠ΅,

λ‚˜μ•„κ°€ κ°•ν™”ν•™μŠ΅μœΌλ‘œ ꡬ뢄할 수 μžˆλ‹€.

 

μ§€λ„ν•™μŠ΅μ€ μ •λ‹΅κ°’(label, target)이 μžˆλŠ”

데이터셋을 톡해 ν•™μŠ΅ν•˜λŠ” 방식이닀.

​

크게 λΆ„λ₯˜μ™€ 예츑이 μžˆλŠ”λ°,

λΆ„λ₯˜λŠ” μ—¬λŸ¬ 개의 μΉ΄ν…Œκ³ λ¦¬κ°€ μžˆμ„ λ•Œ, 이 λ°μ΄ν„°λŠ” μ–΄λ–€ μΉ΄ν…Œκ³ λ¦¬μ— μ†ν•˜λŠ”μ§€ λΆ„λ₯˜ν•˜λŠ” 방법이닀.

KNN, SVM, Decision Tree, Logistic Regression λ“±μ˜ μ•Œκ³ λ¦¬μ¦˜μ΄ μ†ν•œλ‹€.

μ˜ˆμΈ‘μ€ μ–΄λ–€ μƒν™©μ΄λ‚˜ νŠΉμ§•μ΄ μ£Όμ–΄μ‘Œμ„ λ•Œ,

이 λ°μ΄ν„°μ˜ (μ—°μ†λœ) 값을 μ˜ˆμΈ‘ν•˜λŠ” 방법이닀.

이에 μ†ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ—λŠ” Linear Regression이 μžˆλ‹€.

​

λΉ„μ§€λ„ν•™μŠ΅μ€ μ •λ‹΅κ°’ 없이 λͺ¨λΈμ„ ν•™μŠ΅μ‹œν‚€λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

크게 이상값 감지와 κ·Έλ£Ήν™”κ°€ μžˆμŠ΅λ‹ˆλ‹€.

이상값 κ°μ§€λŠ” ν‰μ†Œμ™€λŠ” λ‹€λ₯Έ νŒ¨ν„΄μ΄λ‚˜ 값을 νŒŒμ•…ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

κ·Έλ£Ήν™”λŠ” μ–΄λ–€ νŠΉμ§•μ„ κΈ°μ€€μœΌλ‘œ 데이터λ₯Ό κ·Έλ£Ήν™”ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

K-means Clustering, DBSCAN Clustering λ“±μ˜ μ•Œκ³ λ¦¬μ¦˜μ΄ μ†ν•©λ‹ˆλ‹€.

​

κ°•ν™”ν•™μŠ΅μ€ μ‹œν–‰μ°©μ˜€λ₯Ό 톡해 ν•™μŠ΅ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

μ‹€μˆ˜μ™€ 보상을 톡해 ν•™μŠ΅ν•˜μ—¬ λͺ©ν‘œλ₯Ό ν–₯ν•΄ κ°€κ³ , μ˜ˆμ‹œλ‘œλŠ” μ•ŒνŒŒκ³ κ°€ μžˆμŠ΅λ‹ˆλ‹€.

​

μ§€λ„ν•™μŠ΅ 데이터셋은 ν›ˆλ ¨μ„ΈνŠΈμ™€ ν…ŒμŠ€νŠΈμ„ΈνŠΈλ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

μ•Œκ³ λ¦¬μ¦˜μ˜ μ„±λŠ₯을 ν‰κ°€ν•˜κΈ° μœ„ν•΄ ν›ˆλ ¨μ„ΈνŠΈμ™€ ν…ŒμŠ€νŠΈμ„ΈνŠΈκ°€ λ‹¬λΌμ•Όν•˜λ©°,

ν›ˆλ ¨μ„ΈνŠΈμ˜ 데이터가 ν…ŒμŠ€νŠΈμ„ΈνŠΈλ³΄λ‹€ λ§Žμ•„μ•Όν•˜κ³ ,

ν›ˆλ ¨μ„ΈνŠΈμ™€ ν…ŒμŠ€νŠΈμ„ΈνŠΈμ— μƒ˜ν”Œμ΄ 골고루 μ„žμ—¬μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

​

λ‘˜μ„ λ‚˜λˆ„λŠ” 방법은

numpy λ°°μ—΄μ˜ 인덱슀λ₯Ό μ„žλŠ” 방법과

scikit-learn νŒ¨ν‚€μ§€μ˜ train_test_split() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

​

 

데이터 μ „μ²˜λ¦¬λŠ” νŠΉμ • 뢄석에 μ ν•©ν•˜κ²Œ 데이터λ₯Ό κ°€κ³΅ν•˜λŠ” μž‘μ—…μ΄λ‹€.

데이터 뢄석 및 처리 κ³Όμ •μ—μ„œ μ€‘μš”ν•œ 단계이며,

쒋은 λ°μ΄ν„°λŠ” μ™„κ²°μ„±, μœ μΌμ„±, 톡일성을 κ°–λŠ” 데이터이닀.

​

데이터 μ „μ²˜λ¦¬μ˜ κΈ°λ²•μœΌλ‘œλŠ” 집계, μƒ˜ν”Œλ§, 차원 μΆ•μ†Œ, νŠΉμ§• 선택, νŠΉμ§• 생성, 이산화와 이진화, 속성 λ³€ν™”κ°€ μžˆλ‹€.

​

μ „μ²˜λ¦¬ ν•  λ•Œ μ£Όμ˜μ μœΌλ‘œλŠ” 작음, μ•„ν‹°νŽ™νŠΈ, 정밀도, 편ν–₯, 정확도, μ΄μƒμΉ˜,

결츑치, λͺ¨μˆœκ³Ό 뢈일치, 쀑볡 등이 μžˆλ‹€.

μ „μ²˜λ¦¬ 과정은 데이터 μˆ˜μ§‘ - μ •μ œ - 톡합 - μΆ•μ†Œ - λ³€ν™˜μ˜ μˆœμ„œλ₯Ό κ±°μΉœλ‹€.

​

μˆ˜μ§‘μ€ λͺ©μ κ³Ό λͺ©ν‘œκ°€ λ˜λŠ” 정보λ₯Ό μˆ˜μ§‘ν•˜λŠ” λ‹¨κ³„λ‘œ,

λ¬Έμ œμ •μ˜, 데이터 뢄석 기획과 μ‹œλ‚˜λ¦¬μ˜€κ°€ μ€‘μš”ν•˜λ‹€.

μ •μ œλŠ” 데이터λ₯Ό ν™œμš©ν•  수 μžˆλ„λ‘ λ§Œλ“œλŠ” κ³Όμ •μœΌλ‘œ,

λˆ„λ½κ°’, λΆˆμΌμΉ˜κ°’, 였λ₯˜κ°’을 μˆ˜μ •ν•˜λŠ” 단계이닀.

톡합은 μ„œλ‘œ λ‹€λ₯Έ 좜처의 μ—¬λŸ¬ 데이터λ₯Ό κ²°ν•©ν•˜λŠ” κ³Όμ •μœΌλ‘œ,

λ°μ΄ν„°μ„ΈνŠΈκ°€ ν˜Έν™˜μ΄ κ°€λŠ₯ν•˜λ„λ‘ 같은 객체, λ‹¨μœ„λ‚˜ μ’Œν‘œλ‘œ ν†΅ν•©ν•œλ‹€.

μΆ•μ†ŒλŠ” 뢄석을 μ‹€ν–‰ν•˜κΈ° μ–΄λ €μš΄ λŒ€μš©λŸ‰ λ°μ΄ν„°μ˜ 크기λ₯Ό μ€„μ΄λŠ” 과정이닀.

​

데이터 μ „μ²˜λ¦¬ μ „ 데이터λ₯Ό ν™•μΈν•˜λŠ” 과정을 κ±°μΉœλ‹€.

데이터 μ „μ²˜λ¦¬

κ²°μΈ‘μΉ˜λŠ” μ œκ±°ν•˜κ±°λ‚˜ λŒ€μΉ˜ν•˜κ±°λ‚˜ 예츑λͺ¨λΈμ„ 톡해 μ±„μšΈ 수 μžˆλ‹€.

​

μ œκ±°λŠ” λͺ©λ‘ μ‚­μ œμ™€ 단일값 μ‚­μ œ 방법이 μžˆλ‹€.

λͺ©λ‘ μ‚­μ œλŠ” κ²°μΈ‘μΉ˜κ°€ μžˆλŠ” ν–‰μ΄λ‚˜ 열을 μ „λΆ€ μ‚­μ œν•˜λŠ” 방법이닀.

단일값 μ‚­μ œλŠ” ν–‰/μ—΄ μžμ²΄κ°€ 결츑치일 λ•Œ,

ν˜Ήμ€ μ–΄λ– ν•œ 쑰건에 따라 μ‚­μ œν•˜λŠ” 방법이닀.

subset =[' ', ' '] μ˜΅μ…˜μœΌλ‘œ 쑰건뢀 μ‚­μ œκ°€ κ°€λŠ₯ν•˜λ‹€.

​

pandasμ—μ„œ λˆ„λ½ 데이터λ₯Ό μ œκ±°ν•˜λŠ” ν•¨μˆ˜λ‘œ dropna()λ₯Ό μ΄μš©ν•œλ‹€.

​

λŒ€μΉ˜λŠ” λ‹¨μˆœ λŒ€μΉ˜λ²•κ³Ό 닀쀑 λŒ€μΉ˜λ²•μ΄ μžˆλ‹€.

λ‹¨μˆœ λŒ€μΉ˜λ²•μ—λŠ” λ‹¨μˆœ μ‚­μ œ, 평균 λŒ€μΉ˜λ²•, λ‹¨μˆœν™•λ₯  λŒ€μΉ˜λ²•μ΄ 있으며,

쀑앙값, μ΅œλΉˆκ°’, 0, λΆ„μœ„μˆ˜, μ£Όλ³€κ°’, μ˜ˆμΈ‘κ°’ λ“±μœΌλ‘œ λŒ€μΉ˜ κ°€λŠ₯ν•˜λ‹€.

λ‹€μ€‘λŒ€μΉ˜λ²•μ€ λ‹¨μˆœλŒ€μΉ˜λ²•μ„ μ—¬λŸ¬λ²ˆ λ°˜λ³΅ν•˜λŠ” 방법이닀.

​

pandasμ—μ„œ 결츑치λ₯Ό λŒ€μ²΄ν•˜λŠ” ν•¨μˆ˜λŠ” ​fillna(), replace(), interpolate()κ°€ μžˆλ‹€.

 

예츑λͺ¨λΈμ€ 결츑값을 μ œμ™Έν•œ λ°μ΄ν„°λ‘œλΆ€ν„° λͺ¨λΈμ„ ν›ˆλ ¨ν•˜κ³ ,

좔정값을 κ³„μ‚°ν•˜κ³  결츑치λ₯Ό λŒ€μ²΄ν•˜λŠ” 방법이닀.

K-μ΅œκ·Όμ ‘ 이웃 λŒ€μ²΄, 가쀑 K-μ΅œκ·Όμ ‘ 이웃 λŒ€μ²΄, λ‘œμ§€μŠ€ν‹± νšŒκ·€,

μ„œν¬νŠΈ 벑터 λ¨Έμ‹ , 랜덀 포레슀트 방식 등이 μžˆλ‹€.

​

λ°μ΄ν„°μ˜ 쀑볡은 μ–Έμ œλ“ μ§€ 일어날 수 μžˆμ§€λ§Œ, 쀑볡 데이터 사이에

μ†μ„±μ˜ μ°¨μ΄λ‚˜ κ°’μ˜ λΆˆμΌμΉ˜κ°€ λ°œμƒν•œλ‹€λ©΄ λ¬Έμ œκ°€ 생기기 λ•Œλ¬Έμ—

κ·Έ 경우 두 개체λ₯Ό 합쳐 ν•˜λ‚˜μ˜ 개체λ₯Ό λ§Œλ“€κ±°λ‚˜,

μ‘μš©μ— μ ν•©ν•œ 속성을 κ°€μ§„ 데이터λ₯Ό μ„ νƒν•˜λŠ” λ“±

좔가적인 μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€.

 

β€‹λΆˆκ· ν˜•λ°μ΄ν„°λŠ” λΆ„λ₯˜λ₯Ό λͺ©μ μœΌλ‘œ ν•˜λŠ” 데이터셋에 λ²”μ£Όμ˜ λΉ„μœ¨μ΄ λΆˆκ· ν˜•ν•œ 경우 각 범주에 μ†ν•œ 데이터 개수의 차이가 큰 데이터이닀.

정상 λ²”μ£Όμ˜ 데이터 μˆ˜μ™€ 이상 λ²”μ£Όμ˜ 데이터 μˆ˜κ°€ ν˜„μ €νžˆ μ°¨μ΄λ‚œλ‹€λ©΄

이상 데이터λ₯Ό μ •ν™•νžˆ μ°Ύμ•„λ‚΄μ§€ λͺ»ν•  수 μžˆλ‹€λŠ” λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.

under samplingκ³Ό over sampling λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€.

​

imbalanced-learn νŒ¨ν‚€μ§€λŠ” λΆˆκ· ν˜•λ°μ΄ν„° 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ‹€μ–‘ν•œ μƒ˜ν”Œλ§ 방법을 κ΅¬ν˜„ν•œ 파이썬 νŒ¨ν‚€μ§€μ΄λ‹€.

Under Sampling은 λ‹€μˆ˜ λ²”μ£Όμ˜ 데이터λ₯Ό μ†Œμˆ˜ λ²”μ£Όμ˜ 크기에 맞게 μ€„μ΄λŠ” μƒ˜ν”Œλ§ 방식이닀.

계산 μ‹œκ°„μ΄ κ°μ†Œν•˜κ³ , μœ μ˜λ―Έν•œ λ°μ΄ν„°λ§Œ λ‚¨λŠ”λ‹€λŠ” μž₯점이 있고,

μ •λ³΄μ˜ 손싀이 λ°œμƒν•œλ‹€λŠ” 단점이 μžˆλ‹€.

​

1) Random Under Sampling

랜덀으둜 데이터λ₯Ό μ„ νƒν•˜μ—¬ μ œκ±°ν•˜λŠ” μƒ˜ν”Œλ§ 방법이닀.

λ¬΄μž‘μœ„λ‘œ μƒ˜ν”Œλ§ν•˜κΈ° λ•Œλ¬Έμ— 맀번 κ²°κ³Όκ°€ 달라진닀.

2) Tomek's Link

- μ„œλ‘œ λ‹€λ₯Έ 범주에 μ†ν•˜λŠ” ν•œ 쌍의 데이터λ₯Ό 묢은 ν›„

μ„œλ‘œ λ‹€λ₯Έ 데이터가 μ‘΄μž¬ν•˜μ§€ μ•Šκ²Œλ” λ§Œλ“ λ‹€.

- λ²”μ£Όκ°€ λ‹€λ₯Έ 두 데이터가 맀우 κ°€κΉŒμ΄ λΆ™μ–΄μžˆμœΌλ©΄ tomek linkκ°€ λœλ‹€.

- tomek linkμ—μ„œ κ·Έ 쀑 λ‹€μˆ˜ 범주에 μ†ν•˜λŠ” 데이터λ₯Ό μ œκ±°ν•˜λŠ” 방법이닀.

​

- 즉, κ²½κ³„μ„ μ—μ„œ λΆ™μ–΄μžˆλŠ” μ„œλ‘œ λ‹€λ₯Έ λ²”μ£Όμ˜ 데이터 ν•œ 쌍이 tomek link이고, κ·Έ 쀑 λ‹€μˆ˜ 범주에 ν•΄λ‹Ήν•˜λŠ” 데이터λ₯Ό μ§€μš°λŠ” 방법이닀.

​

- λ‹€μˆ˜ λ²”μ£Ό λ°μ΄ν„°μ˜ 쀑심 뢄포λ₯Ό μœ μ§€ν•˜κ³ , 정보 μœ μ‹€μ΄ μ λ‹€λŠ” μž₯점이 있고,

tomek link둜 λ¬Άμ΄λŠ” 값이 ν•œμ •μ μ΄λ‹€λŠ” 단점이 μžˆλ‹€.

 
 

3) Condensed Nearest Neighbor (CNN)

- μ†Œμˆ˜ 범주에 μ†ν•˜λŠ” 데이터 전체 + λ‹€μˆ˜ 범주에 μ†ν•˜λŠ” 데이터 쀑

μž„μ˜μ˜ ν•œ 데이터 -> μ„œλΈŒλ°μ΄ν„° 생성

- λ‹€μˆ˜ 범주에 μ†ν•˜λŠ” λ‚˜λ¨Έμ§€ 데이터듀 쀑 ν•˜λ‚˜μ”© K=1인 1-NN μ•Œκ³ λ¦¬μ¦˜μ„

μ΄μš©ν•˜μ—¬ 데이터가 λ¬΄μž‘μœ„λ‘œ μ„ νƒν•œ λ‹€μˆ˜ λ²”μ£Ό 데이터와 κ°€κΉŒμš΄μ§€, μ†Œμˆ˜ λ²”μ£Ό 데이터와 κ°€κΉŒμš΄μ§€ ν™•μΈν•˜μ—¬ κ°€κΉŒμš΄ λ²”μ£Όλ‘œ μž„μ‹œ λΆ„λ₯˜ν•©λ‹ˆλ‹€.

- 이 κ³Όμ • 반볡 ν›„ 정상 λΆ„λ₯˜λœ λ‹€μˆ˜ λ²”μ£Ό κ΄€μΈ‘μΉ˜λ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.

3-nn을 μ‚¬μš©ν•  경우 λͺ¨λ“  μƒ˜ν”Œμ΄ μ†Œμˆ˜ λ²”μ£Όλ‘œ λΆ„λ₯˜λ˜κΈ° λ•Œλ¬Έμ— κ²°κ΅­ μ–΄λ–€ μƒ˜ν”Œλ„ μ œκ±°λ˜μ§€ μ•ŠλŠ”λ‹€.

-> 항상 1-nn을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

Over Sampling은 μ†Œμˆ˜ λ²”μ£Όμ˜ 데이터λ₯Ό λ‹€μˆ˜ λ²”μ£Όμ˜ 데이터 μˆ˜μ— 맞게 λŠ˜λ¦¬λŠ” 방식이닀.

​

1) Random Over Sampling

- μ†Œμˆ˜ λ²”μ£Όμ˜ 데이터λ₯Ό λ°˜λ³΅ν•˜μ—¬ λ„£λŠ” μ˜€λ²„ μƒ˜ν”Œλ§ 방법이닀.

- RandomOverSampler: random sampler

​

2) ADASYN (Adaptive Synthetic Sampling)

- μ†Œμˆ˜ λ²”μ£Ό 데이터와 κ·Έ λ°μ΄ν„°μ—μ„œ κ°€μž₯ κ°€κΉŒμš΄ k개의 μ†Œμˆ˜ λ²”μ£Ό 데이터 쀑 λ¬΄μž‘μœ„λ‘œ μ„ νƒλœ 데이터 μ‚¬μ΄μ˜ 직선 상에 κ°€μƒμ˜ μ†Œμˆ˜ λ²”μ£Ό 데이터λ₯Ό λ§Œλ“œλŠ” 방법이닀.

- μœ λ™μ μœΌλ‘œ μ†Œμˆ˜ λ²”μ£Ό 데이터λ₯Ό 생성할 수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€.

​

- λͺ¨λ“  μ†Œμˆ˜ λ²”μ£Ό 데이터에 λŒ€ν•΄ κ°€κΉŒμš΄ k개의 데이터 탐색

-> νƒμƒ‰λœ 데이터 쀑 λ‹€μˆ˜ λ²”μ£Ό κ΄€μΈ‘μΉ˜ λΉ„μœ¨ 계산

-> λΉ„μœ¨μ— 따라 κ°€μƒμ˜ μ†Œμˆ˜ λ²”μ£Ό 데이터 생성

3) SMOTE (Synthetic Minority Oversampling Technique)

- ADASYN λ°©μ‹μ²˜λŸΌ 데이터λ₯Ό μƒμ„±ν•˜μ§€λ§Œ, 생성 데이터λ₯Ό 무쑰건 μ†Œμˆ˜ λ²”μ£Όλ‘œ

λΆ„λ₯˜ν•˜μ§€ μ•Šκ³  λΆ„λ₯˜ λͺ¨ν˜•에 따라 λΆ„λ₯˜ν•˜λŠ” 방식이닀.

​

- μ†Œμˆ˜ λ²”μ£Όμ˜ ν•œ 데이터 μ£Όλ³€ κ°€κΉŒμš΄ k개의 데이터 탐색

- νƒμƒ‰ν•œ 데이터 μƒ˜ν”Œ 사이에 μƒˆλ‘œμš΄ 데이터 생성

- μƒμ„±λœ 데이터λ₯Ό λΆ„λ₯˜ λͺ¨ν˜•에 따라 λ‹€μˆ˜ λ˜λŠ” μ†Œμˆ˜ λ²”μ£Όλ‘œ λΆ„λ₯˜

​

- μ„ νƒλœ 두 κ΄€μΈ‘μΉ˜μ— λŒ€ν•΄ 식을 톡해 κ°€μƒμ˜ κ΄€μΈ‘μΉ˜λ₯Ό μƒμ„±ν•œλ‹€.

μ΄λ•Œ 두 점 μ‚¬μ΄μ˜ 거리λ₯Ό μ΄μš©ν•œλ‹€.

 

두 κ°€μ§€μ˜ μƒ˜ν”Œλ§ 방식을 κ²°ν•©ν•œ ​볡합 μƒ˜ν”Œλ§ 방식​도 μžˆλ‹€.

1) SMOTEENN : SMOTE + ENN (Edited Nearest Neighbors)

- X_samp, Y_samp = SMOTEENN(random_state=0).fit_sample(X_imb, Y)_imb)

​

2) SMOTETomek : SMOTE + Tomek

- X_samp, Y_samp = SMOTETomek(random_state=4).fit_sample(X_imb, Y_imb)

 

λ ˆμ΄λΈ” 인코딩은 λ¬Έμžμ—΄ μΉ΄ν…Œκ³ λ¦¬ ν”Όμ²˜λ₯Ό μ½”λ“œν˜• μˆ«μžκ°’μœΌλ‘œ λ³€ν™˜β€‹ν•˜λŠ” 방법이닀.

λ¬Έμžμ—΄ μΉ΄ν…Œκ³ λ¦¬ ν”Όμ²˜λŠ” μΉ΄ν…Œκ³ λ¦¬ν˜•κ³Ό ν…μŠ€νŠΈν˜•μ„ μ˜λ―Έν•œλ‹€.

​

μ»΄ν“¨ν„°λŠ” λ¬Έμžλ³΄λ‹€ 숫자λ₯Ό 더 잘 μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ—

μˆ«μžκ°’μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것이 μœ λ¦¬ν•˜λ‹€.

특히 scikit-learn의 μ•Œκ³ λ¦¬μ¦˜μ€ λ¬Έμžμ—΄κ°’μ„ μž…λ ₯κ°’μœΌλ‘œ μ‚¬μš©ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—

λ ˆμ΄λΈ” 인코딩이 ν•„μš”ν•˜λ‹€.

μ΄λ•Œ μˆ«μžκ°’ μžμ²΄μ—λŠ” μ˜λ―Έκ°€ μ—†κΈ° λ•Œλ¬Έμ—, νšŒκ·€μ™€ 같이 μˆ«μžκ°’μ— 의미λ₯Ό λΆ€μ—¬ν•˜λŠ” 일뢀 μ•Œκ³ λ¦¬μ¦˜μ—μ„œλŠ” 예츑 μ„±λŠ₯이 μ €ν•˜λ  수 μžˆλ‹€.

​

pandasμ—μ„œλŠ” pd.factorize() ν•¨μˆ˜λ‘œ 인코딩값과 범주값을 λ°˜ν™˜ν•  수 μžˆλ‹€.

scikit-learnμ—μ„œλŠ” encoder = LabelEncoder() ν•¨μˆ˜λ‘œ 인코딩을 ν•  수 μžˆλ‹€.

encoder.fit() : ν•™μŠ΅

encoder.transform() : λ³€ν™˜

encoder.fit_transform() : fit, transform ν•œλ²ˆμ—

​

원핫인코딩은 ν”Όμ²˜κ°’μ˜ μœ ν˜•μ— 따라 μƒˆλ‘œμš΄ ν”Όμ²˜λ₯Ό μΆ”κ°€ν•΄ κ³ μœ κ°’μ—

ν•΄λ‹Ήν•˜λŠ” μΉΌλŸΌμ—λ§Œ 1을 ν‘œμ‹œν•˜κ³ , λ‚˜λ¨Έμ§€ μΉΌλŸΌμ—λŠ” 0을 ν‘œμ‹œν•˜λŠ” 방법이닀.

​

λ³€ν™˜ μ „ λͺ¨λ“  λ¬Έμžμ—΄ 값이 μˆ«μžν˜•μœΌλ‘œ λ³€ν™˜λ˜μ–΄μ•Ό ν•˜λ©°,

μž…λ ₯κ°’μœΌλ‘œ 2차원 데이터가 ν•„μš”ν•˜λ‹€.

μ˜λ―Έμ—†λŠ” 숫자의 크기 차이λ₯Ό λ§Œλ“œλŠ” λ ˆμ΄λΈ” μΈμ½”λ”©μ˜ 단점을 보완할 수 μžˆλ‹€.

ν•˜μ§€λ§Œ λ‹¨μ–΄μ˜ κ°œμˆ˜κ°€ λŠ˜μ–΄λ‚ μˆ˜λ‘ ν•„μš”ν•œ μ €μž₯곡간이 λŠ˜μ–΄λ‚˜κΈ° λ•Œλ¬Έμ—

μ €μž₯κ³΅κ°„μ˜ μΈ‘λ©΄μ—μ„œ λΉ„νš¨μœ¨μ μ΄λΌλŠ” 단점이 μžˆλ‹€.

Feature Scaling은 μ„œλ‘œ λ‹€λ₯Έ λ³€μˆ˜μ˜ κ°’ λ²”μœ„λ₯Ό μΌμ •ν•œ μˆ˜μ€€μœΌλ‘œ λ§žμΆ”λŠ” μž‘μ—…μ΄λ‹€.

λ³€μˆ˜κ°’μ˜ λ²”μœ„ λ˜λŠ” λ‹¨μœ„κ°€ λ‹¬λΌμ„œ λ°œμƒ κ°€λŠ₯ν•œ 문제λ₯Ό μ˜ˆλ°©ν•  수 있고,

λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ΄ νŠΉμ • 데이터에 biasλ₯Ό κ°–λŠ” 것을 λ°©μ§€ν•  수 μžˆλ‹€.

​

ν‘œμ€€ν™” -> μ΄μƒμΉ˜ 발견 및 제거(z-score ν™œμš©) -> μ •κ·œν™”μ˜ μˆœμ„œλ‘œ μ§„ν–‰λœλ‹€.

​

ν‘œμ€€ν™”λŠ” μ„œλ‘œ λ‹€λ₯Έ λ²”μœ„μ˜ λ³€μˆ˜λ“€μ„ 평균이 0이고 뢄산이 1인 κ°€μš°μ‹œμ•ˆ μ •κ·œλΆ„ν¬λ₯Ό κ°€μ§„ κ°’μœΌλ‘œ λ³€ν™˜ν•˜λŠ” μž‘μ—…μ΄λ‹€.

Standard score을 κ΅¬ν•˜λŠ” 방법과 scikit-learn을 μ΄μš©ν•˜λŠ” 방법이 μžˆλ‹€.

standard score(z-score)λŠ” μš°μ„  평균과 ν‘œμ€€νŽΈμ°¨λ₯Ό κ΅¬ν•œ ν›„,

ν›ˆλ ¨μ„ΈνŠΈμ™€ ν…ŒμŠ€νŠΈμ„ΈνŠΈλ₯Ό 각각 ν‘œμ€€ν™”ν•˜λŠ” 방법이닀.

​

scikit-learn νŒ¨ν‚€μ§€μ—μ„œλŠ”

from sklearn.preprocessinig import StandardScaler둜 νŒ¨ν‚€μ§€λ₯Ό importν•˜κ³ 

standard_scaler = StandardScaler()둜 μ •μ˜ν•˜μ—¬ ν‘œμ€€ν™”ν•  수 μžˆλ‹€.

​

Scaler에 μ˜ν•΄ λ³€ν™˜λœ λ°μ΄ν„°λŠ” ndarrayν˜•μ‹μ΄λ―€λ‘œ

dataframe ν˜•μ‹μœΌλ‘œμ˜ λͺ…μ‹œμ  λ³€ν™˜μ΄ ν•„μš”ν•˜λ‹€.

 

μ •κ·œν™”λŠ” λ³€μˆ˜κ°’λ“€μ„ λͺ¨λ‘ 0κ³Ό 1 μ‚¬μ΄μ˜ κ°’μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방식이닀.

from sklearn.preprocessing import MinMaxScaler둜 importν•˜κ³ ,

scaled = MinMaxScaler().fit_transform(x.reshape(-1,1)) 처럼 μ‚¬μš©ν•œλ‹€.

 

+ Recent posts