首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特征工程:先求和,然后取对数,还是相反?

问特征工程:先求和,然后取对数,还是相反?
EN

Stack Overflow用户
提问于 2022-09-12 13:22:16
回答 1查看 52关注 0票数 -2

我正在为我的数据做一些功能工程。每个数据点都是一组值,即客户帐户的事务金额。我只需要为每一组创建一个特性,例如,我取最大值、平均值、最小值和其他统计数据。尽管如此,数据是正确的,有一些大的值,因此我想做对数转换。

注意:大的值也很重要,我不想把它们排除为异常值。而且,数据近似于对数正态分布,因此对数变换使它们几乎正常.

这里有一个问题:我是先取数量的对数,然后取和/平均数/等,还是先取和/平均数/等,然后用对数进行变换?

代码语言:javascript
复制
# first option
np.log(amounts).sum()

# second option
np.log(sum(amounts))

我知道,最大值(或中位数和其他分位数)和日志的顺序并不重要,但它与和/均值和其他一些统计数据有关。哪条路是对的?谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2022-09-12 14:15:24

我认为第二个选择更好。这样就减少了离群点的影响。

我认为你必须使用中位数,而不是平均值,最大值,最小值或和。那么,异常值的影响就相当低了。

代码语言:javascript
复制
for an example consider an account which did 100 transactions and  98 of them are between 100 and 500 usd, 1 is higher than 100000 usd and 1 is 1$. There is a high possibility that 100000 or 1 usd to be an outlier according to the other 98 transactions. 

If you take max / min it will select one of the outliers. 
If you take mean / sum the effect of 100000 usd is also high compare to the other 98 transactions.

因此,使用此np.log(median(amounts))

如果数据仍然是正确的倾斜,您必须选择和删除异常值。为此,你可以使用方框、绘图等.

否则,您可以使用不同的函数来创建该功能。看看像这样的东西。在您的情况下,np.log(median(amounts))/np.log(agg_func(amounts)).May将是一个更好的特性。agg_func = {sum,max,均等不包括中位数}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73690042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档