给定一个字典,字典的键为用户的 id,值为包含用户行为数据的字典,数据包括 clicks(点击次数)、duration(浏览时间)以及 purchases(购买次数)。要求对这三列数据进行最大最小归一化处理,然后使用下列公式计算每个用户的行为得分:
score=log(1 + normalized_clicks) + exp(normalized_duration) + normalized_purchases*(normalized_purchases + 1)/2
其中,log 表示自然对数,exp 表示指数函数。得分最终使用 round 保留至多三位小数。如果所有用户的 clicks、duration 和 purchases 都为零,则返回结果为 NaN 。
假设你正在为一个电子商务网站工作,网站收集了用户的行为数据,包括用户的点击次数(ciicks),浏览时间(duration)以及购买次数(purchases),你的任务是分析这些数据,计算出每个用户的行为分数,以便于网站根据分数提供个性化的产品推荐。
给定一个用户的行为数据,每个用户有三个特征:点击次数(clicks)、浏览时间(duration)以及购买次数(purchases)。我们希望对这三个特征进行归一化处理,然后计算每个用户的行为分数。
计算每个用户的行为分数。行为分数的计算公式为:
score=log(1 + normalized_clicks) + exp(normalized_duration) + normalized_purchases*(normalized_purchases + 1)/2
其中,log 是自然对数,exp 是指数的数。
你需要编写一个 Python 的函数,该函数接受上述格式的输入数据,从终端读取输入,然后计算每个用户的行为分数,并指结果输出到终端.
输入是一个字典,键是用户的 id (字符串),值是一个字典,包含 "clicks"、"duration"、"purchases" 三个键,分别代表用户的点击次数、停留时间、购买次数(均为整数)。
返回一个字典,格式与输入相同,但是输出每个用户的行为得分。
得分使用 round 至多保留三位小数。当所有用户的点击次数浏览时间和购买次数都为零时,期望输出返回 NaN 。
输入
{"user1":{"clicks":10,"duration":3600,"purchases":2},"user2":{"clicks":20,"duration":7200,"purchases":1},"user3":{"clicks":30,"duration":10800,"purchases":0}}
输出
{user1":{"score":2.0},"user2":{"score":2.429},"user3":{"score":3.411}}
说明
读入字典,读入每个用户的 clicks、duration、purchases 三列数据,再对所有用户的三列数据进行最大最小归一化,然后根据所给公式单独计算得分。