logo
Loading...

使用KDE分析出現ZeroDivisionError: 0.0 cannot be raised to a negative power錯誤 - Cupoy

針對每個columns屬於int64與float64 , 進行 KDE分析numeric_colum...

ml100-5,d13,kde,amt_annuity

使用KDE分析出現ZeroDivisionError: 0.0 cannot be raised to a negative power錯誤

2019/04/28 下午 01:31
機器學習共學討論版
陳秉涵
觀看數:58
回答數:2
收藏數:0
ml100-5
d13
kde
amt_annuity

針對每個columns屬於int64與float64 , 進行 KDE分析

numeric_columns = list(app_train.columns[list(app_train.dtypes.isin([np.dtype('int64'),np.dtype('float64')]))])

import seaborn as sns 

for col in numeric_columns:     

    plt.figure(figsize = (10, 8))     

    value = app_train[col].values     

    sns.kdeplot(( value - np.mean(value) ) / ( np.std(value) ), label = col)     

    plt.show()

當跑到 'AMT_ANNUITY' 下列出現錯誤, 請問可能的原因 ?


C:\Users\pingh\Anaconda3\lib\site-packages\statsmodels\nonparametric\kde.py:448: RuntimeWarning: invalid value encountered in greater   X = X[np.logical_and(X > clip[0], X < clip[1])] # won't work for two columns. 

C:\Users\pingh\Anaconda3\lib\site-packages\statsmodels\nonparametric\kde.py:448: RuntimeWarning: invalid value encountered in less   X = X[np.logical_and(X > clip[0], X < clip[1])] # won't work for two columns. 

C:\Users\pingh\Anaconda3\lib\site-packages\numpy\core\_methods.py:140: RuntimeWarning: Degrees of freedom <= 0 for slice   keepdims=keepdims) 

C:\Users\pingh\Anaconda3\lib\site-packages\numpy\core\_methods.py:110: RuntimeWarning: invalid value encountered in true_divide   arrmean, rcount, out=arrmean, casting='unsafe', subok=False) C:\Users\pingh\Anaconda3\lib\site-packages\numpy\core\_methods.py:132: RuntimeWarning: invalid value encountered in double_scalars   ret = ret.dtype.type(ret / rcount) 

C:\Users\pingh\Anaconda3\lib\site-packages\statsmodels\nonparametric\bandwidths.py:20: RuntimeWarning: invalid value encountered in minimum   return np.minimum(np.std(X, axis=0, ddof=1), IQR) 

--------------------------------------------------------------------------- ValueError  

 ZeroDivisionError: 0.0 cannot be raised to a negative power

回答列表

  • 2019/04/29 下午 09:17
    Seanyu.TW
    贊同數:0
    不贊同數:0
    留言數:0

    Hi, 應該是因為 np.std(value) 的結果得到了 0 (原因可能出自數列裡有 na 沒有清掉,有的 numpy 版本會報錯,有的可能則會算出 0, 也許是個 bug)

    所以建議你可以在 value = app_train[col].values 之後,加上 value = value[~np.isnan(value)] 再跑看看。

  • 2019/04/29 下午 09:18
    Seanyu.TW
    贊同數:0
    不贊同數:0
    留言數:0

    而 ZeroDivisionError 的實際意義,是除法中的分母為 0。建議你可以參考https://extenshu.com/2017/09/24/python%E5%88%9D%E5%AD%B8%E9%87%8D%E9%BB%9E-05-%E4%BE%8B%E5%A4%96%E8%99%95%E7%90%86/