当我记录 transform pandas 列时,我得到 NaN,我应该用 0 替换它们吗?
When i log transform pandas column i get NaNs should i replace these with 0?
我找不到类似的问题。但我有一个 df,其中一些列高度倾斜。然后我计划记录转换这些列然后标准化。但是,当我记录转换时,我得到 NaN,我应该用 0;s 替换它们吗?
log_train[skew_cols]=np.log2(featuresdf[skew_cols]
我得到的错误是:
RuntimeWarning: invalid value encountered in log2
This is separate from the ipykernel package so we can avoid doing imports until
不确定我做错了什么
您不应该替换为 0,因为 np.log(1) 等于 0。因此,在您的日志数据中,1 和 0 都将为 0。
相反,只需在日志之前为您的数据 +1。因此 log2(1) 变为 0,log2(2)(原为 1)仍为 1,然后 log2(3)(原为 2)现在为 1.58)
所以代码是:
log_train[skew_cols]=np.log2(featuresdf[skew_cols]+1)
另一种选择是使用其他可以处理 0 的缩放方法,例如平方根 (np.sqrt)
我找不到类似的问题。但我有一个 df,其中一些列高度倾斜。然后我计划记录转换这些列然后标准化。但是,当我记录转换时,我得到 NaN,我应该用 0;s 替换它们吗?
log_train[skew_cols]=np.log2(featuresdf[skew_cols]
我得到的错误是:
RuntimeWarning: invalid value encountered in log2
This is separate from the ipykernel package so we can avoid doing imports until
不确定我做错了什么
您不应该替换为 0,因为 np.log(1) 等于 0。因此,在您的日志数据中,1 和 0 都将为 0。
相反,只需在日志之前为您的数据 +1。因此 log2(1) 变为 0,log2(2)(原为 1)仍为 1,然后 log2(3)(原为 2)现在为 1.58)
所以代码是:
log_train[skew_cols]=np.log2(featuresdf[skew_cols]+1)
另一种选择是使用其他可以处理 0 的缩放方法,例如平方根 (np.sqrt)