scorecardpy icon indicating copy to clipboard operation
scorecardpy copied to clipboard

TypeError: unhashable type: 'numpy.ndarray'

Open Jarye0612 opened this issue 1 year ago • 7 comments

执行安装命令pip install scorecardpy后,运行Example代码报错, 出错语句为:

woe binning ------

bins = sc.woebin(dt_s, y="creditability") 报错信息: TypeError: unhashable type: 'numpy.ndarray'

Jarye0612 avatar Aug 31 '22 06:08 Jarye0612

这个例子的代码有问题,dt_s 并没有定义。

ShichenXie avatar Aug 31 '22 12:08 ShichenXie

你好,最近我发现使用sc.woebin会报错,TypeError: unhashable type: 'numpy.ndarray',通过尝试,发现在该函数在环境为python3.7的win/mac/linux能正常运行,环境为python3.8的mac/linux也能运行,但在3.8的windows下报错,原因是scorecardpy.woebin.woebin2_init_bin()函数中下面这段代码中,np.unique(x)会产生一个numpy.ndarray类型,应该是pandas版本的原因,将其改成np.unique(x)[0]可解决该问题,

    init_bin = init_bin.groupby('brkp').agg({
      'variable':lambda x: np.unique(x),
      'bin': lambda x: '%,%'.join(x),
      'good': sum,
      'bad': sum
    }).assign(badprob = lambda x: x['bad']/(x['good']+x['bad']))\
    .reset_index()

HEHEOMG avatar Sep 07 '22 08:09 HEHEOMG

pandas最好使用1.4以下的版本

Roll113 avatar Sep 15 '22 07:09 Roll113

这个例子的代码有问题,dt_s 并没有定义。

你好,使用的是本项目readme提供的Example代码,dt_s定义了 刚接触这块内容,还想问下这个项目实现基于哪些文档资料或者链接,是否方便告知下,以了解有些代码为什么这么写?

Jarye0612 avatar Sep 16 '22 07:09 Jarye0612

你好,最近我发现使用sc.woebin会报错,TypeError: unhashable type: 'numpy.ndarray',通过尝试,发现在该函数在环境为python3.7的win/mac/linux能正常运行,环境为python3.8的mac/linux也能运行,但在3.8的windows下报错,原因是scorecardpy.woebin.woebin2_init_bin()函数中下面这段代码中,np.unique(x)会产生一个numpy.ndarray类型,应该是pandas版本的原因,将其改成np.unique(x)[0]可解决该问题,

    init_bin = init_bin.groupby('brkp').agg({
      'variable':lambda x: np.unique(x),
      'bin': lambda x: '%,%'.join(x),
      'good': sum,
      'bad': sum
    }).assign(badprob = lambda x: x['bad']/(x['good']+x['bad']))\
    .reset_index()

谢谢,改成np.unique(x)[0]这个方法解决了这个问题,但执行readme中的Example代码又报了一个错:ValueError: Number of rows must be a positive integer, not 1.0,通过将scorecardpy-perf.py中 perf_eva 的subplot_nrows,subplot_ncols强制转化为整数解决。解决这两个问题后,在本地环境(本地环境 python3.10.4,pandas1.4.3)运行readme中Example代码运行成功。

Jarye0612 avatar Sep 16 '22 08:09 Jarye0612

pandas最好使用1.4以下的版本

谢谢,由于本地还有其他功能,更改版本可能影响现有功能

Jarye0612 avatar Sep 16 '22 08:09 Jarye0612

pandas 的向前兼容有点问题,可以试试R版本的scorecard,速度更快、也更稳定。python版本的包更新,需要等我处理好手上的其他事情。

ShichenXie avatar Sep 16 '22 13:09 ShichenXie