我正在建立一个小应用程序,分析ebay销售商品的历史价格 对于某些关键字/项目,范围非常广泛,因为搜索过于宽泛或完全错误,被项目感染不正确
例如
搜索iphone的价格结果包括手机,但是 还有掺假价格数据的充电器和配件/无关物品...... 所以我有一个范围从充电器5美元到500美元 iphone
所以,鉴于我会尝试改进我的搜索,我想知道是否有数学计算来排除异常值
说我有
$1200
$549
$399
$519
$9
$599
$549
$9
$499
$399
$519
$99
$5
$5
如何让价格范围达到$ 300- $ 600而不是$ 10- $ 800左右......
她的ebelow当前的php即时使用...不确定是否是最好的
function remove_outliers($dataset, $magnitude = 1)
{
$count = count($dataset);
$mean = array_sum($dataset) / $count; // Calculate the mean
$deviation = sqrt(array_sum(array_map("sd_square", $dataset, array_fill(0, $count, $mean))) / $count) * $magnitude; // Calculate standard deviation and times by magnitude
return array_filter($dataset, function ($x) use ($mean, $deviation) {return ($x <= $mean + $deviation && $x >= $mean - $deviation);}); // Return filtered array of values that lie within $mean +- $deviation.
}
function sd_square($x, $mean)
{
return pow($x - $mean, 2);
}
function calculate_median($arr)
{
sort($arr);
$count = count($arr);
$middleval = floor(($count - 1) / 2);
if ($count % 2) {
$median = $arr[$middleval];
} else {
$low = $arr[$middleval];
$high = $arr[$middleval + 1];
$median = (($low + $high) / 2);
}
return $median;
}
$prices = remove_outliers($prices); //$prices is the array with all the prices stored
$trend = calculate_median($prices);
$trend = round(($trend));
$min = round(min($prices));
$max = round(max($prices));