gpt4 book ai didi

php - 加权平均数

转载 作者:行者123 更新时间:2023-11-29 04:32:06 25 4
gpt4 key购买 nike

我有一个现有的网络应用程序,允许用户根据项目的难度对其进行“评级”。 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com