Я создаю сайт электронной коммерции, и у меня возникают проблемы при разработке хорошего алгоритма для сортировки продуктов, которые извлекаются из базы данных, на половину соответствующих групп.Я попытался просто разделить самую высокую цену на 4 и основать каждую группу на этом.Я также попробовал стандартные отклонения, основанные на среднем значении.И то, и другое может привести к диапазону цен, в который не попадет ни один продукт, что не является полезным вариантом фильтрации.
Я также пытался взять квартили продуктов, но моя проблема заключается в том, что цена колеблется от 1 до 4000 долларов,4000 долларов почти никогда не продаются, и они гораздо менее важны, но они продолжают искажать мои результаты.
Есть мысли?Я должен был уделить больше внимания в классе статистики ...
Обновление:
Я закончил комбинировать методы немного.Я использовал метод квартиля / ведра, но немного взломал его, жестко закодировав определенные диапазоны, в которых появилось бы большее количество ценовых групп.
//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;
}
}