Ich erstelle eine E-Commerce-Site, und ich habe Probleme, einen guten Algorithmus zu entwickeln, um Produkte, die aus der Datenbank gezogen werden, in halbwegs passende Gruppen zu sortieren. Ich habe versucht, einfach den höchsten Preis in 4 zu teilen und jede Gruppe davon abzugrenzen. Ich habe auch Standardabweichungen basierend auf dem Mittelwert versucht. Beides könnte zu Preisspannen führen, in die kein Produkt fallen würde, was keine nützliche Filteroption darstellt.Preisfilter Gruppierungsalgorithmus
Ich versuchte auch Quartile der Produkte zu nehmen, aber mein Problem ist, dass der Preis von $ 1 bis $ 4000 reicht. Die $ 4.000 werden fast nie verkauft und sind weit weniger wichtig, aber sie verfälschen meine Ergebnisse.
Irgendwelche Gedanken? Ich sollte mehr Aufmerksamkeit in Statistiken Klasse bezahlt ...
Update:
Ich landete Methoden ein wenig zu kombinieren. Ich habe die quartile/bucket-Methode verwendet, aber ich habe sie ein wenig gehackt, indem ich bestimmte Bereiche fest geschrieben habe, in denen eine größere Anzahl von Preisgruppen erscheinen würde.
//Price range algorithm
sort($prices);
//Divide the number of prices into four groups
$quartilelength = count($prices)/4;
//Round to the nearest ...
$simplifier = 10;
//Get the total range of the prices
$range = max($prices)-min($prices);
//Assuming we actually are working with multiple prices
if ($range>0)
{
// If there is a decent spread in price, and there are a decent number of prices, give more price groups
if ($range>20 && count($prices) > 10)
{
$priceranges[0] = floor($prices[floor($quartilelength)]/$simplifier)*$simplifier;
}
// Always grab the median price
$priceranges[1] = floor($prices[floor($quartilelength*2)]/$simplifier)*$simplifier;
// If there is a decent spread in price, and there are a decent number of prices, give more price groups
if ($range>20 && count($this->data->prices) > 10)
{
$priceranges[2] = floor($prices[floor($quartilelength*3)]/$simplifier)*$simplifier;
}
}
Es klingt wie wenn Sie die Produktinformationen (die nur Preise enthält) mit den tatsächlichen Verkaufsinformationen anreichern, dann werden Sie in der Lage sein, eine bessere Aufteilung durchzuführen (obwohl ich noch nicht weiß) –