- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个现有的网络应用程序,允许用户根据项目的难度对其进行“评级”。 (0 到 15)。目前,我只是取每个用户意见的平均值并直接从 MySQL 呈现平均值。然而,我(和我的用户)越来越清楚,对数字进行加权会更合适。
奇怪的是,几个小时的 Google 搜索并没有得到太多结果。我确实找到了两篇文章,其中显示了基于“贝叶斯过滤器”(我部分理解)的站点范围评级系统。 Here举一个例子:
The formula is:
WR=(V/(V+M)) * R + (M/(V+M)) * C
Where:
* WR=Weighted Rating (The new rating)
* R=Average Rating (arithmetic mean) so far
* V=Number of ratings given
* M=Minimum number of ratings needed
* C=Arithmetic mean rating across the whole site
我喜欢这里的想法,即根据每个项目的总票数来增加权重...但是,因为我网站上的难度级别因项目而异,因此采用“C”(算术平均评级)整个网站)无效。
所以,重申一下我的问题:
使用 MySQL、PHP 或两者,我尝试从算术平均值中获取:
(5 + 5 + 4)/3 = 4.67 (rounded)
...加权平均值:
rating / weight
5 / 2 (since it was given 2 times)
5 / 2
4 / 1
(sum[(rate * weight)])/(sum of weights)
(5 * 2) + (5 * 2) + (4 * 1) / (2 + 2 + 1)
(24)/(5)
= 4.8
最佳答案
这是一个关于如何直接在 MySQL 中执行此操作的简单示例。当然,您需要在子查询上添加一个条件,以仅获取相关项目的投票,而不是所有投票。
mysql> create table votes( vote int);Query OK, 0 rows affected (0.01 sec)mysql> insert into votes values (5),(5),(4);Query OK, 3 row affected (0.00 sec)Records: 3 Duplicates: 0 Warnings: 0mysql> select * from votes;+------+| vote |+------+| 5 || 5 || 4 |+------+3 rows in set (0.00 sec)mysql> select vote,count(vote),vote*count(vote) from votes group by vote;+------+-------------+------------------+| vote | count(vote) | vote*count(vote) |+------+-------------+------------------+| 4 | 1 | 4 || 5 | 4 | 20 |+------+-------------+------------------+2 rows in set (0.00 sec)mysql> select sum(vt)/sum(cnt) FROM (select count(vote)*count(vote) as cnt,vote*count(vote)*count(vote) as vt from votes group by vote) a;+------------------+| sum(vt)/sum(cnt) |+------------------+| 4.8000 |+------------------+1 row in set (0.00 sec)
关于php - 加权平均数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/281398/
我需要更改利率列的总数。我的意思是,比率列中的总数是汇总,我需要加权平均值而不是总数。例如: 数量…………率 450000.......8.75 390000.......8 15000.......
我有一个包含林分编号、树种、高度和体积的数据框: import pandas as pd df=pd.DataFrame.from_items([('STAND_ID',[1,1,2,3,3,3]),
使用 NumPy 的加权平均值,我希望一个具有无限权重的元素支配结果,但它返回 NaN, >>> np.average([1,2], weights=[np.inf, 1]) nan 这是故意设计的吗
我经常在 Python 列表中添加/删除元组,并且对加权平均值(而不是列表本身)感兴趣。由于与其余部分相比,这部分在计算上非常昂贵,因此我想对其进行优化。跟踪加权平均值的最佳方法是什么?我可以想到两种
创建一个 lambda 函数来计算加权平均值并将其发送到字典。 wm = lambda x: np.average(x, weights=df.loc[x.index, 'WEIGHTS']) # D
我是一名优秀的程序员,十分优秀!