首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在-1和1之间缩放

在-1和1之间缩放
EN

Stack Overflow用户
提问于 2020-04-19 05:47:39
回答 2查看 188关注 0票数 0

我有一个数据框架,其中包含文本的正面、负面和中性情绪分析百分比,我正在尝试将这些数据缩放到一个介于-1(最负面)和1(最正面)之间的数字。确定这个分数的最佳公式是什么?

数据帧示例:

数据列(共11列):

代码语言:javascript
复制
 #   Column            Non-Null Count  Dtype
---  ------            --------------  -----  
 0   kind              200 non-null    object
 1   etag              200 non-null    object
 2   id                200 non-null    object
 3   positive          200 non-null    float64
 4   negative          200 non-null    float64
 5   neutral           200 non-null    float64

需要使用适当的公式添加名为score的新字段。示例评分:视频点评下载次数: 49

积极情绪: 39.37210499227998

负面情绪: 18.57951621204323

中性情绪: 42.04837879567679

EN

回答 2

Stack Overflow用户

发布于 2020-04-19 06:40:48

这可以看作是最小-最大缩放。要获得-1,1中的值,可以这样做:

代码语言:javascript
复制
val = (2 *(val - min)/(max-min)) - 1

不用说,val是被标准化的当前值,min是所有值中最小的,max是所有值中最大的。

票数 1
EN

Stack Overflow用户

发布于 2020-04-19 06:34:40

我只会将积极情绪设置为1,负面情绪设置为-1,中性情绪设置为0。然后根据它们的百分比对它们进行缩放,以获得综合分数。

因此,对于上面提到的示例,分数将为

代码语言:javascript
复制
score = positive% * positive_score + neutral % * neutral_score + negative % * negative_score

score = .3937 * 1 + .4205 * 0 + .1858 * -1
score = .2079

直观地说,这是有道理的,因为如果我们都是正分,那么我们的最高分就是1。如果我们都是负分,那么我们的最低分就是-1,中性分就是0。

您可以使用iterrows函数迭代所有行,然后编写一个函数将这些分数合并到一个新列中或更新现有列。

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

https://stackoverflow.com/questions/61296676

复制
相关文章

相似问题

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