Ich muss 5-Sterne-Bewertungen wie die auf der Amazon-Website berechnen. Ich habe genug gesucht, um den besten Algorithmus zu finden, aber ich kann keine richtige Antwort erhalten. Zum Beispiel, wenn dies die Bewertungen sind
5 star - 252
4 star - 124
3 star - 40
2 star - 29
1 star - 33
Insgesamt 478 Bewertungen
Amazon hat dies mit "4,1 von 5 Sternen" berechnet. Kann mir jemand sagen, wie diese Zahl zustande kommt? Ich bin nicht in der Lage, dies nur durch Durchschnitt zu erreichen.
algorithm
weighted-average
rating-system
user1241438
quelle
quelle
Antworten:
Das ist ein gewichteter Durchschnitt, bei dem Sie jede Bewertung mit der Anzahl der abgegebenen Stimmen abwägen:
quelle
Wenn Sie von Anfang an mit der Berechnung der Gesamtbewertung beginnen, hilft Ihnen diese Formel.
Formel
Beispiel
Angenommen, Sie haben bis jetzt keine Bewertungen, dann lautet die Formel wie folgt: Die Gesamtbewertung lautet bis jetzt "0". Gesamtbewertung "0" und gegebene Bewertung ist "4"
Wenn die Gesamtbewertung "4,11" ist, ist die Gesamtbewertung "478" und die neue Bewertung eines Benutzers ist "2".
dann ist die Formel wie
quelle
Zu evanmiller.org gibt es eine wirklich gute Zusammenfassung zu diesem Thema. Er geht durch und diskutiert die Vor- und Nachteile einiger Ansätze und schlägt eine mathematisch zuverlässige Methode zur Gewichtung und Berechnung von Stimmen vor.
http://evanmiller.org/ranking-items-with-star-ratings.html
quelle
Super hilfreiche Antwort von Blindy, hier ist der PHP-Code, der darauf basiert. Einige mögen nützlich sein. Die Ergebnisse sind 4,11 gemäß OP-Beispiel:
So erstellen Sie das oben genannte $ bewertungsarray
Beispiel für einen Pseudocode, der jedoch funktionieren sollte, um zu erklären, wie das Array $ reviews erstellt wird, wenn Informationen in der Datenbank gespeichert werden, vorausgesetzt, Sie haben eine Tabelle mit dem Namen "Bewertungen" und eine Spalte mit dem Namen "Bewertung". In diesem Fall ist es 1 Join, Sie müssten 4 Joins durchführen, um alle Bewertungen zu erhalten, aber dies sollte Ihnen den Einstieg erleichtern:
Ein anderer Ansatz wurde in den Kommentaren vorgeschlagen
quelle
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
Ja, Sie können sie mitteln:
quelle
ein besserer Weg, dies zu tun,
Beispiel:
Erledigt!
quelle
5
insum_of_max_rating_of_user_count
? Ist es die höchste Bewertung, die ein Benutzer gegeben hat?Dieses Bewertungssystem basiert auf einem gewichteten Durchschnitt oder einem gewichteten Mittelwert . Das heißt, sie verwendeten das Gewicht in Sternen, um einen Dezimalwert zu berechnen, der auf 4,1 rundet. Zum Beispiel:
quelle
Der gewichtete Durchschnitt summiert die Anzahl der Sterne mal das Gewicht und dividiert sie durch die Gesamtzahl der Bewertungen.
quelle
Vielleicht möchten Sie diesen Algorithmus ausprobieren: Berechnen der durchschnittlichen Bewertung auf die richtige Weise mit PHP und MySQL - Sie müssen nicht jeden "Stern" (auch als Bewertungsnote bezeichnet) und die entsprechende Anzahl von Stimmen speichern und müssen dann Tausende von Zeilen aus der Datenbank jedes Mal, wenn Sie ihren Durchschnitt berechnen müssen. (es sei denn, Sie möchten genau anzeigen, wie viele Personen den angegebenen Artikel mit 1, 2, 3, 4 und 5 Sternen bewertet haben)
quelle
Entsprechend Ihrer Frage wird Ihre Lösung so sein.
Summe von (Rate * TotalRatingOfThatRate) / TotalNumberOfReviews
((5 · 252) + (4 · 124) + (3 · 40) + (2 · 29) + (1 · 33)) / (252 + 124 + 40 + 29 + 33)
Ausgabe wird 4.1 sein
quelle
(Gesamtzahl der Sterne / Gesamtzahl der Personen, die * 5 bewerten) * 5
= Antwort
Dezimalstellen in js auf 1 korrigiert.
answer.toFixed (1);
Beispiel die Gesamtbewertung von 5 Personen ist 20 Sterne.
(20/5 * 5) * 5 = 4,0
quelle
in Javascript
quelle
Außerdem versuche ich nur, praktischen und vollständigen Code für alle zu erstellen.
Mein Json Object Array
Bewertungsberechnung
Ich finde es hilfreich.
quelle
mit C #
quelle