예 확실히 데이터를 표준화해야합니다. 다음 예를 살펴 보겠습니다 :
이
from fancyimpute import SoftImpute
import numpy as np
v=np.random.normal(100,0.5,(5,3))
v[2,1:3]=np.nan
v[0,0]=np.nan
v[3,0]=np.nan
SoftImpute().complete(v)
결과는 내가 nan
을 넣어 장소가 완전히 꺼져 있다는 것을
array([[ 81.78428587, 99.69638878, 100.67626769],
[ 99.82026281, 100.09077899, 99.50273223],
[ 99.70946085, 70.98619873, 69.57668189],
[ 81.82898539, 99.66269922, 100.95263318],
[ 99.14285815, 100.10809651, 99.73870089]])
주입니다. 그러나, 대신 당신이
from fancyimpute import SoftImpute
import numpy as np
v=np.random.normal(0,1,(5,3))
v[2,1:3]=np.nan
v[0,0]=np.nan
v[3,0]=np.nan
SoftImpute().complete(v)
실행 (이전과 동일한 코드를, 유일한 차이점은 v
정상화 점이다) 다음과 같은 합리적인 결과를 얻을 :
따라서
array([[ 0.07705556, -0.53449412, -0.20081351],
[ 0.9709198 , -1.19890962, -0.25176222],
[ 0.41839224, -0.11786451, 0.03231515],
[ 0.21374759, -0.66986997, 0.78565414],
[ 0.30004524, 1.28055845, 0.58625942]])
, 당신은 SoftImpute
를 사용하고, 데이터를 정규화하는 것을 잊지 마십시오 (모든 열의 평균을 0으로 만들고 std를 1로 만들면됩니다).