2016-09-05 2 views
0

팬더에는 get_dummies 방법이 있습니다. 단 하나의 핫 코드는 범주 형 변수를 인코딩합니다.팬더의 라벨 매끄럽게하기 (부드러운 타겟)

라벨 스무딩 하드 및 를 대체하여 K 출력 값으로 softmax를 기반으로 모델을 regularizes : Deep Learning 책의 섹션 7.5.1에 ​​설명 된대로 지금은 라벨 스무딩을 수행 할 목표는 각각 eps/k1 - (k - 1)/k * eps입니다.

팬더 데이터 프레임에서 라벨 스무딩을하는 가장 효율적이고 우아한 방법은 무엇입니까?

답변

4

먼저 훨씬 간단한 공식을 사용하십시오 (ϵ은 "실제 레이블"에서 얼마나 많은 확률로 이동하여 나머지 모든 레이블에 배포 할 것인지 나타냄). 당신이해야 할 모든

x -> x * (1 - ϵ) + (1-x) * ϵ/(k-1) 

을하기 때문에

1 -> 1 - ϵ 
0 -> ϵ/(k-1) 

당신은 단순히 따라서 귀하의 더미 열 a, b, c, d 경우 만 수행 위의 멋진 수학적 속성을 사용할 수 있습니다

indices = ['a', 'b', 'c', 'd'] 
eps = 0.1 
df[indices] = df[indices] * (1 - eps) + (1-df[indices]) * eps/(len(indices) - 1) 

하는

>>> df 
    a b c d 
0 1 0 0 0 
1 0 1 0 0 
2 0 0 0 1 
3 1 0 0 0 
4 0 1 0 0 
5 0 0 1 0 

 a   b   c   d 
0 0.900000 0.033333 0.033333 0.033333 
1 0.033333 0.900000 0.033333 0.033333 
2 0.033333 0.033333 0.033333 0.900000 
3 0.900000 0.033333 0.033333 0.033333 
4 0.033333 0.900000 0.033333 0.033333 
5 0.033333 0.033333 0.900000 0.033333 

을 예상대로 반환합니다.

+0

실제로, 제안한 방정식은 훨씬 간단합니다. 고맙습니다! –