TypeError:无法散列的类型:“ numpy.ndarray”

时间:2019-05-20 20:25:41

标签: python numpy typeerror

当我计算信息价值时,我使用“功能”和“目标”。 对于“目标”,我使用值1和0。

但是,步骤产生了问题:

 data['all'] = d1[target].count()

,错误消息为'TypeError:无法散列的类型:'numpy.ndarray'

我该如何解决?

我试图解决这个问题,

data ['all'] = d1 [target] .count()-> data ['all'] = d1.target.apply(str).count()

但是,它没有用。

信息值计算

参数

df:数据。 功能:功能名称。 target:目标名称。 pr:打印标志

返回

iv:特征的信息值 数据:用于iv计算的完整数据 '''

def calc_iv(df,feature,target,pr = False):

d1 = df.groupby(by=feature, as_index=True)
data = pd.DataFrame()

data['all'] = d1[target].count()
data['bad'] = d1[target].sum()
data['share'] = data['all'] / data['all'].sum()
data['bad_rate'] = d1[target].mean()
data['d_g'] = (data['all'] - data['bad']) / (data['all'] - data['bad']).sum()
data['d_b'] = data['bad'] / data['bad'].sum()
data['woe'] = np.log(data['d_g'] / data['d_b'])
data = data.replace({'woe': {np.inf: 0, -np.inf: 0}})
data['iv'] = data['woe'] * (data['d_g'] - data['d_b'])

data.insert(0, 'variable', feature)
data.insert(1, 'value', data.index)
data.index = range(len(data))

iv = data['iv'].sum()

if pr:
    print(data)
    print('IV = %s' % iv)

return iv, data

我希望祸和四。

0 个答案:

没有答案