解释cnt_dic = collections.defaultdict(float)
时间: 2023-08-31 19:11:25 浏览: 83
`collections.defaultdict(float)` 创建了一个字典,该字典的默认值为 `float()`,也就是浮点数的零值。
这意味着,如果你试图访问该字典中不存在的键,字典会自动创建该键,并将其对应的值初始化为浮点数的零值。这使得在处理计数器或其他需要自动初始化为零的值的情况下很方便。例如,如果你想统计一组元素的出现次数,但你不确定每个元素是否已经在字典中出现过,那么使用 `collections.defaultdict(float)` 就可以避免出现 KeyError 的异常情况。
相关问题
# 用户在多少商家领取并消费优惠券 pivot = pd.pivot_table(data[data['Date'].notnull()&data['Date_received'].notnull()][['User_id', 'Merchant_id']], index=keys1, values='Merchant_id', aggfunc=lambda x:len(set(x))) pivot = pd.DataFrame(pivot).rename(columns={'Merchant_id':prefixs + 'received_consume_differ_merchant'}).reset_index() feature_user = pd.merge(feature_user, pivot, on=keys1, how='left') # 用户对不同商家领取优惠券的核销率(领券消费数/领券数) feature_user[prefixs+'received_consume_merchant_rate'] = feature_user[prefixs + 'received_consume_differ_merchant'].astype('float')/feature_user[prefixs + 'received_differ_merchant'].astype('float') # 用户15天内消费优惠券数量 pivot = pd.pivot_table(data[data['label']==1][['User_id', 'cnt']], index=keys1, values='cnt', aggfunc=len) pivot = pd.DataFrame(pivot).rename(columns={'cnt': prefixs+'15_consume_cnt'}).reset_index() feature_user = pd.merge(feature_user, pivot, on=keys1, how='left') # 用户15天内未消费优惠券数量 pivot = pd.pivot_table(data[data['label']==0][['User_id', 'cnt']], index=keys1, values='cnt', aggfunc=len) pivot = pd.DataFrame(pivot).rename(columns={'cnt': prefixs+'15_not_consume_cnt'}).reset_index() feature_user = pd.merge(feature_user, pivot, on=keys1, how='left')用groupby(函数改写)
# 用户在多少商家领取并消费优惠券
pivot = data[data['Date'].notnull() & data['Date_received'].notnull()][['User_id', 'Merchant_id']].groupby(keys1)['Merchant_id'].nunique().reset_index()
pivot = pivot.rename(columns={'Merchant_id': prefixs + 'received_consume_differ_merchant'})
feature_user = pd.merge(feature_user, pivot, on=keys1, how='left')
# 用户对不同商家领取优惠券的核销率(领券消费数/领券数)
feature_user[prefixs + 'received_consume_merchant_rate'] = feature_user[prefixs + 'received_consume_differ_merchant'].astype('float') / feature_user[prefixs + 'received_differ_merchant'].astype('float')
# 用户15天内消费优惠券数量
pivot = data[data['label'] == 1][['User_id', 'cnt']].groupby(keys1)['cnt'].count().reset_index()
pivot = pivot.rename(columns={'cnt': prefixs+'15_consume_cnt'})
feature_user = pd.merge(feature_user, pivot, on=keys1, how='left')
# 用户15天内未消费优惠券数量
pivot = data[data['label'] == 0][['User_id', 'cnt']].groupby(keys1)['cnt'].count().reset_index()
pivot = pivot.rename(columns={'cnt': prefixs+'15_not_consume_cnt'})
feature_user = pd.merge(feature_user, pivot, on=keys1, how='left')
解释这段代码:int8_t rx = input[0 * point_cnt + a]; int8_t ry = input[1 * point_cnt + a]; int8_t rw = input[2 * point_cnt + a]; int8_t rh = input[3 * point_cnt + a]; float box_x = sigmoid(deqnt_affine_to_f32(rx, zp, scale)) * 2.0 - 0.5; float box_y = sigmoid(deqnt_affine_to_f32(ry, zp, scale)) * 2.0 - 0.5; float box_w = sigmoid(deqnt_affine_to_f32(rw, zp, scale)) * 2.0; float box_h = sigmoid(deqnt_affine_to_f32(rh, zp, scale)) * 2.0;
这段代码用于将输入的检测框坐标进行处理,从 int8_t 类型转换为 float 类型,并进行 sigmoid 反函数的计算。具体解释如下:
1. `rx`、`ry`、`rw`、`rh` 分别表示输入数组 `input` 中的四个元素,通过索引计算得到。
2. 将 `rx`、`ry`、`rw`、`rh` 分别作为参数传入 `deqnt_affine_to_f32` 函数进行逆量化操作,并转换为 float 类型的数值。
3. 对 `box_x` 和 `box_y` 进行 sigmoid 反函数的计算,将结果乘以 2.0 并减去 0.5,将值映射到 (-0.5, 1.5) 的区间内。
4. 对 `box_w` 和 `box_h` 进行 sigmoid 反函数的计算,将结果乘以 2.0,将值映射到 (0, 2.0) 的区间内。
通过这样的处理,可以将输入的 int8_t 类型的检测框坐标转换为 float 类型,并进行逆量化和反函数的计算,得到实际的检测框位置和大小。
阅读全文