Necesito calcular calificaciones de 5 estrellas como la del sitio web de Amazon. He realizado suficientes búsquedas para encontrar cuál es el mejor algoritmo, pero no puedo obtener una respuesta adecuada. Por ejemplo, si estas son las calificaciones
5 star - 252
4 star - 124
3 star - 40
2 star - 29
1 star - 33
Totalmente 478 reseñas
Amazon ha calculado que esto es "4,1 de 5 estrellas". ¿Alguien puede decirme cómo se llega a esta cifra? No puedo obtener esto solo haciendo promedio.
algorithm
weighted-average
rating-system
usuario1241438
fuente
fuente
Respuestas:
Ese es un promedio ponderado, donde pondera cada calificación con el número de votos que obtuvo:
fuente
Si está comenzando a calcular la calificación general desde el principio, esta fórmula lo ayudará.
Fórmula
Ejemplo
suponga que no tiene calificaciones hasta ahora, entonces la fórmula es como, la calificación general es "0" hasta ahora. calificación total "0" y la calificación dada es "4"
Si la calificación general es "4.11", la calificación total es "478" y la nueva calificación otorgada por un usuario es "2"
entonces la fórmula es como
fuente
Hay un gran artículo sobre este tema en evanmiller.org. Repasa y analiza los pros y los contras de algunos enfoques y sugiere una forma matemáticamente confiable de ponderar y calcular los votos.
http://evanmiller.org/ranking-items-with-star-ratings.html
fuente
Respuesta súper útil de Blindy, aquí está el código PHP que se basa en él. Algunos pueden resultar útiles. Los resultados serán 4.11 según el ejemplo de OP:
Cómo construir la matriz de $ ratings anterior
Ejemplo de pseudocódigo, pero que debería funcionar y que explica cómo construir la matriz $ ratings cuando la información se almacena en la base de datos asumiendo que tiene una tabla llamada "ratings" y una columna llamada "rating". En este caso, es 1 unión, necesitaría hacer 4 combinaciones para obtener todas las calificaciones, pero esto debería ayudarlo a comenzar:
otro enfoque sugerido en los comentarios
fuente
SELECT SUM(rating = 1) AS one_s ,SUM(rating = 2) AS two_s ,SUM(rating = 3) as three_s FROM reviews where product_id = 9
Sí, puede promediarlos:
fuente
una mejor manera de hacer esto,
ejemplo:
¡Hecho!
fuente
5
usado ensum_of_max_rating_of_user_count
? ¿Es la calificación más alta otorgada por cualquier usuario?Este sistema de calificación se basa en un promedio ponderado o media ponderada . Es decir, utilizaron el peso en términos de estrellas para calcular un valor decimal que se redondea a 4,1. Por ejemplo:
fuente
Promedio ponderado, sume el número de estrellas por su peso y luego divídalo por el número total de reseñas.
fuente
Es posible que desee verificar este algoritmo: Calcular la calificación promedio de la manera correcta usando PHP y MySQL : no es necesario guardar cada "estrella" (también conocida como calificación de calificación) y su número correspondiente de votos y luego tener que recuperar miles de filas de la base de datos cada vez que necesite calcular su promedio. (a menos que desee mostrar exactamente cuántas personas calificaron el artículo dado con 1, 2, 3, 4 y 5 estrellas)
fuente
Según tu pregunta tu solución será así.
Suma de (Rate * TotalRatingOfThatRate) / TotalNumberOfReviews
((5 * 252) + (4 * 124) + (3 * 40) + (2 * 29) + (1 * 33)) / (252 + 124 + 40 + 29 + 33)
la salida será 4.1
fuente
en Javascript
fuente
(Número total de estrellas / número total de personas que opinan * 5) * 5
= Responder
Decimales fijos en js a 1.
answer.toFixed (1);
Por ejemplo, las reseñas totales de 5 personas son 20 estrellas.
(20/5 * 5) * 5 = 4.0
fuente
Además, solo estoy tratando de hacer un código práctico y completo para todos.
Mi matriz de objetos Json
Cálculo de calificación
Creo que es útil.
fuente
con C #
fuente