Joonas' Note

Joonas' Note

Loss 또는 모델 output이 NaN인 경우 확인해볼 것 본문

AI

Loss 또는 모델 output이 NaN인 경우 확인해볼 것

2022. 4. 23. 14:35 joonas

    Numeric Error

    결과값이나 학습 도중에 log(x)를 씌우면 NaN으로 가는 경우. 즉, x가 음수가 나오는 경우가 있는 지?

    log1p 등으로 해결할 수도 있지만 계산 과정에서 음수가 나오지 않는지 수식을 다시 확인한다.

     

    Learning rate

    learning rate가 커서 gradient discent 단계에서 아예 튕겨져 나갔을수도 있다.

     

    데이터셋에 NaN이 섞인 경우

    왜인지 모르겠는데 종종 pandas에서 fillna()가 먹히지 않는 경우가 있었다.

    아래 스크립트로 N/A, NaN 등의 값이 있는 지 확인한다.

    def get_na_df(df):
        na_df = df.isna().sum()
        na_cols = na_df[na_df > 0].index
        return df[df.isna().any(axis=1)][na_cols]

     

    NaN 채우기 전

    채우는 방법은 여러 가지가 있는데, fillna()가 계속 안 먹혀서 ffill(), bfill()을 써서 억지로 채웠다. (좋은 방법은 아니라고 생각)
    ffill(): 빈 데이터 값을 앞쪽의 데이터로 채우고, bfill()은 뒤쪽의 데이터로 채운다.

    df = df.ffill().bfill()

    NaN 채우기 후

     

    참고

     

    Pandas Dataframe: How to fillna object types with one of value in the columns?

    For example,I have a df. data = {'product': ['coca', np.nan, 'pepsi', 'pepsi', 'orange',], 'price': [25, 94, 57, 62, 70,], 'company':[np.nan,'coca-cola',np.nan,np.nan,np.nan,]} df = pd.

    stackoverflow.com

     

     

    06-04. 결측값 변경 (fillna / backfill / bfill / pad / ffill)

    ####DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=Non ...

    wikidocs.net

     

     

    Comments